【问题标题】:Calling AWS cli from user-data file从用户数据文件调用 AWS cli
【发布时间】:2016-04-02 12:34:19
【问题描述】:

从 AMI 映像启动 EC2 实例时,我有一个用户数据脚本文件。 该脚本使用 AWS,但我得到“aws:找不到命令”。 AWS-CLI 是作为 AMI 的一部分安装的(我可以在实例启动后使用它)但由于某种原因脚本找不到它。

我错过了什么吗?用户数据脚本在加载图像之前运行的任何机会(我很难相信)? 也许此时没有设置路径环境变量?

谢谢,

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

    用户数据脚本在加载图像之前运行的任何机会

    不,当然不是。它是该映像上运行脚本的服务。

    可能路径环境变量此时没有设置

    这很可能是问题所在。脚本以root 而不是ec2-user 运行,并且无权访问您可能在ec2-user 帐户中配置的路径。如果您尝试指定/usr/bin/aws 而不仅仅是aws,会发生什么?

    【讨论】:

    • 您还需要为 root 用户配置 aws cli,因为用户数据脚本由 root 而不是任何其他用户执行。
    • @JSelecta 如果通过配置您指的是 AWS API 密钥和秘密密钥,那么您应该使用 EC2 IAM 角色。
    • 这是否取代了为 root 用户配置 aws cli 的需要?很高兴知道这很有意义。我会暂时测试一下。谢谢大佬!
    • @JSelecta 是的,您不会直接在服务器上配置密钥。您可能仍需要配置默认输出格式和默认 AWS 区域等内容,但也可以直接在您执行的 cli 命令中指定。过去,当在附加了 IAM 配置文件的 EC2 上运行时,我可以在不运行 config 的情况下使用 cli 工具。
    【解决方案2】:

    您可以安装 aws cli 并使用您的凭据设置环境变量。例如,在用户数据脚本中,您可以编写如下内容:

    #!/bin/bash
    apt-get install -y awscli
    export AWS_ACCESS_KEY_ID=your_access_key_id_here
    export AWS_SECRET_ACCESS_KEY=your_secret_access_key_here
    aws cp s3://test-bucket/something /local/directory/
    

    如果您使用的是基于 CentOS 的 AMI,那么您必须将 apt-get 行更改为 yum,并且该软件包称为 aws-cli 而不是 awscli

    【讨论】:

    • 感谢您的帮助。
    • 从安全的角度来看,这太可怕了,因为任何具有读取权限的人都可以检查用户数据并可能使用这些凭据。
    • 请不要使用这种方法
    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 2016-02-04
    • 2018-08-07
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多