

 適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)，以繼續接收新功能、可用性改善和安全性更新。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立 Amazon EC2 安全群組
<a name="create-security-group"></a>

## EC2-Classic 正在淘汰
<a name="retiringEC2Classic"></a>

**警告**  
我們將於 2022 年 8 月 15 日淘汰 EC2-Classic。建議您從 EC2-Classic 遷移至 VPC。如需詳細資訊，請參閱部落格文章 [EC2-Classic-Classic Networking 正在淘汰 – 以下說明如何準備](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)。

建立*安全群組*，做為虛擬防火牆，控制一或多個 EC2 執行個體的網路流量。根據預設， 會將您的執行個體與不允許傳入流量的安全群組建立 Amazon EC2 關聯。您可以建立允許您的 EC2 執行個體接受特定連接的安全群組。例如，如果您需要連線到 Linux 執行個體，您必須設定安全群組以允許 SSH 流量。您可以使用 Amazon EC2 主控台或 建立安全群組 適用於 Java 的 AWS SDK。

您可以建立安全群組，提供於 EC2-Classic 或 EC2-VPC 使用。如需 EC2-Classic 和 EC2-VPC 的詳細資訊，請參閱《Linux 執行個體 Amazon EC2 使用者指南》中的[支援的平台](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html)。

如需使用 Amazon EC2 主控台建立安全群組的詳細資訊，請參閱《Linux 執行個體 Amazon EC2 使用者指南》中的[Amazon EC2 安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)。

1. 建立和初始化 [CreateSecurityGroupRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/CreateSecurityGroupRequest.html) 執行個體。使用 [withGroupName](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/CreateSecurityGroupRequest.html#withGroupName-java.lang.String-) 方法來設定安全群組名稱，並使用 [withDescription](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/CreateSecurityGroupRequest.html#withDescription-java.lang.String-) 方法來設定安全群組描述，如下所示：

   ```
   CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest();
   csgr.withGroupName("JavaSecurityGroup").withDescription("My security group");
   ```

   安全群組名稱在您初始化 Amazon EC2 用戶端的 AWS 區域中必須是唯一的。您必須使用 US-ASCII 字元做為安全群組名稱和描述。

1. 將請求物件做為參數傳遞至 [createSecurityGroup](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/AmazonEC2.html#createSecurityGroup-com.amazonaws.services.ec2.model.CreateSecurityGroupRequest-) 方法。方法會傳回 [CreateSecurityGroupResult](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/CreateSecurityGroupResult.html) 物件，如下所示：

   ```
   CreateSecurityGroupResult createSecurityGroupResult =
       amazonEC2Client.createSecurityGroup(csgr);
   ```

   如果您嘗試建立與現有安全群組同名的安全群組， 會`createSecurityGroup`擲回例外狀況。

根據預設，新的安全群組不允許任何傳入流量到您的 Amazon EC2 執行個體。若要允許傳入流量，您必須明確授權安全群組傳入。您可以為個別 IP 地址、一系列 IP 地址、特定通訊協定和 TCP/UDP 連接埠授權輸入。

1. 建立和初始化 [IpPermission](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/IpPermission.html) 執行個體。使用 [withIpv4Ranges](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/IpPermission.html#withIpv4Ranges-java.util.Collection-) 方法設定 IP 地址的範圍以授權輸入，並使用 [withIpProtocol](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/IpPermission.html#withIpProtocol-java.lang.String-) 方法設定 IP 通訊協定。使用 [withFromPort](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/IpPermission.html#withFromPort-java.lang.Integer-) 和 [withToPort](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/IpPermission.html#withToPort-java.lang.Integer-) 方法指定連接埠範圍以授權輸入，如下所示：

   ```
   IpPermission ipPermission =
       new IpPermission();
   
   IpRange ipRange1 = new IpRange().withCidrIp("111.111.111.111/32");
   IpRange ipRange2 = new IpRange().withCidrIp("150.150.150.150/32");
   
   ipPermission.withIpv4Ranges(Arrays.asList(new IpRange[] {ipRange1, ipRange2}))
               .withIpProtocol("tcp")
               .withFromPort(22)
               .withToPort(22);
   ```

   必須符合您在 `IpPermission` 物件中指定的所有條件，才能允許輸入。

   使用 CIDR 表示法指定 IP 地址。如果您將通訊協定指定為 TCP/UDP，則必須提供來源連接埠和目的地連接埠。只有在您指定 TCP 或 UDP 時，才能授權連接埠。

1. 建立和初始化 [AuthorizeSecurityGroupIngressRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/AuthorizeSecurityGroupEgressRequest.html) 執行個體。使用 `withGroupName`方法指定安全群組名稱，並將您先前初始化的`IpPermission`物件傳遞至 [withIpPermissions](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/model/AuthorizeSecurityGroupEgressRequest.html#withIpPermissions-com.amazonaws.services.ec2.model.IpPermission…​-) 方法，如下所示：

   ```
   AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest =
       new AuthorizeSecurityGroupIngressRequest();
   
   authorizeSecurityGroupIngressRequest.withGroupName("JavaSecurityGroup")
                                       .withIpPermissions(ipPermission);
   ```

1. 將請求物件傳遞至 [authorizeSecurityGroupIngress](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/AmazonEC2Client.html#authorizeSecurityGroupIngress-com.amazonaws.services.ec2.model.AuthorizeSecurityGroupIngressRequest-) 方法，如下所示：

   ```
   amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);
   ```

   如果您`authorizeSecurityGroupIngress`使用已授權輸入 IP 地址呼叫 ，則 方法會擲回例外狀況。在呼叫 之前，建立並初始化新的`IpPermission`物件，以授權不同 IPs、連接埠和通訊協定的輸入`AuthorizeSecurityGroupIngress`。

每當您呼叫 [authorizeSecurityGroupIngress](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/AmazonEC2Client.html#authorizeSecurityGroupIngress-com.amazonaws.services.ec2.model.AuthorizeSecurityGroupIngressRequest-) 或 [authorizeSecurityGroupEgress](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/ec2/AmazonEC2Client.html#authorizeSecurityGroupEgress-com.amazonaws.services.ec2.model.AuthorizeSecurityGroupEgressRequest-) 方法時，就會將規則新增至您的安全群組。