amazon-web-services - CloudFormation - Tansit 网关的路由表路由传播
问题描述
我正在使用 CloudFormation 创建以下资源:
- 专有网络
- 两个公共子网
- 两个私有子网
- 子网的路由表
我已经用我的本地办公室手动创建了一个站点到站点的 VPN。我手动创建了中转网关并将我的 VPN 连接到它。现在,由于我将使用 CloudFormation 创建 VPC,因此我想避免手动工作,让 VPC 与 Transit Gateway 相关联,并在 CloudFormation 脚本本身的路由表中传播路由。请参考以下代码段:
VPCTransitGateayAttachment:
Type: AWS::EC2::TransitGatewayAttachment
Properties:
SubnetIds:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
TransitGatewayId: 'tgw-1234567890'
VpcId: !Ref VPC
#TransitGateWay Routes
TransitGateWayPublicRouteTableRoutes:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: '0.0.0.0/16'
TransitGatewayId: 'tgw-1234567890'
TransitGateWayPrivateRouteTable1Routes:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable1
DestinationCidrBlock: '0.0.0.0/16'
TransitGatewayId: 'tgw-1234567890'
TransitGateWayPrivateRouteTable2Routes:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable2
DestinationCidrBlock: '0.0.0.0/16'
TransitGatewayId: 'tgw-1234567890'
但是我在执行脚本时遇到了以下错误。
The transitGateway ID 'tgw-1234567890' does not exist. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidTransitGatewayID.NotFound; Request ID: 30d31120-f9e2-4870-a378-55bc9a36f5bb)
对于AWS::EC2::Route资源。我无法理解问题所在。该文档说明了适用于 AWS::EC2::Route 的 Transit Gateway 选项。我在这里还缺少什么?
解决方案
我在 cloudformation 中遇到了同样的问题,问题是路线必须等待AWS::EC2::TransitGatewayAttachment
,我运行了 cloudformation 模板,所有需要 TransitGatewayId 参数的路线都已注释,然后取消注释路线,它就起作用了。
有文档表明这是 Internet 网关附件所必需的,但我的测试表明,TransitGatewayAttachments 也需要此文件。
我们应该做的是添加一个 DependsOn,这应该可以解决问题。
推荐阅读
- database - SOLR - 按字段分组,然后通过另一个字段获得不同的值
- c# - 通过将令牌存储在 HttpContext.Session 中来使用 .NET Core API 的登录功能是一种好习惯吗?
- docker-compose - 计算机重启后 Docker 失败
- swift - 更改约束后 constUIScrollView 不起作用
- python-3.x - 在python中使用aiohttp获取多个url
- php - 变量中的数组但使用条件时出错
- typescript - Ionic 3如何在打字稿中使用for循环?
- python - 使用 python 3 在电子邮件中嵌入 Pandas df html 表
- python - pyspark中CountVectorizer的minDF参数是什么?
- python - Django Social Auth Facebook 有效 URL 回调