AWS CLI 第二次运行时抛出“无法找到凭证”

AWS CLI 第二次运行时抛出“无法找到凭证”

我正在尝试使用 AWS CLI (1.8.7) 在启动时使用用户数据脚本将一些文件从 S3 下载到 EC2 实例。此实例具有具有适当权限的 IAM 角色和实例配置文件。有时,CLI 会失败并显示错误“无法找到凭证”。这种情况经常发生(不是每次都发生),但总是一个单独的 S3 命令,它起作用了。以下是脚本的输出:

++ date +%r
03:24:10 AM
++ aws s3 cp s3://non-public-bucket-1/15mb-zip-file.zip ./15mb-zip-file.zip
Completed 1 of 1 part(s) with 1 file(s) remaining^Mdownload: s3://non-public-bucket-1/15mb-zip-file.zip to 15mb-zip-file.zip
++ date +%r
03:24:14 AM
++ unzip 15mb-zip-file.zip

# Snip

++ date +%r
03:26:01 AM
++ curl http://169.254.169.254/latest/meta-data/instance-id
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    10  100    10    0     0  13831      0 --:--:-- --:--:-- --:--:-- 10000
i-12345678++ date +%r
03:26:01 AM
++ aws s3 cp s3://non-public-bucket-2/my-small-text-file.json ./output.json
download failed: s3://non-public-bucket-2/my-small-text-file.json to output.json Unable to locate credentials

++ date +%r
03:26:34 AM

知道这是什么原因造成的吗?

编辑:这是一个 Amazon Linux 服务器。

答案1

我遇到了同样的问题,甚至联系了支持人员,但他们无法提供答案。将凭据导出到环境变量对命令不起作用aws s3 ...。您必须使用aws configure实用程序或创建~/.aws/config如下文件:

[default]
aws_access_key_id=foo
aws_secret_access_key=bar
region=us-west-2

请参考 AWS 文档http://docs.aws.amazon.com/cli/latest/topic/config-vars.html

我发现它不仅无法通过用户数据在 EC2 启动时执行环境导出,而且还无法在完全部署的运行实例上从命令行进行启动后执行。

相关内容