【发布时间】:2016-04-02 12:34:19
【问题描述】:
从 AMI 映像启动 EC2 实例时,我有一个用户数据脚本文件。 该脚本使用 AWS,但我得到“aws:找不到命令”。 AWS-CLI 是作为 AMI 的一部分安装的(我可以在实例启动后使用它)但由于某种原因脚本找不到它。
我错过了什么吗?用户数据脚本在加载图像之前运行的任何机会(我很难相信)? 也许此时没有设置路径环境变量?
谢谢,
【问题讨论】:
从 AMI 映像启动 EC2 实例时,我有一个用户数据脚本文件。 该脚本使用 AWS,但我得到“aws:找不到命令”。 AWS-CLI 是作为 AMI 的一部分安装的(我可以在实例启动后使用它)但由于某种原因脚本找不到它。
我错过了什么吗?用户数据脚本在加载图像之前运行的任何机会(我很难相信)? 也许此时没有设置路径环境变量?
谢谢,
【问题讨论】:
用户数据脚本在加载图像之前运行的任何机会
不,当然不是。它是该映像上运行脚本的服务。
可能路径环境变量此时没有设置
这很可能是问题所在。脚本以root 而不是ec2-user 运行,并且无权访问您可能在ec2-user 帐户中配置的路径。如果您尝试指定/usr/bin/aws 而不仅仅是aws,会发生什么?
【讨论】:
config 的情况下使用 cli 工具。
您可以安装 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。
【讨论】: