小编Kat*_*ang的帖子

无法从 Cloudformation 中的 EC2 实例访问 S3 -- 调用 HeadObject 操作时发生客户端错误 (301):永久移动

我正在尝试通过实例的 userdata 属性将文件从 S3 存储桶下载到实例。但是,我收到错误:

调用 HeadObject 操作时发生客户端错误 (301):永久移动。

我使用 IAM 角色、托管策略和实例配置文件来为实例提供对 s3 存储桶的访问权限:

    "Role": {
        "Type": "AWS::IAM::Role",
        "Properties": {
            "AssumeRolePolicyDocument": {
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": [
                                "ec2.amazonaws.com",
                                "s3.amazonaws.com"
                            ]
                        },
                        "Action": [
                            "sts:AssumeRole"
                        ]
                    }
                ]
            },
            "Path": "/",
            "ManagedPolicyArns": [
                {
                    "Ref": "ManagedPolicy"
                }
            ]
        },
        "Metadata": {
            "AWS::CloudFormation::Designer": {
                "id": "069d4411-2718-400f-98dd-529bb95fd531"
            }
        }
    },
    "RolePolicy": {
        "Type": "AWS::IAM::Policy",
        "Properties": {
            "PolicyName": "S3Download",
            "PolicyDocument": {
                "Statement": [
                    {
                        "Action": [
                            "s3:*"
                        ],
                        "Effect": "Allow", …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-ec2 http-error aws-cloudformation amazon-iam

3
推荐指数
1
解决办法
2484
查看次数

CloudFormation 模板文件——如何使用字符串中间的 ref 函数来引用参数

如何取消引用字符串中间的参数?

我有一个 JSON Cloudformation 模板文件,它采用 S3 存储桶名称(“BucketName”)的参数,以在授予该存储桶权限的 IAM 策略中使用——策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetObject",
                "s3:ListObject"
            ],
            "Resource": [
                "arn:aws:s3:::${Ref:BucketName}/*"
            ],
            "Effect": "Allow"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

"arn:aws:s3:::${Ref:BucketName}/" 不起作用;

"arn:aws:s3:::", {"Ref": "BucketName"}, "/" 也不起作用,因为它将其读取为字符串列表而不是单个字符串。

我知道我可以将整个 arn 作为参数,而不仅仅是存储桶名称,但是我如何能够在字符串中引用 BucketName?

谢谢!

formatting json amazon-s3 amazon-web-services aws-cloudformation

2
推荐指数
1
解决办法
3086
查看次数