amazon-web-services - 如何获取cloudformation中的安全组列表

标签 amazon-web-services aws-cloudformation

我想获取与 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":*******
        },

允许的值应该是多少......?

最佳答案

是的,可以使用特殊的模板参数,我创建了一个小型云形成模板,其中仅包含 SecurityGroupKeyPair 参数。当您使用控制台使用此模板创建堆栈时,它将在下拉菜单中提示选择 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/

相关文章:

amazon-web-services - 我们可以从正在运行的 EC2 实例中删除安全组吗?

hyperledger-fabric - AWS CloudFormation 启动 Hyperledger Fabric 失败,错误为 : failed to create: [EC2InstanceForDev]

aws-cloudformation - 如何使用 ScheduleExpression 手动触发 cloudwatch 规则(10 天)

amazon-web-services - 无法看到 Cloudformation 更改集添加的资源

linux - 在 AWS Ubuntu 实例上的 Nginx 上设置 SSL

node.js - Amazon Elastic 负载均衡器未填充 x-forwarded-proto header

amazon-web-services - 具有另一个对象列表的对象的 DynamoDB Mapper 注释

amazon-web-services - AWS ECS 任务定义自动缩放

amazon-web-services - 使用静态列表作为 Cloudformation 参数

amazon-web-services - 当成功生成 S3 预签名 URL 时,为什么我会收到 "Access Denied"?