Cloudformation 部署后无法通过 ssh 连接到 AWS 实例

Cloudformation 部署后无法通过 ssh 连接到 AWS 实例

我正在尝试构建一个小型基础设施:

  • 单个 VPC
  • 单个子网
  • 具有单个规则的单个安全组:ssh
  • 单个实例

到目前为止,为了使其能够远程运行,我必须添加:

  • 互联网网关
  • 路由表
    • 路线

当我部署模板时,它创建成功。我可以通过控制台查看所有组件。

我遇到的问题是随后连接到实例。尝试通过 ssh 连接超时。

我认为我已经将这个问题缩小到这样一个事实:在构建堆栈时,会部署两个路由表。其中一个标记为主要的其中没有添加默认路由,另一个是我在模板中明确定义的,并添加了默认路由。

如果我事后将默认路由添加到模板定义表,我就可以 ssh 了。

我想我的问题是:

  • 如何将我在模板中创建的表标记为主表,或者
  • 我如何告诉 CloudFormation 不要创建默认被标记为主表的表,或
  • 如何将默认路由放入主表?

模板:

AWS模板格式版本:2010-09-09
资源:
  vpcCandidateEyMm7zuOcn:
    类型:'AWS::EC2::VPC'
    特性:
      CidrBlock:192.168.0.0/16
      启用DnsHostnames:'true'
      启用 DNS 支持:'true'
      InstanceTenancy:默认
      标签:
        - 关键测试
          值:测试
    元数据:
      ‘AWS::CloudFormation::设计师’:
        编号:052446e9-ed29-4689-8eb2-2006482f7a65
  IgCandidateEyMm7zuOcn:
    类型:“AWS :: EC2 :: InternetGateway”
    特性:
      标签:
      - 关键测试
        值:测试
  AigCandidateEyMm7zuOcn:
    类型:“AWS::EC2::VPCGatewayAttachment”
    特性:
      虚拟PCID:
        参考:vpcCandidateEyMm7zuOcn
      互联网网关ID:
        参考:IgCandidateEyMm7zuOcn
  RtblCandidateEyMm7zuOcn:
    类型:“AWS :: EC2 :: RouteTable”
    特性:
      虚拟PCID:
        参考:vpcCandidateEyMm7zuOcn
  我的路线:
    类型:AWS::EC2::Route
    取决于:IgCandidateEyMm7zuOcn
    特性:
      路由表编号:
        参考:RtblCandidateEyMm7zuOcn
      目标 CidrBlock:0.0.0.0/0
      网关编号:
        参考:IgCandidateEyMm7zuOcn
  子网候选EyMm7zuOcn:
    类型:'AWS::EC2::Subnet'
    特性:
      CidrBlock:192.168.1.0/24
      MapPublicIpOnLaunch:“true”
      标签:
        - 关键测试
          值:测试
      VpcId: !Ref vpcCandidateEyMm7zuOcn
    元数据:
      ‘AWS::CloudFormation::设计师’:
        编号:b9300540-4fb5-4a9c-a432-d12d9a78e08c
  允许SSH:
    类型:'AWS::EC2::SecurityGroup'
    特性:
      GroupDescription:“允许从任何地方使用 SSH”
      虚拟PCID:
        参考:vpcCandidateEyMm7zuOcn
      安全组入口:
        -IP协议:tcp
          发件人端口:'22'
          到港港口:'22'
          CidrIp:0.0.0.0/0
  ansible实例:
    类型:'AWS::EC2::Instance'
    特性:
      图片编号:ami-4bf3d731
      密钥名称:AWSCentOS7
      实例类型:t2.micro
      子网 ID: !Ref subnetCandidateEyMm7zuOcn
      安全组 ID:
      - !Ref allowSSH
      标签:
        - 关键词:姓名
          值:测试
      用户数据:
        Fn::Base64: !Sub |
          /bin/bash #!/bin/bash
          pip 安装 ansible
          光盘〜
          wget https://s3.amazonaws.com/ansibledepot/web.tar.gz
          tar zxvf web.tar.gz
    元数据:
      ‘AWS::CloudFormation::设计师’:
        编号:63fffdde-e058-45ad-b2c8-7cf00fd54351

答案1

找到答案这里。我必须将子网添加到路由表中。

    "subnet0RTA": {
  "Type" : "AWS::EC2::SubnetRouteTableAssociation",
  "Properties" : {
    "RouteTableId" : {"Ref" : "rtb"},
    "SubnetId" : {"Ref" : "subnet0"}
  }
},
"subnet1RTA": {
  "Type" : "AWS::EC2::SubnetRouteTableAssociation",
  "Properties" : {
    "RouteTableId" : {"Ref" : "rtb"},
    "SubnetId" : {"Ref" : "subnet1"}
  }
},

相关内容