首页 > 解决方案 > 如何修改存储桶属性

问题描述

我正在尝试编写一个使用内部函数 !GetAtt 从存储桶获取属性的存储桶策略,但我不确定如何为多个存储桶编写它。

对于不使用内在函数的单桶,它类似于;

            Effect: "Allow"
            Action: "s3:*"
            Resource: [
              "arn:aws:s3:::ExampleBucketName",
              "arn:aws:s3:::ExampleBucketName/*"
              ]

我正在尝试使用多个存储桶的内在函数来执行此操作,但对于子目录部分我没有正确处理。如何使用 !GetAtt 进入目录 /*?

我的代码如下所示;

            Effect: "Allow"
            Action: "s3:*"
            Resource: [
              !GetAtt "ExampleBucketOne.Arn",
              !GetAtt "ExampleBucketOne.Arn"/"*",
              !GetAtt "ExampleBucketTwo.Arn",
              !GetAtt "ExampleBucketTwo.Arn"/"*"
               ]

我知道资源部分中以 /* 结尾的备用第二行是错误的,这就是我寻求帮助的原因。正确的方法是什么?

标签: amazon-cloudformation

解决方案


另一种选择是!Sub更容易使用。

        Effect: "Allow"
        Action: "s3:*"
        Resource:
          - !Sub ${ExampleBucketOne.Arn}
          - !Sub ${ExampleBucketOne.Arn}/*
          - !Sub ${ExampleBucketTwo.Arn}
          - !Sub ${ExampleBucketTwo.Arn}/*

推荐阅读