在CloudFormation中将多个IAM角色与AWS::IAM::InstanceProfile关联

5
我有一个CloudFormation模板,可以启动自动扩展组。它有以下实例配置文件和关联的角色和策略。是否有办法将现有的IAM角色添加到InstanceProfile中?AWS文档似乎说不行:
"目前,最多只能向实例配置文件分配一个角色。"
基本上,我想在模板中保留下面的角色和策略创建,以便策略可以引用模板创建的SQS资源(即“Resource”:[{"Fn :: GetAtt": ["LifecycleSQS",“Arn”]}]),同时还分配一个预先存在的角色,该角色将为实例上的应用程序授予权限。我不想在CloudFormation模板中创建这些特定于应用程序的权限。
"InstanceRole":{
     "Type":"AWS::IAM::Role",
     "Properties":{
        "AssumeRolePolicyDocument":{
           "Statement":[
              {
                 "Effect":"Allow",
                 "Principal":{
                    "Service":[
                       "autoscaling.amazonaws.com"
                    ]
                 },
                 "Action":[
                    "sts:AssumeRole"
                 ]
              }
           ]
        },
        "Path":"/"
     }
},
"RolePolicies":{
     "Type":"AWS::IAM::Policy",
     "Properties":{
        "PolicyName": "MyRolePolicy,
        "PolicyDocument":{
           "Statement":[
              {
                  "Effect": "Allow",
                  "Resource": [{ "Fn::GetAtt" : ["LifecycleSQS", "Arn"] }],
                  "Action": [
                        "sqs:SendMessage",
                        "sqs:GetQueueUrl",
                        "sns:Publish"
                  ]
              }
           ]
        },
        "Roles":[
           {
              "Ref":"InstanceRole"
           }
        ]
     }
},
"InstanceProfile":{
     "Type":"AWS::IAM::InstanceProfile",
     "Properties":{
        "Path":"/",
        "Roles":[
           {
              "Ref":"InstanceRole"
           }
        ]
     }
}
1个回答

9

是的,实例配置文件中的角色数量限制为1。您无法规避此限制。

我发现,如果您创建离散策略并将其应用于给定的实例角色,则这种限制就不那么重要了。

例如,我有一个名为ApplicationServer的实例角色。然后,我可以创建并附加以下策略到该角色:CodeDeployInstance(允许该实例接受代码部署),DomainJoinInstance(允许该实例加入域),以及AppCredentialsInstance(允许该实例通过安全的S3存储桶访问应用凭据)。您可以以这种方式将最多10个策略附加到一个角色上。

您可以在CF模板之外创建这些策略,并根据需要将它们应用于实例角色/实例配置文件。

我以这种方式定义所有我的实例:特定的角色名称,然后根据需要添加/删除/组合自己预定义的策略。

这些更改立即被正在运行的实例识别,无需重新启动或重新启动。

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接