【发布时间】:2017-09-15 02:41:11
【问题描述】:
我有一堆云形成模板,其中包含用于警报的条件资源。只有产品堆栈才能创建这些资源。我需要我在堆栈中创建的 IAM 策略来反映这些条件资源。到目前为止,我还没有找到一种方法来做到这一点。我曾尝试在单独的政策文档中使用 Condition:,但它似乎忽略了它。
【问题讨论】:
我有一堆云形成模板,其中包含用于警报的条件资源。只有产品堆栈才能创建这些资源。我需要我在堆栈中创建的 IAM 策略来反映这些条件资源。到目前为止,我还没有找到一种方法来做到这一点。我曾尝试在单独的政策文档中使用 Condition:,但它似乎忽略了它。
【问题讨论】:
我会检查 Fn::If 内在函数。对于这样的东西真的很有用。例如,如果我有一个 ShouldGenerateBucket 条件和两个存储桶,constant-bucket 将始终被创建,conditional-bucket 可能会被创建,我可以在我的策略中使用它:
Type: "AWS::IAM::Policy"
Properties:
PolicyName: "RoleAccess"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action: "s3:*""
Resource:
- arn:aws:s3:::constant-bucket
- !If
- ShouldGenerateBucket
- arn:aws:s3:::conditional-bucket
- !Ref AWS::NoValue
如果ShouldGenerateBucket 是true,这将添加额外的资源资源,否则忽略它。
【讨论】:
us-east-1,它似乎有一个increased error rate at the moment,它对 CloudFormation 有相当大的依赖