我想获取与 cloudformation 参数部分中的特定 VPC 关联的安全组列表。
"VpcId":{
"Description":"Choose the VPC ID"
"Type":"AWS::EC2::VPC::Id"
},
"SecurityGroupsID":{
"Description": "Choose availablity zone Availability Zone of the Subnet",
"Type":"List<AWS::EC2::SecurityGroup::Id>"
"AllowedValues":*******
},
允许的值应该是多少......?
最佳答案
是的,可以使用特殊的模板参数,我创建了一个小型云形成模板,其中仅包含 SecurityGroup 和 KeyPair 参数。当您使用控制台使用此模板创建堆栈时,它将在下拉菜单中提示选择 key 和安全组。
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "Security Group Test",
"Parameters" : {
"SecurityGroup": {
"Description": "Name of security group",
"Type": "AWS::EC2::SecurityGroup::GroupName"
},
"KeyName": {
"Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",
"Type": "AWS::EC2::KeyPair::KeyName",
"ConstraintDescription" : "must be the name of an existing EC2 KeyPair."
}
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties": {
"ImageId" : "ami-ea87a78f",
"InstanceType" : "t2.micro",
"SecurityGroups" : [ {"Ref" : "SecurityGroup"} ],
"KeyName": {"Ref": "KeyName"}
}
}
}
}
您还应该特别查看 AWS 特定参数类型部分中的 parameters-section-structure.html。您可能感兴趣的还有许多其他参数类型,例如 Route 53 托管区域和 VPC。
我认为不可能查找安全组,因为它不存在完全用于此目的的内在函数,但是如果您使用另一个云形成脚本创建安全组可以导入。
来自 AWS 文档 intrinsic-function-reference-importvalue.html:
堆叠导出
"Outputs" : {
"PublicSubnet" : {
"Description" : "The subnet ID to use for public web servers",
"Value" : { "Ref" : "PublicSubnet" },
"Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SubnetID" }}
},
"WebServerSecurityGroup" : {
"Description" : "The security group ID to use for public web servers",
"Value" : { "Fn::GetAtt" : ["WebServerSecurityGroup", "GroupId"] },
"Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-SecurityGroupID" }}
}
}
堆栈 B 导入
"Resources" : {
"WebServerInstance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : "t2.micro",
"ImageId" : "ami-a1b23456",
"NetworkInterfaces" : [{
"GroupSet" : [{"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SecurityGroupID"}}],
"AssociatePublicIpAddress" : "true",
"DeviceIndex" : "0",
"DeleteOnTermination" : "true",
"SubnetId" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStackNameParameter}-SubnetID"}}
}]
}
}
}
目前,您正在寻找的唯一具有类似查找功能(但针对可用区域)的内部函数是:
{ "Fn::GetAZs" : "region" }
它可以在您创建 SecurityGroups 模板中使用。
关于amazon-web-services - 如何获取cloudformation中的安全组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021670/