【发布时间】:2018-09-10 18:08:05
【问题描述】:
我创建了一个嵌套的 IAM 堆栈,它由 3 个模板组成: - iam 政策 - iam-角色 -iam 用户/组
masterstack 模板如下所示:
Resources:
Policies:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://s3.amazonaws.com/xxx/iam/iam_policies.yaml
UserGroups:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://s3.amazonaws.com/xxx/iam/iam_user_groups.yaml
Roles:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://s3.amazonaws.com/xxx/iam/iam_roles.yaml
政策 ARN 通过 Outputs 部分导出,例如:
Outputs:
StackName:
Description: Name of the Stack
Value: !Ref AWS::StackName
CodeBuildServiceRolePolicy:
Description: ARN of the managed policy
Value: !Ref CodeBuildServiceRolePolicy
在角色模板中,策略 ARN 的导入方式类似于
CodeBuildRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub ${EnvironmentName}-CodeBuildRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Action:
- 'sts:AssumeRole'
Effect: Allow
Principal:
Service:
- codebuild.amazonaws.com
Path: /
ManagedPolicyArns:
- !GetAtt
- Policies
- Outputs.CodeBuildServiceRolePolicy
但是当我尝试创建堆栈时,它会说无法创建角色堆栈,因为
Template error: instance of Fn::GetAtt references undefined resource Policies
如何首先强制创建策略,以便第二个和第三个模板可以使用这些策略来创建角色和用户/组?还是其他地方的问题?
感谢
【问题讨论】: