Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 我们如何获得专有网络';在AWS CloudFormation中使用Get::Attr的默认路由表ID?_Amazon Web Services_Amazon Cloudformation_Amazon Vpc_Vpc - Fatal编程技术网

Amazon web services 我们如何获得专有网络';在AWS CloudFormation中使用Get::Attr的默认路由表ID?

Amazon web services 我们如何获得专有网络';在AWS CloudFormation中使用Get::Attr的默认路由表ID?,amazon-web-services,amazon-cloudformation,amazon-vpc,vpc,Amazon Web Services,Amazon Cloudformation,Amazon Vpc,Vpc,我已经使用CloudFormation模板创建了一个VPC,并自动创建了一个默认路由表和NACL 现在,我想将一些路由添加到默认路由表中,该表是在同一个CloudFormation模板中使用VPC创建的。有没有办法在同一个CloudFormation模板中获取VPC的默认路由表ID 一种可能的方法是使用Get::Attr,但我找不到任何像Get::Attr的defaultroutetable这样的属性。VPC的默认路由表是随VPC一起创建的。如果使用云形成创建专有网络,则它会自动创建路由表,并将

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

现在,我想将一些路由添加到默认路由表中,该表是在同一个CloudFormation模板中使用VPC创建的。有没有办法在同一个CloudFormation模板中获取VPC的默认路由表ID


一种可能的方法是使用Get::Attr,但我找不到任何像Get::Attr的defaultroutetable这样的属性。

VPC的默认路由表是随VPC一起创建的。如果使用云形成创建专有网络,则它会自动创建路由表,并将其与相同的专有网络连接。Get::Attr函数用于获取特定AWS资源的属性,但如果它返回您要查找的属性,则取决于该AWS资源。在这种情况下,您可能正在查找默认路由表Id,但Get::Attr函数不返回RouteTableID。(将来可能会提供,但现在还没有。)

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

查找路由表ID: aws ec2描述路由表--过滤器“名称=专有网络id,值=$vpcs”--查询“路由表[]。路由表id[]”

为此路由表创建路由:(示例)
aws ec2创建路由--路由表id--目的地cidr块0.0.0/0--网关id igw-c0a643a9

VPC的默认路由表随VPC一起创建。如果使用云形成创建专有网络,则它会自动创建路由表,并将其与相同的专有网络连接。Get::Attr函数用于获取特定AWS资源的属性,但如果它返回您要查找的属性,则取决于该AWS资源。在这种情况下,您可能正在查找默认路由表Id,但Get::Attr函数不返回RouteTableID。(将来可能会提供,但现在还没有。)

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

查找路由表ID: aws ec2描述路由表--过滤器“名称=专有网络id,值=$vpcs”--查询“路由表[]。路由表id[]”

为此路由表创建路由:(示例)
aws ec2创建路由——路由表id——目的地cidr块0.0.0/0——网关id igw-c0a643a9

简单的回答是,您不能仅通过aws CloudFormation直接从VPC获取主路由表id,因为CloudFormation不提供它们之间的引用


但是,如果您真的想使用CloudFormation进行此操作,您仍然可以通过在CloudFormation模板中调用AWS Lambda函数来实现。Lambda函数可以运行命令将路由规则附加到主路由表。这是2019年AWS的一个答案。

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


但是,如果您真的想使用CloudFormation进行此操作,您仍然可以通过在CloudFormation模板中调用AWS Lambda函数来实现。Lambda函数可以运行命令将路由规则附加到主路由表。以下是2019年AWS的答案。

我猜唯一的方法是创建自己的路由表,修改并连接到VPC中的子网。感谢您的回复,是的,这肯定是一种方法。但是默认情况下,所有子网都会附加默认路由表,如果我们可以修改默认路由表,则可以避免将每个新子网附加到自定义路由表。如果您不想这样做,可以编写
Lambda
函数来搜索VPC的默认路由表并返回它。查看如何使用云形成lambda。我猜唯一的方法是创建自己的路由表,修改并连接到VPC中的子网。感谢您的回复,是的,这肯定是一种方法。但是默认情况下,所有子网都会附加默认路由表,如果我们可以修改默认路由表,则可以避免将每个新子网附加到自定义路由表。如果您不想这样做,可以编写
Lambda
函数来搜索VPC的默认路由表并返回它。查看如何使用云形成lambda。谢谢datrey。。这对我有用。我已经在我的基础架构shell脚本中添加了cli命令。谢谢datrey。。这对我有用。我已经在我的基础架构shell脚本中添加了cli命令。