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

时间:2019-03-06 13:41:08

标签: amazon-web-services amazon-cloudformation amazon-vpc vpc

我已经使用CloudFormation模板创建了VPC,并且与VPC一起自动创建了默认路由表和NACL。

现在,我想向同一CloudFormation模板中的VPC创建的默认路由表中添加一些路由。是否可以在同一CloudFormation模板中获取VPC的默认路由表ID?

一种可能的方法是使用Get :: Attr,但是我找不到带有get :: Attr的默认路由之类的属性。

2 个答案:

答案 0 :(得分:1)

好吧,简短的答案是您不能仅通过AWS CloudFormation直接从VPC获取主路由表ID,因为CloudFormation并未在它们之间提供引用。

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

答案 1 :(得分:0)

与VPC一起创建了VPC的默认路由表。如果使用云形式创建VPC,则它将自动创建路由表并将其附加到同一VPC。 Get :: Attr函数用于获取特定AWS资源的属性,但是如果它返回您要寻找的属性,则取决于该AWS资源。在这种情况下,您可能正在寻找默认的路由表ID,但Get :: Attr函数不会返回RouteTableID。 (它可能会在将来提供,但目前尚不可用。)

在路由不同的情况下,我建议为每个子网创建路由表。如果要使用脚本执行此操作,则应使用AWS CLI命令创建一个外壳脚本并找到VPC的默认路由表ID,然后向其添加路由。

查找路由表ID: AWS EC2 describe-route-tables --filters“名称= vpc-id,值= $ vpcs” --query“ RouteTables []。RouteTableId []”

为此路由表创建路由:(示例) AWS EC2创建路由--route-table-id --destination-cidr-block 0.0.0.0/0 --gateway-id igw-c0a643a9