用于EC2的云信息模板(JSON),带有VPC、子网和;安全组选择
我正在尝试用JSON设置一个CloudFormation模板,它支持一个EC2实例,刚刚开始,但在选择VPC和子网时遇到了问题。最后,这将是一个跨多个帐户使用的模板,每个帐户具有多个VCP和子网。任何帐户中都没有默认的专有网络 我希望有VPC的模板提示,然后根据VPC迭代有效的子网。我一直在使用亚马逊的这篇博文: 然而,我似乎无法让这个工作。我在Lambda函数中设置了文章中所述的正确角色,但出现了错误“此用户没有默认VPC”。我也愿意用一种更简单的方法来实现这一点用于EC2的云信息模板(JSON),带有VPC、子网和;安全组选择,json,amazon-web-services,amazon-ec2,amazon-cloudformation,Json,Amazon Web Services,Amazon Ec2,Amazon Cloudformation,我正在尝试用JSON设置一个CloudFormation模板,它支持一个EC2实例,刚刚开始,但在选择VPC和子网时遇到了问题。最后,这将是一个跨多个帐户使用的模板,每个帐户具有多个VCP和子网。任何帐户中都没有默认的专有网络 我希望有VPC的模板提示,然后根据VPC迭代有效的子网。我一直在使用亚马逊的这篇博文: 然而,我似乎无法让这个工作。我在Lambda函数中设置了文章中所述的正确角色,但出现了错误“此用户没有默认VPC”。我也愿意用一种更简单的方法来实现这一点 { "AWSTempl
{
"AWSTemplateFormatVersion":"2010-09-09",
"Description":"EC2 CloudFormation Template - Version 1.0",
"Metadata":{},
"Parameters":{
"InstanceType":{
"Description":"EC2 instance type",
"Type":"String",
"Default":"t2.small",
"AllowedValues":[
"t1.micro",
"t2.nano",
"t2.micro",
"t2.small",
"t2.medium",
"t2.large"
],
"ConstraintDescription":"must be a valid EC2 instance type."
},
"VpcName" : {
"Type" : "AWS::EC2::VPC::Id",
"Description" : "Select the VPC for this EC2 Instances"
},
"SubnetName" : {
"Type" : "AWS::EC2::Subnet::Id",
"Description" : "The list of SubnetIds"
}
},
"Mappings":{},
"Conditions":{},
"Resources":{
"VcpInfo" : {
"Type" : "Custom::VcpInfo",
"Properties" : {
"ServiceToken" : "arn:aws:lambda:us-east-1:206765214992:function:Test_GetAtt",
"NameFilter" : { "Ref": "VpcName" }
}
},
"SubnetInfo" : {
"Type" : "Custom::SubnetInfo",
"Properties" : {
"ServiceToken" : "arn:aws:lambda:us-east-1:206765214992:function:Test_GetAtt",
"NameFilter" : { "Ref": "SubnetName" }
}
},
"EOTSSEC2":{
"Type":"AWS::EC2::Instance",
"Properties":{
"DisableApiTermination":"false",
"ImageId":"ami-06bee8e1000e44ca4",
"InstanceType":{ "Ref":"InstanceType" },
"Monitoring":"true"
}
}
},
"Outputs":{
"VCPCidrBlock" : {
"Description" : "VCP CidrBlock",
"Value" : "!GetAtt VcpInfo.CidrBlock"
},
"SubnetAvailabilityZon" : {
"Description" : "Subnet AvailabilityZone",
"Value" : "!GetAtt SubnetInfo.AvailabilityZone"
},
"SubnetCidrBlock" : {
"Description" : "Subnet CidrBlock",
"Value" : "!GetAtt SubnetInfo.CidrBlock"
},
"SubnetVpcId" : {
"Description" : "Subnet VpcId",
"Value" : "!GetAtt SubnetInfo.VpcId"
}
}
}
我希望得到一个VPC的提示,然后显示一个有效的子网列表。这篇博文展示了如何获取特定资源的属性信息(例如子网),然后在模板的其他地方使用这些属性,例如在“输出”部分中,显示关于所选资源的更多信息 但是,不可能调用自定义资源来操作
参数
部分。这是因为参数是在构建堆栈之前收集的
因此,如果您希望提示输入专有网络,然后仅使用属于该专有网络的子网列表填充Subnet参数,那么很抱歉,这是不可能的
欢迎您创建自己的“前端”,向用户询问信息,包括上述功能,然后调用CloudFormation以创建具有所需参数的堆栈,但无法在CloudFormation管理控制台中向参数添加自定义逻辑