我正在尝试使用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?
答案 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'
...