【发布时间】:2019-10-21 20:35:16
【问题描述】:
大家好!
代码:(entrypoint.sh)
printenv
CREDENTIALS=$(curl -s "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI")
ACCESS_KEY_ID=$(echo "$CREDENTIALS" | jq .AccessKeyId)
SECRET_ACCESS_KEY=$(echo "$CREDENTIALS" | jq .SecretAccessKey)
TOKEN=$(echo "$CREDENTIALS" | jq .Token)
export AWS_ACCESS_KEY_ID=$ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$SECRET_ACCESS_KEY
export AWS_SESSION_TOKEN=$TOKEN
aws s3 cp s3://BUCKET/file.txt /PATH/file.txt
问题:
我正在尝试将 AWS S3 文件提取到 ECS,灵感来自:
AWS Documentation
(但我直接从 S3 获取,而不是通过 VPC 端点)
我已配置存储桶策略和角色策略(在 taskDefinition 中作为 taskRoleArn 和 executionRoleArn 传递)
在本地,当我使用 aws cli 获取并传递临时凭据(我在入口点脚本中使用 printenv 命令登录 ECS)时,一切正常。我可以在我的电脑上保存文件。
在 ECS 上出现错误:
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
我在哪里可以找到解决方案?有人遇到过类似问题吗?
【问题讨论】:
-
如果您在创建 ECS 集群时已将存储桶策略附加到 instanceRole,则无需设置临时凭证。
标签: amazon-web-services docker amazon-s3 amazon-ecs