如何在 AWS CloudFormation 中使用 Get::Attr 获取 VPC 的默认路由表 ID?



我已经使用云形式模板创建了一个VPC,以及VPC A默认路由表和NACL自动创建。

现在,我想在同一云形式模板中使用VPC创建的默认路由表添加一些路由。有什么方法可以在同一云形式模板中获取VPC的默认路由表ID?

一种可能的方法可能是使用get :: attr,但是我找不到任何诸如defaultretetable的属性:: attr。

与VPC一起创建了VPC的默认路由表。如果使用云形成创建VPC,则它将自动创建一个路由表并使用相同的VPC连接。get :: attr函数用于获取特定AWS资源的属性,但是如果它返回所需的属性,则取决于该AWS资源。在这种情况下,您可能正在寻找默认的路由表ID,但是get :: attr function不会返回reuteTableID。(将来可能会在以后使用,但到目前为止都无法使用。)

我建议为每个子网和不同路线创建路由表。如果您想使用脚本进行操作,则应通过使用AWS CLI命令创建Shell脚本并找到VPC的默认路由表ID,然后将路由添加到它。

找到路由表ID:AWS EC2描述路线表 - 滤波器" name = vpc-id,values = $ vpcs" - Query" RuteTables []。

为此路由表创建路由:(示例)AWS EC2 CREATE-ROUTE-ROUTE-TABLE-ID -destination-cidr-block 0.0.0.0.0/0 -gateway-id igw-c0a643a9

好吧,简短的答案是,您不能仅通过AWS CloudFormation直接从VPC获得主路由表ID,因为云形式不提供它们之间的参考。

但是,如果您真的想使用云形式进行操作,则仍然可以在云形式模板中调用AWS lambda函数的帮助下完成。Lambda函数可以运行命令将路由规则附加到主路由表。这是2019年AWS的答案,https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-route-table-vpc/。

基本上,您不应使用VPC随附的默认路由表。

这可能是无法使用的原因之一:

保护您的VPC的一种方法是将主路由桌留在其原始默认状态(仅带有本地路线),并明确将您创建的每个新子网与自定义路线之一相关联您创建的表。这确保您必须明确控制每个子网的出站流量如何路由。

最新更新