0
我有一个CloudFormation脚本,它使用AWS::CloudFormation::Init
部分从S3拒绝访问(403)失败的S3桶中下载文件。即使“aws s3 cp”能够正常工作,cfn-init仍然无法下载S3文件
我已经使用AWS::IAM::InstanceProfile
向机器添加了名为s3access
的IAM角色。与aws s3
作品下载文件:
[[email protected] ~]$ aws s3 cp s3://my-bucket/test-file
.download: s3://my-bucket/test-file to ./test-file
但cfn-init
失败:
[[email protected] ~]$ sudo /opt/aws/bin/cfn-init -v --stack test --resource EC2 --region us-east-2 Error occurred during build: Failed to retrieve https://s3.us-east-2.amazonaws.com/my-bucket/test-file: HTTP Error 403 :
我想明确地设置IAM作用,但仍失败:
[[email protected] ~]$ sudo /opt/aws/bin/cfn-init -v --stack test --resource EC2 --region us-east-2 --role=s3access AccessDenied: User: arn:aws:sts::196375698259:assumed-role/s3access/i-044499612c92b50f5 is not authorized to perform: cloudformation:DescribeStackResource on resource: arn:aws:cloudformation:us-east-2:196375698259:stack/test/*
我想使用的aws s3 cp s3://my-bucket/test-file ./
直接来自用户数据,但我想知道为什么AWS::CloudFormation::Init
未能承担分配给EC2实例的角色。
我发现只有一个类似的问题 - How can I access protected S3 files in a CFN script?,但是解决方案是应用IAM角色,我已经完成并且cfn-init
仍然失败。
如果您向我们展示您的模板会更容易 – Raniz
我发现使用cfn-init几乎没有什么优势。您可以轻松地将您的aws s3复制逻辑放入CloudFormation的userData中,并为您的EC2实例提供与s3读取权限关联的角色/策略权限,这样可以很好地工作。 –