如何在CloudFormation中获取AWS ServiceLinkedRole ARN

时间:2019-11-18 14:33:18

标签: amazon-cloudformation

我正在尝试使用ServiceLinkedRole for Config为AWS Config服务创建CloudFormation堆栈,但是我不知道如何在同一CloudFormation模板中引用创建的AWS Config角色的ARN,这是配置代码段:

  AWSServiceLinkedRoleForConfig:
    Type: 'AWS::IAM::ServiceLinkedRole'
    Properties:
      AWSServiceName: config.amazonaws.com
      Description: AWS Config Service Linked role
  ConfigRecorder: 
    Type: AWS::Config::ConfigurationRecorder
    Properties: 
      Name: AWSConfigForTest
      RecordingGroup: 
        ResourceTypes: 
          - "AWS::EC2::SecurityGroup"
      RoleARN: ??

我尝试了以下格式:

RoleARN: !Ref "AWSServiceLinkedRoleForConfig"
  

传递给'AWSServiceRoleForConfig'的角色无效。 (服务:   AmazonConfig;状态码:400;错误代码:InvalidRoleException;   )

RoleARN: !Ref "AWSServiceLinkedRoleForConfig.Arn"
  

模板格式错误:无法解析的资源依赖性   [AWSServiceLinkedRoleForConfig.Arn]   模板

根据下面的摘要,没有ServiceLinkedRole资源的输出ARN: https://theburningmonk.com/cloudformation-ref-and-getatt-cheatsheet/

在这种情况下,如何在CloudFormation模板文件中为该角色引用ARN?

2 个答案:

答案 0 :(得分:0)

我刚从AWS那里得到答案:

  

无法直接引用服务链接角色的ARN   在CloudFormation中创建

可用的解决方法:

RoleARN:     !加入       -''       --'arn:aws:iam ::'         -!Ref'AWS :: AccountId'         -':role / aws-service-role / config.amazonaws.com / AWSServiceRoleForConfig'

答案 1 :(得分:0)

在您的 CloudFormation Resources 中,创建角色并在 Properties 部分中,为其指定一个 RoleName

  MyRoleForCodePipeline:
    Type: AWS::IAM::Role
    Properties:
      RoleName: myrolename
      ...

然后创建管道并使用您的帐户 ID(例如 123456780)和上面的角色名称手动构建 ARN:

  MyCodePipeline:
    Type:  AWS::CodePipeline::Pipeline
    Properties:
      Name: mycodepipelinename
      RoleArn: 'arn:aws:iam::123456780:role/myrolename'
      ...

相关问题