AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::EC2::SecurityGroup

可创建一个 Amazon EC2 安全组。要创建 VPC 安全组,请使用 VpcId 属性。

此类型支持更新。有关更新堆栈的详细信息,请参阅 AWS CloudFormation 堆栈更新

重要

如果要在这些安全组的入口和出口规则中交叉引用两个安全组,请使用 AWS::EC2::SecurityGroupEgressAWS::EC2::SecurityGroupIngress 资源定义您的规则。不要在 AWS::EC2::SecurityGroup 中使用嵌入式入口和出口规则。这样会导致循环依赖,这是 AWS CloudFormation 不允许的。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

Copy
{ "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupName" : String, "GroupDescription" : String, "SecurityGroupEgress" : [ Security Group Rule, ... ], "SecurityGroupIngress" : [ Security Group Rule, ... ], "Tags" : [ Resource Tag, ... ], "VpcId" : String } }

YAML

Copy
Type: "AWS::EC2::SecurityGroup" Properties: GroupName: String GroupDescription: String SecurityGroupEgress: - Security Group Rule SecurityGroupIngress: - Security Group Rule Tags: - Resource Tag VpcId: String

属性

GroupName

安全组的名称。有关有效值的信息,请参阅 Amazon EC2 API 参考CreateSecurityGroup 操作的 GroupName 参数。

如果不指定 GroupName,则 AWS CloudFormation 生成一个唯一物理 ID 并将该 ID 用作组名称。有关更多信息,请参阅 名称类型

重要

如果指定一个名称,您将无法执行需要替换此资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

Required: No

Type: String

更新要求替换

GroupDescription

安全组的描述。

必需:是

Type: String

更新要求替换

SecurityGroupEgress

Amazon EC2 安全组传出规则列表。

Required: No

类型EC2 安全组规则 的列表

更新要求无需中断

SecurityGroupIngress

Amazon EC2 安全组传入规则列表。

Required: No

类型EC2 安全组规则 的列表

更新要求无需中断

Tags

需要附加到资源的标签。

Required: No

类型AWS CloudFormation 资源标签

更新要求无需中断

VpcId

VPC 的物理 ID。您可以使用对 AWS::EC2::VPC 的引用 (例如:{ "Ref" : "myVPC" }) 来获取物理 ID。

有关使用 Ref 功能的更多信息,请参阅参考

必需:对于没有默认 VPC 的 VPC 安全组来说是必需的

Type: String

更新要求替换

注意

有关 VPC 安全组的更多信息,请参阅 Amazon VPC 用户指南 中的安全组

返回值

Ref

当您指定 AWS::EC2::SecurityGroup 类型作为 Ref 函数的参数时,AWS CloudFormation 返回安全组名称或安全组 ID(对于位于默认 VPC 以外位置的 EC2-VPC 安全组)。

有关使用 Ref 功能的更多信息,请参阅参考

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

GroupId

指定安全组的组 ID,如 sg-94b3a1f6

有关使用 Fn::GetAtt 的更多信息,请参见 Fn::GetAtt

示例

定义基本的入口和出口规则

下面的示例定义一个具有入口和出口规则的安全组。

JSON

Copy
"InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Allow http to client host", "VpcId" : {"Ref" : "myVPC"}, "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" }], "SecurityGroupEgress" : [{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" }] } }

YAML

Copy
InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow http to client host VpcId: Ref: myVPC SecurityGroupIngress: - IpProtocol: tcp FromPort: '80' ToPort: '80' CidrIp: 0.0.0.0/0 SecurityGroupEgress: - IpProtocol: tcp FromPort: '80' ToPort: '80' CidrIp: 0.0.0.0/0

删除默认规则

在创建 VPC 安全组时,Amazon EC2 将创建一个默认出口规则,以允许所有端口和 IP 协议上的出口流量流向任何位置。仅当您指定一个或多个出口规则时,默认规则才会被删除。如果要删除默认规则并将出口流量限制到 localhost (127.0.0.1/32),则可以使用下面的示例。

JSON

Copy
"sgwithoutegress": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Limits security group egress traffic", "SecurityGroupEgress": [ { "CidrIp": "127.0.0.1/32", "IpProtocol": "-1" } ], "VpcId": { "Ref": "myVPC"} } }

YAML

Copy
sgwithoutegress: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Limits security group egress traffic SecurityGroupEgress: - CidrIp: 127.0.0.1/32 IpProtocol: "-1" VpcId: Ref: myVPC

更多信息