簡體   English   中英

我們如何使用 AWS CloudFormation 中的 Get::Attr 獲取 VPC 的默認路由表 ID?

[英]How can we get a VPC's default route table ID using Get::Attr in AWS CloudFormation?

我已經使用 CloudFormation 模板創建了一個 VPC,同時自動創建了一個默認路由表和 NACL。

現在,我想向在同一 CloudFormation 模板中使用 VPC 創建的默認路由表添加一些路由。 有什么辦法可以在同一個 CloudFormation 模板中獲取 VPC 的默認路由表 ID?

一種可能的方法是使用 Get::Attr,但我找不到任何屬性,例如帶有 Get::Attr 的 defaultroutetable。

VPC 的默認路由表與 VPC 一起創建。 如果您使用 cloud-formation 創建 VPC,那么它會自動創建一個路由表並將其附加到相同的 VPC。 Get::Attr 函數用於獲取特定 AWS 資源的屬性,但它取決於該 AWS 資源,如果它返回您要查找的屬性。 在這種情況下,您可能正在尋找默認路由表 ID,但 Get::Attr 函數不返回 RouteTableID。 (它可能在未來可用,但目前還沒有。)

我建議為每個子網創建路由表,以防路由不同。 如果你想使用腳本來完成,那么你應該通過使用 AWS CLI 命令創建一個 shell 腳本來完成,並找到 VPC 的默認路由表的 ID,然后向它添加路由。

查找路由表 ID: aws ec2 describe-route-tables --filters "Name=vpc-id,Values=$vpcs" --query "RouteTables[].RouteTableId[]"

為此路由表創建路由:(示例)aws ec2 create-route --route-table-id --destination-cidr-block 0.0.0.0/0 --gateway-id igw-c0a643a9

嗯,簡短的回答是您不能僅通過 AWS CloudFormation 從 VPC 直接獲取主路由表 ID,因為 CloudFormation 不提供它們之間的參考。

但是,如果您真的想使用 CloudFormation 來實現,您仍然可以借助在 CloudFormation 模板中調用 AWS Lambda 函數來實現。 Lambda 函數可以運行命令將路由規則附加到主路由表。 這是 AWS 在 2019 年的回答, https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-route-table-vpc/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM