從文檔Fn:GetAtt,您只能檢索Subnet的AvailabilityZone和Ipv6CidrBlocks詳細信息。在CFn模板中沒有內置的支持來獲得給定子網的VpcId。
雖然有一個解決辦法。如果使用的是aws-cli documentation,則可以使用describe-subnets
方法獲取所需子網的VpcId,並將其作爲輸入傳遞給Cloudformation模板create_stack
調用。
即使您使用的是任何SDK,此方法仍然有效。例如,在Java中。
//pseudo code only!
DescribeSubnetsRequest request = new DescribeSubnetsRequest();
request.withSubnetIds("subnet-abcdefgh");
DescribeSubnetsResult result = awsClient.describeSubnets(request);
String myVpc = result.getSubnets().get(0).getVpcId();
// add the above VPC Id to the parameters of your Cloud formation template create stack request.
希望這會有所幫助。
這將是一個有用的功能,但我不相信CloudFormation有一個本地的方式來做到這一點。如果它足夠重要,也許您可以使用Lambda支持的自定義資源來執行查找(類似示例:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-custom-resources-lambda-lookup -amiids.html)。 – jarmod