代码:(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
我在哪里可以找到解决方案?有人有类似问题吗?
第一件事,如果您在AWS内部工作,强烈建议使用AWS ECS service role或ECS task role或EC2角色。您确实需要从元数据中获取凭据。