适用于 Java 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 Amazon EC2 中使用安全组

创建安全组

要创建安全组,请使用包含密钥名称的 CreateSecurityGroupRequest 调用 Ec2ClientcreateSecurityGroup 方法。

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.CreateSecurityGroupRequest; import software.amazon.awssdk.services.ec2.model.CreateSecurityGroupResponse; import software.amazon.awssdk.services.ec2.model.AuthorizeSecurityGroupIngressRequest; import software.amazon.awssdk.services.ec2.model.AuthorizeSecurityGroupIngressResponse; import software.amazon.awssdk.services.ec2.model.IpPermission; import software.amazon.awssdk.services.ec2.model.IpRange;

代码

CreateSecurityGroupRequest create_request = CreateSecurityGroupRequest.builder() .groupName(group_name) .description(group_desc) .vpcId(vpc_id) .build(); CreateSecurityGroupResponse create_response = ec2.createSecurityGroup(create_request);

请参阅 GitHub 上的完整示例

配置安全组

安全组可以控制对 Amazon EC2 实例的入站 (入口) 流量和出站 (出口) 流量。

要向安全组添加入口规则,请使用 Ec2ClientauthorizeSecurityGroupIngress 方法,提供安全组的名称和您想要在 AuthorizeSecurityGroupIngressRequest 对象中分配给安全组的访问规则 (IpPermission)。以下示例介绍如何将 IP 权限添加到安全组。

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.CreateSecurityGroupRequest; import software.amazon.awssdk.services.ec2.model.CreateSecurityGroupResponse; import software.amazon.awssdk.services.ec2.model.AuthorizeSecurityGroupIngressRequest; import software.amazon.awssdk.services.ec2.model.AuthorizeSecurityGroupIngressResponse; import software.amazon.awssdk.services.ec2.model.IpPermission; import software.amazon.awssdk.services.ec2.model.IpRange;

代码

首先,创建 Ec2Client

Ec2Client ec2 = Ec2Client.create();

然后,使用 Ec2ClientauthorizeSecurityGroupIngress 方法。

IpRange ip_range = IpRange.builder() .cidrIp("0.0.0.0/0").build(); IpPermission ip_perm = IpPermission.builder() .ipProtocol("tcp") .toPort(80) .fromPort(80) .ipRanges(ip_range) // .ipv4Ranges(ip_range) .build(); IpPermission ip_perm2 = IpPermission.builder() .ipProtocol("tcp") .toPort(22) .fromPort(22) .ipRanges(ip_range) .build(); AuthorizeSecurityGroupIngressRequest auth_request = AuthorizeSecurityGroupIngressRequest.builder() .groupName(group_name) .ipPermissions(ip_perm, ip_perm2) .build(); AuthorizeSecurityGroupIngressResponse auth_response = ec2.authorizeSecurityGroupIngress(auth_request);

要向安全组添加出口规则,请在 AuthorizeSecurityGroupEgressRequest 中向 Ec2ClientauthorizeSecurityGroupEgress 方法提供相似的数据。

请参阅 GitHub 上的完整示例

描述安全组

要描述您的安全组或获取相关信息,请调用 Ec2ClientdescribeSecurityGroups 方法。该方法返回 DescribeSecurityGroupsResponse,使用它后,您可以通过调用其 securityGroups 方法(返回一个 SecurityGroup 对象的列表)来访问安全组的列表。

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.DescribeSecurityGroupsRequest; import software.amazon.awssdk.services.ec2.model.DescribeSecurityGroupsResponse; import software.amazon.awssdk.services.ec2.model.SecurityGroup;

代码

Ec2Client ec2 = Ec2Client.create(); DescribeSecurityGroupsRequest request = DescribeSecurityGroupsRequest.builder() .groupIds(group_id).build(); DescribeSecurityGroupsResponse response = ec2.describeSecurityGroups(request);

请参阅 GitHub 上的完整示例

正在删除安全组

要删除安全组,请调用 Ec2ClientdeleteSecurityGroup 方法,将其传递给一个包含要删除安全组 ID 的 DeleteSecurityGroupRequest

导入

import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.DeleteSecurityGroupRequest; import software.amazon.awssdk.services.ec2.model.DeleteSecurityGroupResponse;

代码

Ec2Client ec2 = Ec2Client.create(); DeleteSecurityGroupRequest request = DeleteSecurityGroupRequest.builder() .groupId(group_id) .build(); DeleteSecurityGroupResponse response = ec2.deleteSecurityGroup(request);

请参阅 GitHub 上的完整示例

更多信息