Как подключить AmazonEC2RoleforSSM к экземпляру ec2 в сценарии CloudFormation - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь запустить сценарий облачной информации нескольких экземпляров ec2. Я использую сценарий оболочки для l oop команды aws cloudformation create-stack и успешно вызываю несколько экземпляров.

Теперь мне нужно запустить этот экземпляр с прикрепленной ролью SSM. Однако я не вижу возможности использовать существующую роль в сценарии. Мне нужно воссоздать роль внутри скрипта следующим образом:

AWSTemplateFormatVersion: 2010-09-09
Description: Compact template for creating an ec2 instance for SPT

Resources:
  IAMRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: SPTvacmRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      Path: "/"
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM

  InstanceProfile1:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: "/"
      Roles:
        - Ref: IAMRole

  ec2instance1:
    Type: AWS::EC2::Instance
    Properties:
      SubnetId: subnet-0da86f65478f3d30a
      KeyName: spt-lab
      ImageId: ami-00344ae218e7aae62
      InstanceType: t2.nano
      IamInstanceProfile: !Ref InstanceProfile1
      SecurityGroupIds:
        - sg-0d3fae6860ce71c91

Это может быть выполнено только один раз, потому что к тому времени, когда l oop выполнит команду во второй раз, роль SPTvacmRole уже существует, и стек не работает.

Я уже создал роль из консоли вручную, используя политику AmazonEC2RoleForSSM и назвал ее EC2RoleForSSM, однако, когда я пытаюсь сослаться на эту роль по ее имени -Ref: EC2RoleForSSM в InstanceProfile1 без при создании IAMRole появляется сообщение об ошибке: Ошибка формата шаблона: Неразрешенные зависимости ресурсов [EC2RoleForSSM] в блоке ресурсов шаблона

Как я могу использовать уже существующую роль EC2RoleForSSM в скрипте , без повторного создания?

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Однако я не вижу возможности использовать существующую роль в скрипте. Мне нужно воссоздать роль внутри скрипта

Как я могу использовать уже существующую роль EC2RoleForSSM в скрипте, не создавая ее заново?

Если роль существует, вы не можете создать такую ​​же роль в CloudFormation. Вместо этого вы должны импортировать его :

AWS::IAM::Role является одним из ресурсы, которые могут быть импортированы в CloudFormation.

Если вы просто хотите сослаться на него в шаблонах, @ChrisWilliams уже объяснил, как это сделать.

0 голосов
/ 10 июля 2020

Не следует включать функцию Ref, так как она используется для получения значений из параметров или ресурсов.

Вместо этого просто используйте строку EC2RoleForSSM, как показано ниже.

  InstanceProfile1:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: "/"
      Roles:
        - EC2RoleForSSM
...