Amazon cloudformation NAT实例的AWS CloudFormation-在LaunchConfig中禁用SourceDestinationCheck

Amazon cloudformation NAT实例的AWS CloudFormation-在LaunchConfig中禁用SourceDestinationCheck,amazon-cloudformation,Amazon Cloudformation,尝试使用CF模板部署环境。目前,我们有一个NAT GW用于出境交通,运行良好。交通量很低,而且是零星的。我正在考虑使用NAT实例(更具成本效益) 部署NAT实例本身不是问题,但我正在尝试将其放入一个自动调整组中以实现恢复能力(如果一个实例失败,则应重新启动/重新创建该实例)。但是,我找不到任何选项来禁用NAT实例所需的源/目标检查。甚至可能吗?SourceDestCheck是实例的属性或实例。遗憾的是,两者都不允许设置 然而,由于您将NAT实例放在ASG中,因此您必须以某种方式管理自动更新路由表

尝试使用CF模板部署环境。目前,我们有一个NAT GW用于出境交通,运行良好。交通量很低,而且是零星的。我正在考虑使用NAT实例(更具成本效益)


部署NAT实例本身不是问题,但我正在尝试将其放入一个自动调整组中以实现恢复能力(如果一个实例失败,则应重新启动/重新创建该实例)。但是,我找不到任何选项来禁用NAT实例所需的源/目标检查。甚至可能吗?

SourceDestCheck是实例的属性或实例。遗憾的是,两者都不允许设置

然而,由于您将NAT实例放在ASG中,因此您必须以某种方式管理自动更新路由表以使其工作。因此,无论您在启动、替换或重新定位NAT实例时使用什么进程(例如lambda)来更新路由表,您都可以使用此进程使用AWS SDK以编程方式禁用
SourceDestCheck


另一种选择是在LC或LT中使用
UserData
SourceDestCheck
是一个实例的属性,在该解决方案中,NAT实例启动时将在其
UserData

中使用AWS CLI禁用自己的
SourceDestCheck
。遗憾的是,两者都不允许设置

然而,由于您将NAT实例放在ASG中,因此您必须以某种方式管理自动更新路由表以使其工作。因此,无论您在启动、替换或重新定位NAT实例时使用什么进程(例如lambda)来更新路由表,您都可以使用此进程使用AWS SDK以编程方式禁用
SourceDestCheck


另一种选择是在LC或LT中使用
UserData
。在这个解决方案中,NAT实例在启动时将在其
UserData

中使用AWS CLI禁用自己的
SourceDestCheck
,自发布正在工作的用户数据,我希望有人觉得它有用

UserData:
 Fn::Base64: !Sub
   - |
     #!/bin/bash -xe
     yum update -y aws-cfn-bootstrap
     yum install -y jq
     export EC2_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
     export ENI=$(aws ec2 --region ${AWS::Region} describe-network-interfaces \
      | jq -Mr ".NetworkInterfaces[] | select(.Attachment.InstanceId==\"${!EC2_INSTANCE_ID}\") | .NetworkInterfaceId")
     aws ec2 modify-network-interface-attribute --region ${AWS::Region} --network-interface-id ${!ENI} --no-source-dest-check
     aws ec2 replace-route --region ${AWS::Region} --route-table-id ${PrivateRouteRef} \
       --destination-cidr-block "0.0.0.0/0" --network-interface-id ${!ENI}

   - PublicRouteRef: !Ref PublicRouteTable
     PrivateRouteRef: !Ref PrivateRouteTable

自我发布的用户数据,这是工作,我希望有人觉得它有用

UserData:
 Fn::Base64: !Sub
   - |
     #!/bin/bash -xe
     yum update -y aws-cfn-bootstrap
     yum install -y jq
     export EC2_INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
     export ENI=$(aws ec2 --region ${AWS::Region} describe-network-interfaces \
      | jq -Mr ".NetworkInterfaces[] | select(.Attachment.InstanceId==\"${!EC2_INSTANCE_ID}\") | .NetworkInterfaceId")
     aws ec2 modify-network-interface-attribute --region ${AWS::Region} --network-interface-id ${!ENI} --no-source-dest-check
     aws ec2 replace-route --region ${AWS::Region} --route-table-id ${PrivateRouteRef} \
       --destination-cidr-block "0.0.0.0/0" --network-interface-id ${!ENI}

   - PublicRouteRef: !Ref PublicRouteTable
     PrivateRouteRef: !Ref PrivateRouteTable

实际上,假设nat实例将获得适当的权限,那么使用
UserData
禁用源/目的地检查并更新路由表似乎是合理的。谢谢,没问题。很高兴我能提供帮助。事实上,假设nat实例将获得适当的权限,使用
UserData
禁用源/目的地检查并更新路由表似乎是合理的。谢谢,没问题。很高兴我能帮忙。