【问题标题】:CloudFormation Template doesnt pick KeyPairCloudFormation 模板不选择 KeyPair
【发布时间】:2020-11-16 04:26:15
【问题描述】:

我使用Cloud Formation Template (CFT)成功创建了以下四个资源:

  1. VPC
  2. 子网
  3. 互联网网关
  4. 附加网关

现在,我正在尝试使用 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"

但是,当我在(CFT,如上所示,代码)中使用 Key 参数时,这是我在资源的同一区域中存在的密钥,我的 CFT 堆栈失败并出现以下错误:

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

我验证的步骤:

  1. CFT模板资源和key在同一个区域
  2. 已删除和新创建的密钥对
  3. 尝试使用不同的密钥对
  4. 我在任何地方都看不到将密钥与 CFT 堆栈一起导入以便我的 EC2 实例可以使用它的选项。
  5. 即使在创建堆栈时,堆栈的 parameter 部分中的键也不会出现(在 keypair 部分中可见)。

我的问题是,我应该如何使用我的 AWS 账户中存在的密钥对创建 EC2 实例(作为 CFT 的一部分)?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-cloudformation aws-cloudformation-custom-resource


    【解决方案1】:

    删除密钥名称前面的RefRef 用于引用已定义为 CloudFormation 模板一部分的其他资源。如果密钥对已经存在,您可以简单地使用密钥名称。

    KeyName: "DevOpsAutomation"
    

    【讨论】:

    • 太好了,乐于助人!
    【解决方案2】:

    我在这里复制了一个例子

    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 的内容,以便我们帮助您解决问题

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 1970-01-01
      • 2021-08-21
      • 2015-02-14
      • 2017-03-10
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      相关资源
      最近更新 更多