gpt4 book ai didi

amazon-web-services - 尽管 "aws s3 cp"有效,cfn-init 仍无法下载 S3 文件

转载 作者:行者123 更新时间:2023-12-01 12:18:25 33 4
gpt4 key购买 nike

我有一个 CloudFormation 脚本,它使用 AWS::CloudFormation::Init 部分从 S3 存储桶下载文件,该文件因访问被拒绝 (403) 而失败。

我已使用 AWS::IAM::InstanceProfile 将名为 s3access 的 IAM 角色添加到计算机。使用 aws s3 下载文件有效:

[ec2-user@ip-172-31-26-26 ~]$ aws s3 cp s3://my-bucket/test-file 
.download: s3://my-bucket/test-file to ./test-file

但是cfn-init失败:

[ec2-user@ip-172-31-26-26 ~]$ sudo /opt/aws/bin/cfn-init -v --stack test --resource EC2 --region us-east-2Error occurred during build: Failed to retrieve https://s3.us-east-2.amazonaws.com/my-bucket/test-file: HTTP Error 403 : 

我尝试显式设置 IAM 角色,但也失败了:

[ec2-user@ip-172-31-26-26 ~]$ sudo /opt/aws/bin/cfn-init -v --stack test --resource EC2 --region us-east-2 --role=s3accessAccessDenied: 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 仍然失败。

最佳答案

我需要将 AWS::CloudFormation::Authentication 添加到 EC2InstanceMetadata。详情见:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-authentication.html#cfn-cloudformation-authentication-rolename

例如:

EC2Instance:
Type: 'AWS::EC2::Instance'
Metadata:
AWS::CloudFormation::Authentication:
rolebased:
type: S3
roleName: !Ref EC2InstanceIAMRole
buckets:
- !Ref TemplateBucket
...

角色有权访问相关的TemplateBucket

该角色还分配给 EC2 实例

有关该角色的一些详细信息如下:

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html

在添加此内容之前,我可以通过 aws cli 从 s3 下载文件,但 cfn-init 无法正常工作并出现以下错误:

Error occurred during build: Failed to retrieve https://s3.amazonaws.com/FILE: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>ID</RequestId><HostId>ID</HostId></Error>

关于amazon-web-services - 尽管 "aws s3 cp"有效,cfn-init 仍无法下载 S3 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46380904/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com