我创建了一个嵌套的IAM堆栈,该堆栈由3个模板组成: -IAM政策 -iam-roles -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:
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
如何首先强制创建策略,以便第二个模板和第三个模板可以使用策略创建角色和用户/组?还是其他地方?
merci A
答案 0 :(得分:2)
您的问题
我该如何先强制创建策略,然后再强制 第三个模板可以使用策略来创建角色和用户/组吗? 还是其他地方?
您可以使用“ DependsOn”属性。它会自动确定模板中的哪些资源可以并行化,哪些资源具有依赖关系,需要先完成其他操作。您可以使用DependsOn显式指定依赖关系,该依赖关系将覆盖默认的并行性,并指示CloudFormation以指定的顺序对这些资源进行操作。
您的第二个和第三个模板DependsOn策略
更多详细信息:DependsOn
答案 1 :(得分:-1)