Не удается завершить вложенный стек IAM из-за неопределенных политик ресурсов - PullRequest
0 голосов
/ 09 сентября 2018

Я создал вложенный стек IAM, который состоит из 3 шаблонов: - iam-полисы - роли -iam пользователь / группы

шаблон мастер-стека выглядит так:

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

Как я могу сначала принудительно создать политики, чтобы второй и третий шаблоны могли использовать политики для создания ролей и пользователей / групп? Или проблема в другом месте?

merci A

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Ваш вопрос,

Как я могу сначала принудительно создать политики, чтобы второй и третий шаблоны могли использовать политики для создания ролей и пользователей / групп?Или проблема в другом месте?

Вы можете использовать атрибут "DependsOn".Он автоматически определяет, какие ресурсы в шаблоне можно распараллелить, и , которые имеют зависимости, которые требуют других операций для завершения сначала .Вы можете использовать DependsOn для явного указания зависимостей, который переопределяет параллелизм по умолчанию и предписывает CloudFormation работать с этими ресурсами в указанном порядке.

В вашем случае второй и третий шаблон DependsOn Policies

Подробнее: Зависит от

0 голосов
/ 10 сентября 2018

Причина, по которой вы не можете получить доступ к выходам, заключается в том, что вы не открыли выходы для других стеков.

Обновите ваши выходы данными, которые вы хотите экспортировать. Ссылка - Выходы для того же.

Затем используйте функцию Fn :: ImportValue в зависимых стеках, чтобы получить необходимые данные. Ref - ImportValue для того же.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...