我正在编写一个云形成模板来预置 EC2 实例,我想等到用户数据完成。
我尝试使用 cfn 信号,但当我的 EC2 位于私有子网中时,它不起作用。
获取客户端超时错误
cfn-signal
需要直接或通过NAT设备或代理进行互联网连接,才能联系CloudFormation并传递信号。 此功能正常工作所需的终端节点不在您的 VPC 中。 (某些 AWS 服务支持 VPC 终端节点,但在撰写本文时,这不是其中之一(。
您的选择:
将 NAT 网关或 NAT 实例附加到 VPC 中的公有子网,然后修改私有子网的默认路由以指向 NAT 设备。 NAT实例的运营成本更低,而NAT网关支持更高的吞吐量和内置的冗余和容错能力。 但是,如果考虑成本,t2.nano 机器上的 NAT 实例对于此应用程序来说绰绰有余。
或者,使用 HTTP 代理(如 squid(在具有互联网访问权限的子网上构建 EC2 实例,该代理配置为允许您的实例向外连接,将--http-proxy
参数传递给 cfn-signal,提供格式为 URL 的代理地址,例如--http-proxy http://172.32.1.10:3128
. 也可以构建此类代理的集群,但这需要在 TCP(非 HTTP(模式下使用网络负载均衡器 (NLB( 或 ELB 经典。 应用程序负载均衡器 (ALB( 可以与反向代理一起使用,但不支持正向代理,这是一个正向代理应用程序。