AWS-ECS在入口点脚本中加载S3文件

问题描述 投票:0回答:1

大家好!

代码:(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)时,一切正常。我可以在PC上保存文件。在ECS上我有错误:

fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

我在哪里可以找到解决方案?有人有类似问题吗?

amazon-web-services docker amazon-s3 amazon-ecs
1个回答
0
投票

第一件事,如果您在AWS内部工作,强烈建议使用AWS ECS service roleECS task role或EC2角色。您确实需要从元数据中获取凭据。

© www.soinside.com 2019 - 2024. All rights reserved.