【问题标题】:How do I use conditions in cloudformation properties?如何在 cloudformation 属性中使用条件?
【发布时间】:2021-12-16 18:39:45
【问题描述】:

我正在尝试创建一个创建角色的 cloudformation 模板,并且我想在角色中包含托管策略,但前提是条件为真,但 cloudformation 不允许执行以下操作:

"MyRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "ManagedPolicyArns": [
          "Condition": "MyCondition":
          {
            "Ref": "EMRFullAccessManagedPolicy"
          }
        ],
        "RoleName": {
                   myRole
                    }
             }
        }

有没有办法以这种方式在属性中使用条件?

【问题讨论】:

标签: properties amazon-cloudformation


【解决方案1】:

你可以使用Fn::If:

"ManagedPolicyArns":      
          {"Fn::If" : [
            "MyCondition",
            ["Ref": "EMRFullAccessManagedPolicy"],
            []
          ]}

"ManagedPolicyArns":
  { "Fn::If": 
   ["AddSageMakerAccess",    
     ["arn:aws:iam::aws:policy/AmazonSageMakerFullAccess" ],
      { "Fn::If": 
         ["AddEMRFullAccessPolicy", 
         ["arn:aws:iam::aws:policy/AmazonEMRFullAccessPolicy_v2" ], 
         [] 
     ] 
     } 
   ] 
   }, 
   

如果 AddSageMakerAccess 和 AddEMRFullAccessPolicy 互斥,上述方法将起作用。

【讨论】:

  • 我试图做:“ManagedPolicyArns”:[{“Fn::If”:[“AddSageMakerAccess”,[“arn:aws:iam::aws:policy/AmazonSageMakerFullAccess”],[] ] }, { "Fn::If": ["AddEMRFullAccessPolicy", ["arn:aws:iam::aws:policy/AmazonEMRFullAccessPolicy_v2" ], [] ] } ],它给了我:"属性 ManagedPolicyArns 的值必须属于“字符串列表”类型
  • 你需要链接你的 ifs。请参阅我编辑的答案。
  • 现在可以使用了,谢谢!!
猜你喜欢
  • 2022-01-26
  • 2019-09-22
  • 2023-03-03
  • 2020-03-30
  • 2021-03-15
  • 2021-05-01
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
相关资源
最近更新 更多