![](/img/trans.png)
[英]AWS CloudFormation: how do I refer to the default/main route table (that is created when a VPC is created) in a cloudformation template?
[英]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.