Шаблон CloudFormation не выбирает KeyPair

Я создал следующие четыре ресурса, успешно используя Cloud Formation Template (CFT):

  1. VPC
  2. Подсеть
  3. Интернет-шлюз
  4. AttachGateway

Теперь я пытаюсь создать группу безопасности с экземпляром EC2, вот код.

  Type: AWS::EC2::SecurityGroup
  Properties:
      GroupDescription: Allow http and ssh to client host
      VpcId:
         Ref: InsuranceVPC
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 22
        ToPort: 22
        CidrIp: 0.0.0.0/0
      SecurityGroupEgress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0

Ec2Instance: 
  Type: AWS::EC2::Instance
  Properties: 
    ImageId: "ami-08706cb5f68222d09"
    KeyName: 
      Ref: "DevOpsAutomation"
    NetworkInterfaces: 
      - AssociatePublicIpAddress: "true"
        DeviceIndex: "0"
        GroupSet: 
          - Ref: "InsuranceSecurityGroup"
        SubnetId: 
          Ref: "InsuranceSubnet"

Но когда я использую параметр Key в (CFT, как показано выше, код), который является моим ключом, присутствующим в той же области ресурсов, мой стек CFT выходит из строя с ошибкой ниже:

Template format error: Unresolved resource dependencies [DevOpsAutomation] in the Resources block of the template note: DevOpsAutomation is my keyname

Шаги, которые я проверил:

  1. Ресурсы шаблона CFT и ключ находятся в одном регионе
  2. удаленная и только что созданная пара ключей
  3. пытался использовать другую пару ключей
  4. Я нигде не видел возможности импортировать ключ вместе со стеком CFT, чтобы мой экземпляр EC2 мог его использовать.
  5. Даже при создании стека ключ НЕ появляется (который отображается в разделе keypair) в разделе parameter стека.

Мой вопрос: как мне создать экземпляр EC2 (как часть CFT), используя пару ключей, которая присутствует в моей учетной записи AWS?




Ответы (2)


Удалите Ref перед названием ключа. Ref используется для ссылки на другие ресурсы, которые были определены как часть шаблона CloudFormation. Если пара ключей уже существует, вы можете просто использовать имя ключа.

KeyName: "DevOpsAutomation"
person Dennis Traub    schedule 26.07.2020
comment
Отлично, рад помочь! - person Dennis Traub; 26.07.2020

Я скопировал здесь пример

AWSTemplateFormatVersion: '2010-09-09'
Description: >
  AWS CloudFormation template to create Jenkins server
Parameters:
    KeyName:
        Type: AWS::EC2::KeyPair::KeyName
        Default: ritefit-keypair
Resources:
    JenkinsEC2Instance:
        Type: AWS::EC2::Instance
        Properties:
        KeyName: !Ref KeyName

Покажите нам больше, что определило KeyName, чтобы мы могли помочь вам, в чем проблема

person Nghia Do    schedule 26.07.2020