创建策略云组建

时间:2017-04-03 13:57:44

标签: aws-sdk amazon-cloudformation

有没有人知道如何使用云形成创建策略,然后有另一个云形成模板将该策略分配给角色?

我正在查看http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html并且我没有回答我的问题。

2 个答案:

答案 0 :(得分:0)

策略和角色之间的链接在AWS::IAM::Policy资源中声明。因此,例如,您可以使用一个堆栈export角色,另一个堆栈使用内部函数Fn::ImportValue导入它,并将其链接到策略资源。

导出堆栈:

Resources:
  myRole:
    Type: "AWS::IAM::Role"
      Properties:
        ... 
Outputs:
  exportedRole:
    Value: !Ref myRole
    Export:
      Name: "myExportedRole"

导入堆栈:

Resources:
  myPolicy:
    Type: "AWS::IAM::Policy"
    Properties:
      Roles:
        - !ImportValue myExportedRole
      ...

答案 1 :(得分:0)

您可以同时创建角色和策略。这是一个示例:

    "LambdaFunctionRole": {
        "Type": "AWS::IAM::Role",
        "Properties": {
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": [
                                "lambda.amazonaws.com"
                            ]
                        },
                        "Action": [
                            "sts:AssumeRole"
                        ]
                    }
                ]
            },
            "Path": "/",
            "Policies": [
                {
                    "PolicyName": "AlexaSkillCloudWatchLogsAccess",
                    "PolicyDocument": {
                        "Version": "2012-10-17",
                        "Statement": [
                            {
                                "Sid": "AllowLogging",
                                "Effect": "Allow",
                                "Action": [
                                    "logs:CreateLogGroup",
                                    "logs:CreateLogStream",
                                    "logs:PutLogEvents"
                                ],
                                "Resource": [
                                    "*"
                                ]
                            }
                        ]
                    }
                }
            ]
        }
    }

此资源为Lambda函数创建一个包含策略的策略。然后,您可以将角色的ARN与“ Fn :: GetAtt”包含在同一模板的lambda函数中