Cloudformation LaunchTemplate, ссылающийся на IamInstanceProfile, не может быть создан - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь создать LaunchTemplate , который ссылается на IamInstanceProfile , в моем стеке Cloudformation.Вот код, я пропустил несущественные части:

...
            Resources:
              ServerLaunchTemplate:
                Type: 'AWS::EC2::LaunchTemplate'
                Properties:
                  LaunchTemplateData:
                    InstanceType: !Ref InstanceType
                    SecurityGroups:
                      - !Ref SecGroup
                    IamInstanceProfile: !Ref ServerProfile
                    UserData:
        ...
              ServerProfile:
                Type: 'AWS::IAM::InstanceProfile'
                Properties:
                  Path: /
                  Roles:
                    - !Ref ServerRole
...

ServerProfile создается успешно.Однако, когда процесс создания стека достигает этапа создания ServerLaunchTemplate , происходит сбой с ошибкой:

Property validation failure: [Value of property {/LaunchTemplateData/IamInstanceProfile} does not match type {Object}]

Если я опускаю ссылку на IamInstanceProfile , LaunchTemplate успешно создан.

В соответствии с документацией и некоторыми примерами это должно работать ... Исходя из ошибки, я понимаю, что InstanceType * поле LaunchTemplate должно ссылаться на объект, но "! Ref InstanceType " возвращает идентификатор ресурса.

Как я могу это исправить?Как я могу получить объект, который предположительно требуется для поля " / LaunchTemplateData / IamInstanceProfile "?

Спасибо

1 Ответ

0 голосов
/ 21 января 2019

Легко пропустить в документах: для IamInstanceProfile требуется объект облачной информации IamInstanceProfile, для которого Арн ссылочного IamInstanceProfile является его свойством.

См. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-iaminstanceprofile и https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-iaminstanceprofile.html.

Это должно работать:

  PortalLaunchTemplate:
    Type: 'AWS::EC2::LaunchTemplate'
    Properties:
      LaunchTemplateName: !Sub ${InstanceName}-launch-template
      LaunchTemplateData:
        ImageId: !Ref AmiId
        ...
        IamInstanceProfile:
          Arn: !GetAtt InstanceProfile.Arn
...