Amazon cloudformation 由于未定义的资源策略,IAM嵌套堆栈无法完成
我创建了一个嵌套的IAM堆栈,它包含3个模板: -iam政策 -iam角色 -iam用户/组 masterstack模板如下所示:Amazon cloudformation 由于未定义的资源策略,IAM嵌套堆栈无法完成,amazon-cloudformation,Amazon Cloudformation,我创建了一个嵌套的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::CloudForm
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您无法访问输出的原因是,您没有为其他堆栈公开输出 使用要导出的数据更新输出。参考-相同的 然后,在依赖堆栈中使用函数Fn::ImportValue来使用所需的数据。参考-相同的 希望这有帮助 你的问题 我怎样才能强制创建第一个、第二个和第三个策略 第三个模板可以使用策略创建角色和用户/组吗? 还是问题在别处 您可以使用“DependsOn”属性。它会自动确定模板中哪些资源可以并行化,哪些资源具有需要其他操作首先完成的依赖项。您可以使用DependsOn显式指定依赖项,这将覆盖默认并行性,并指示CloudFormation按指定顺序对这些资源进行操作 在您的情况下,第二个和第三个模板依赖于策略
更多细节:merci,但我认为没有必要使用导出/导入值,因为它是一个嵌套堆栈。当然,如果我使用导出/导入交叉引用这些值,它就会起作用。但我希望它们在一个嵌套的堆栈中。