我正在尝试使用用户数据脚本在启动时使用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服务器。
您是否尝试过在获取文件之前设置10秒的延迟?也许第一次运行命令时IAM凭据尚未到位。
—
EEAA
我在Ubuntu 16.04 LTS上遇到了完全相同的问题。
—
sj26