当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在CloudFormation中将多个IAM角色与AWS::IAM::InstanceProfile相关联》经验,为你挑选了1个好方法。

我有一个CloudFormation模板,它会调出一个自动缩放组.它具有以下实例配置文件以及相关的角色和策略.有没有办法将现有的IAM角色添加到InstanceProfile?AWS文档似乎拒绝:

目前,最多可以为实例配置文件分配一个角色.

基本上我想在模板中保留以下角色和策略创建,以便策略可以引用SQS资源(即"资源":[{"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"
           }
        ]
     }
}

Rodrigo M.. 9

这是正确的,实例配置文件中的角色限制为1.你无法解决这个问题.

我发现,如果您创建随后应用于给定实例角色的离散策略,则不会受到限制.

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

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

我以这种方式定义所有实例:一个特定的角色名称,然后根据需要对任何角色添加/减去/组合我自己的预定义策略.

运行实例会立即识别这些更改,需要重新启动或重新启动.

我希望有所帮助.



1> Rodrigo M..:

这是正确的,实例配置文件中的角色限制为1.你无法解决这个问题.

我发现,如果您创建随后应用于给定实例角色的离散策略,则不会受到限制.

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

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

我以这种方式定义所有实例:一个特定的角色名称,然后根据需要对任何角色添加/减去/组合我自己的预定义策略.

运行实例会立即识别这些更改,需要重新启动或重新启动.

我希望有所帮助.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有