

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

# 教學課程：使用介面 VPC 端點連線至 Amazon Keyspaces
<a name="vpc-endpoints-tutorial"></a>

本教學課程會逐步引導您設定和使用 Amazon Keyspaces 的介面 VPC 端點。

*介面 VPC 端點*可在 Amazon VPC 和 Amazon Keyspaces 中執行的虛擬私有雲端 (VPC) 之間啟用私有通訊。介面 VPC 端點採用 技術 AWS PrivateLink，這項 AWS 服務可啟用 VPCs和 AWS 服務之間的私有通訊。如需詳細資訊，請參閱[搭配界面 VPC 端點使用 Amazon Keyspaces](vpc-endpoints.md)。

**Topics**
+ [教學的先決條件和考量事項](vpc-endpoints-tutorial.before-you-begin.md)
+ [步驟 1：啟動 Amazon EC2 執行個體](vpc-endpoints-tutorial.launch-ec2-instance.md)
+ [步驟 2：設定您的 Amazon EC2 執行個體](vpc-endpoints-tutorial.configure-ec2-instance.md)
+ [步驟 3：建立 Amazon Keyspaces 的 VPC 端點](vpc-endpoints-tutorial.create-endpoint.md)
+ [步驟 4：設定 VPC 端點連線的許可](vpc-endpoints-tutorial.permissions.md)
+ [步驟 5：使用 CloudWatch 設定監控](vpc-endpoints-tutorial.monitoring.md)
+ [步驟 6：（選用） 為應用程式設定連線集區大小的最佳實務](vpc-endpoints-tutorial.connections.md)
+ [步驟 7：（選用） 清除](vpc-endpoints-tutorial.clean-up.md)

# 教學的先決條件和考量事項
<a name="vpc-endpoints-tutorial.before-you-begin"></a>

開始本教學課程之前，請遵循中的 AWS 設定說明[存取 Amazon Keyspaces （適用於 Apache Cassandra)](accessing.md)。這些步驟包括註冊 AWS 和建立可存取 Amazon Keyspaces 的 AWS Identity and Access Management (IAM) 主體。請記下 IAM 使用者的名稱和存取金鑰，因為您稍後在本教學課程中會需要它們。

在本教學稍後使用 VPC 端點建立具有名稱`myKeyspace`和至少一個資料表的金鑰空間，以測試連線。您可以在 中找到詳細說明[Amazon Keyspaces 入門 （適用於 Apache Cassandra)](getting-started.md)。

完成先決條件步驟後，請繼續 [步驟 1：啟動 Amazon EC2 執行個體](vpc-endpoints-tutorial.launch-ec2-instance.md)。

# 步驟 1：啟動 Amazon EC2 執行個體
<a name="vpc-endpoints-tutorial.launch-ec2-instance"></a>

在此步驟中，您會在預設的 Amazon VPC 中啟動 Amazon EC2 執行個體。然後，您可以建立和使用 Amazon Keyspaces 的 VPC 端點。

**啟動 Amazon EC2 執行個體**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 選擇 **Launch Instance** (啟動執行個體) 並執行下列作業：

   從 EC2 主控台儀表板的**啟動執行個體**方塊中，選擇**啟動執行個體**，然後從出現的選項中選擇**啟動執行個體**。

   在**名稱和標籤**下，針對**名稱**輸入執行個體的描述性名稱。

   在**應用程式和作業系統映像 (Amazon Machine Image)** 下：
   + 選擇 **Quick Start**，然後選擇 Ubuntu。這是您的執行個體運行所在的作業系統 (OS)。
   + 在 **Amazon Machine Image (AMI)** 下，您可以使用標記為符合**免費方案資格**的預設映像。*Amazon Machine Image (AMI)* 是可做為執行個體範本的基本組態。

   在**執行個體類型**下：
   + 從**執行個體類型**清單中，選擇預設選取的 **t2.micro **執行個體類型。

   在**金鑰對 （登入）** 下，針對**金鑰對名稱**，選擇本教學課程的下列其中一個選項：
   + 如果您沒有 Amazon EC2 金鑰對，請選擇 **Create a new key pair** (建立新的金鑰對) 並依照指示進行。系統會要求您下載私有金鑰檔案 (*.pem* 檔案）。稍後當您登入 Amazon EC2 執行個體時，您將需要此檔案，因此請注意檔案路徑。
   + 若您已擁有 Amazon EC2 金鑰對，請前往 **Select a key pair** (選取金鑰對)，然後從清單中選擇您的金鑰對。您必須已具備可用的私有金鑰檔案 (*.pem* 檔案) 才能登入您的 Amazon EC2 執行個體。

   在**網路設定**下：
   + 選擇**編輯**。
   + 選擇 **Select an existing security group** (選取現有的安全群組)。
   + 在安全群組清單中，選擇 **default** (預設)。這是您 VPC 的預設安全群組。

   繼續前往**摘要**。
   + 在摘要面板中檢閱執行個體組態的**摘要**。就緒後，選擇**啟動執行個體**。

1. 在新 Amazon EC2 執行個體的完成畫面上，選擇**連線至執行個體**圖磚。下一個畫面顯示連接到新執行個體的必要資訊和必要步驟。請注意下列資訊：
   + 保護金鑰檔案的範例命令
   + 連線字串
   + **公有 IPv4 DNS** 名稱

   記下此頁面上的資訊後，您可以繼續本教學課程的下一個步驟 ([步驟 2：設定您的 Amazon EC2 執行個體](vpc-endpoints-tutorial.configure-ec2-instance.md))。

**注意**  
Amazon EC2 執行個體需要幾分鐘的時間才會變成可用。在您繼續進行下一個步驟之前，請先確定 **Instance State** (執行個體狀態) 為 `running`，並已通過其所有 **Status Checks** (狀態檢查)。

# 步驟 2：設定您的 Amazon EC2 執行個體
<a name="vpc-endpoints-tutorial.configure-ec2-instance"></a>

當您的 Amazon EC2 執行個體可用時，您可以登入並準備第一次使用。

**注意**  
下列步驟假設您從執行 Linux 的電腦連線至 Amazon EC2 執行個體。如需其他連線方式，請參閱《*Amazon EC2 使用者指南*》中的[連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)。

**設定 Amazon EC2 執行個體**

1. 您需要授權傳入 SSH 流量到您的 Amazon EC2 執行個體。若要這樣做，請建立新的 EC2 安全群組，然後將安全群組指派給您的 EC2 執行個體。

   1. 在導覽窗格中，選擇 **Security Groups** (安全群組)。

   1. 選擇 **Create Security Group** (建立安全群組)。在 **Create Security Group** (建立安全群組) 視窗中，執行下列動作：
      + **安全群組名稱** – 輸入安全群組的名稱。例如：`my-ssh-access`
      + **描述** – 輸入安全群組的簡短描述。
      + **VPC** – 選擇您的預設 VPC。
      + 在**傳入規則**區段中，選擇**新增規則**並執行下列動作：
        + **類型** – 選擇 **SSH**。
        + **來源** – 選擇**我的 IP**。
        + 選擇**新增規則**。

      在頁面底部，確認組態設定，然後選擇**建立安全群組**。

   1. 在導覽窗格中，選擇**執行個體**。

   1. 選擇您在 [步驟 1：啟動 Amazon EC2 執行個體](vpc-endpoints-tutorial.launch-ec2-instance.md) 中啟動的 Amazon EC2 執行個體。

   1. 選擇**動作**、選擇**安全**，然後選擇**變更安全群組**。

   1. 在**變更安全群組**中，前往**關聯的安全群組**，然後輸入您在此程序中稍早建立的安全群組 （例如 `my-ssh-access`)。此外，還應選擇現有的 `default` 安全群組。確認組態設定，然後選擇**儲存**。

1. 使用以下命令保護您的私有金鑰檔案免於存取。如果您略過此步驟，連線會失敗。

   ```
   chmod 400 path_to_file/my-keypair.pem
   ```

1. 使用 `ssh` 命令登入您的 Amazon EC2 執行個體，如下列範例所示。

   ```
   ssh -i path_to_file/my-keypair.pem ubuntu@public-dns-name
   ```

   您需要指定私有金鑰檔案 (*.pem* 檔案） 和執行個體的公有 DNS 名稱。(請參閱 [步驟 1：啟動 Amazon EC2 執行個體](vpc-endpoints-tutorial.launch-ec2-instance.md))。

   登入 ID 為 `ubuntu`。不需要任何密碼。

   如需允許連線至 Amazon EC2 執行個體的詳細資訊，以及相關 AWS CLI 指示，請參閱《*Amazon EC2 使用者指南*》中的[授權 Linux 執行個體的傳入流量](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html)。

1. 下載並安裝最新版本的 AWS Command Line Interface。

   1. 安裝 `unzip`。

      ```
      sudo apt install unzip
      ```

   1. 使用 下載 `zip` 檔案 AWS CLI。

      ```
      curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      ```

   1. 解壓縮檔案。

      ```
      unzip awscliv2.zip
      ```

   1. 安裝 AWS CLI。

      ```
      sudo ./aws/install
      ```

   1. 確認 AWS CLI 安裝的版本。

      ```
      aws --version
      ```

      輸出應如下所示：

      ```
      aws-cli/2.9.19 Python/3.9.11 Linux/5.15.0-1028-aws exe/x86_64.ubuntu.22 prompt/off
      ```

1. 設定您的 AWS 登入資料，如下列範例所示。出現提示時，輸入您的 AWS 存取金鑰 ID、私密金鑰和預設區域名稱。

   ```
   aws configure
    
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-1
   Default output format [None]:
   ```

1. 將規則新增至您的 VPCs安全群組，以允許來自 IPv6 地址的傳入 HTTP、HTTPS 和 SSH 存取。

1. 若要確認您的 VPC 端點已正確設定，您必須使用 Amazon Keyspaces 的`cqlsh`連線。如果您使用本機環境或 中的 Amazon Keyspaces CQL 編輯器 AWS 管理主控台，連線會自動通過公有端點，而不是您的 VPC 端點。若要在本教學課程中使用 `cqlsh` 測試您的 VPC 端點連線，請完成 中的設定說明[使用 `cqlsh` 連線至 Amazon Keyspaces](programmatic.cqlsh.md)。

您現在可以為 Amazon Keyspaces 建立雙堆疊 VPC 端點。

# 步驟 3：建立 Amazon Keyspaces 的 VPC 端點
<a name="vpc-endpoints-tutorial.create-endpoint"></a>

在此步驟中，您會使用 為 Amazon Keyspaces 建立雙堆疊 VPC 端點 AWS CLI。若要使用 VPC 主控台建立 VPC 端點，您可以遵循 *AWS PrivateLink 指南*中的[建立 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)說明。篩選**服務名稱**時，請輸入 **Cassandra**。

**使用 建立 VPC 端點 AWS CLI**

1. 開始之前，請確認您可以使用其公有端點與 Amazon Keyspaces 通訊。

   ```
   aws keyspaces list-tables --keyspace-name 'myKeyspace'
   ```

   輸出會顯示包含在指定金鑰空間中的 Amazon Keyspaces 資料表清單。如果您沒有任何資料表，則清單為空白。

   ```
   {
       "tables": [
           {
               "keyspaceName": "myKeyspace",
               "tableName": "myTable1",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/myTable1"
           },
           {
               "keyspaceName": "myKeyspace",
               "tableName": "myTable2",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/myTable2"
           }
       ]
   }
   ```

1. 確認 Amazon Keyspaces 是在目前 AWS 區域中建立 VPC 端點的可用服務。(命令會以粗體文字顯示，後面接著輸出範例。)

   ```
   aws ec2 describe-vpc-endpoint-services
    
   {
       "ServiceNames": [
           "com.amazonaws.us-east-1.cassandra", 
           "com.amazonaws.us-east-1.cassandra-fips"
           "api.aws.us-east-1.cassandra-streams"
       ]
   }
   ```

   如果 Amazon Keyspaces 是 命令輸出中可用的服務之一，您可以繼續建立 VPC 端點。

1. 若要使用啟用 IPv6 的雙堆疊端點連線至 Amazon Keyspaces，請確認您的 VPC 支援 IPv6，並使用 IPv6 支援設定子網路。若要將 IPv6 支援新增至目前僅支援 IPv4 的現有 VPC，請參閱《Amazon VPC 使用者指南》中的 VPC [的 IPv6 支援](https://docs.aws.amazon.com/vpc/latest/userguide/)。 **

1. 確定您的 VPC 識別碼。

   ```
   aws ec2 describe-vpcs
    
   {
       "Vpcs": [
           {
               "OwnerId": "111122223333",
               "InstanceTenancy": "default",
               "Ipv6CidrBlockAssociationSet": [
                   {
                       "AssociationId": "vpc-cidr-assoc-0000aaa0a00a00aa0",
                       "Ipv6CidrBlock": "2600:1f18:e19:7d00::/56",
                       "Ipv6CidrBlockState": {
                           "State": "associated"
                       },
                       "NetworkBorderGroup": "us-east-1",
                       "Ipv6Pool": "Amazon",
                       "Ipv6AddressAttribute": "public",
                       "IpSource": "amazon"
                   }
               ],
               "CidrBlockAssociationSet": [
                   {
                       "AssociationId": "vpc-cidr-assoc-00a0000a",
                       "CidrBlock": "111.11.0.0/16",
                       "CidrBlockState": {
                           "State": "associated"
                       }
                   }
               ],
               "IsDefault": true,
               "BlockPublicAccessStates": {
                   "InternetGatewayBlockMode": "off"
               },
               "VpcId": "vpc-a1234bcd",
               "State": "available",
               "CidrBlock": "111.11.0.0/16",
               "DhcpOptionsId": "dopt-a00aaaaa"
           }
       ]
   }
   ```

   在範例輸出中，VPC ID 為 `vpc-a1234bcd`。

1. 使用篩選條件來收集 VPC 子網路的詳細資訊。

   ```
   aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-a1234bcd"
    
   {
       "Subnets": [
           {
               "AvailabilityZoneId": "use1-az1",
               "MapCustomerOwnedIpOnLaunch": false,
               "OwnerId": "111122223333",
               "AssignIpv6AddressOnCreation": false,
               "Ipv6CidrBlockAssociationSet": [
                   {
                       "AssociationId": "subnet-cidr-assoc-05d75732736740283",
                       "Ipv6CidrBlock": "***********************",
                       "Ipv6CidrBlockState": {
                           "State": "associated"
                       },
                       "Ipv6AddressAttribute": "public",
                       "IpSource": "amazon"
                   }
               ],
               "SubnetArn": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-70b24b16",
               "EnableDns64": false,
               "Ipv6Native": false,
               "PrivateDnsNameOptionsOnLaunch": {
                   "HostnameType": "ip-name",
                   "EnableResourceNameDnsARecord": false,
                   "EnableResourceNameDnsAAAARecord": false
               },
               "BlockPublicAccessStates": {
                   "InternetGatewayBlockMode": "off"
               },
               "SubnetId": "subnet-70b24b16",
               "State": "available",
               "VpcId": "vpc-a1234bcd",
               "CidrBlock": "**********/20",
               "AvailableIpAddressCount": 4089,
               "AvailabilityZone": "us-east-1a",
               "DefaultForAz": true,
               "MapPublicIpOnLaunch": true
           },
           {
               "AvailabilityZoneId": "use1-az2",
               "MapCustomerOwnedIpOnLaunch": false,
               "OwnerId": "111122223333",
               "AssignIpv6AddressOnCreation": false,
               "Ipv6CidrBlockAssociationSet": [
                   {
                       "AssociationId": "subnet-cidr-assoc-0ec6fb253e05b17eb",
                       "Ipv6CidrBlock": "***********************",
                       "Ipv6CidrBlockState": {
                           "State": "associated"
                       },
                       "Ipv6AddressAttribute": "public",
                       "IpSource": "amazon"
                   }
               ],
               "SubnetArn": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-c63ffbe7",
               "EnableDns64": false,
               "Ipv6Native": false,
               "PrivateDnsNameOptionsOnLaunch": {
                   "HostnameType": "ip-name",
                   "EnableResourceNameDnsARecord": false,
                   "EnableResourceNameDnsAAAARecord": false
               },
               "BlockPublicAccessStates": {
                   "InternetGatewayBlockMode": "off"
               },
               "SubnetId": "subnet-c63ffbe7",
               "State": "available",
               "VpcId": "vpc-a1234bcd",
               "CidrBlock": "***********/20",
               "AvailableIpAddressCount": 4087,
               "AvailabilityZone": "us-east-1b",
               "DefaultForAz": true,
               "MapPublicIpOnLaunch": true
           }
       ]
   }
   ```

   在範例輸出中，有兩個可用的子網路 IDs`subnet-70b24b16`和 `subnet-c63ffbe7`。

1. 建立 VPC 端點。對於 `--vpc-id` 參數，請指定上一個步驟的 VPC ID。針對 `--subnet-ids` 參數，指定上一個步驟IDs。使用 `--vpc-endpoint-type` 參數將端點定義為界面。若要建立雙堆疊端點，請使用 `--ip-address-type dualstack`。如需 命令的詳細資訊，請參閱《 *AWS CLI 命令參考*[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html)》中的 。

   ```
   aws ec2 create-vpc-endpoint \
    --vpc-endpoint-type Interface \
    --vpc-id vpc-a1234bcd \
    --ip-address-type dualstack \
    --service-name com.amazonaws.us-east-1.cassandra \
    --subnet-ids subnet-70b24b16 subnet-c63ffbe7
    
   {
       "VpcEndpoint": {
           "VpcEndpointId": "vpce-000000abc111d2ef3",
           "VpcEndpointType": "Interface",
           "VpcId": "vpc-a1234bcd",
           "ServiceName": "com.amazonaws.us-east-1.cassandra",
           "State": "pending",
           "RouteTableIds": [],
           "SubnetIds": [
               "subnet-70b24b16",
               "subnet-c63ffbe7"
           ],
           "Groups": [
               {
                   "GroupId": "sg-0123456789",
                   "GroupName": "default"
               }
           ],
           "IpAddressType": "dualstack",
           "DnsOptions": {
               "DnsRecordIpType": "dualstack"
           },
           "PrivateDnsEnabled": true,
           "RequesterManaged": false,
           "NetworkInterfaceIds": [
               "eni-08cd525f72ea6f1fa",
               "eni-07b1f6c895169d8fb"
           ],
           "DnsEntries": [
               {
                   "DnsName": "vpce-0000000000-1234567.cassandra.us-east-1.vpce.amazonaws.com",
                   "HostedZoneId": "Z7HUB22UULQXV"
               },
               {
                   "DnsName": "vpce-0000000000-1234567-us-east-1a.cassandra.us-east-1.vpce.amazonaws.com",
                   "HostedZoneId": "Z7HUB22UULQXV"
               },
               {
                   "DnsName": "cassandra.us-east-1.amazonaws.com",
                   "HostedZoneId": "ZONEIDPENDING"
               },
               {
                   "DnsName": "cassandra.us-east-1.api.aws",
                   "HostedZoneId": "ZONEIDPENDING"
               }
           ],
           "CreationTimestamp": "2025-09-19T15:19:19.266000+00:00",
           "OwnerId": "111122223333",
           "ServiceRegion": "us-east-1"
       }
   }
   ```

# 步驟 4：設定 VPC 端點連線的許可
<a name="vpc-endpoints-tutorial.permissions"></a>

此步驟中的程序示範如何設定搭配 Amazon Keyspaces 使用 VPC 端點的規則和許可。

**設定新端點的傳入規則，以允許 TCP 傳入流量**

1. 在 Amazon VPC 主控台的左側面板中，選擇**端點**，然後選擇您在先前步驟中建立的端點。

1. 選擇**管理安全群組**，然後選擇與此端點相關聯的安全群組。

1. 選擇**傳入規則**，然後選擇**編輯傳入規則**。

1. 新增**類型**為 **CQLSH / CASSANDRA **的傳入規則。這會將**連接埠範圍**自動設定為 **9142**。

1. 若要儲存新的傳入規則，請選擇**儲存規則**。

**設定 IAM 使用者許可**

1. 確認用於連線至 Amazon Keyspaces 的 IAM 使用者具有適當的許可。在 AWS Identity and Access Management (IAM) 中，您可以使用 AWS 受管政策`AmazonKeyspacesReadOnlyAccess`授予 IAM 使用者對 Amazon Keyspaces 的讀取存取權。

   1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

   1. 在 IAM 主控台儀表板上，選擇 **Users** (使用者)，然後從清單中選擇 IAM 使用者。

   1. 在 **Summary** (摘要) 頁面上，選擇 **Add permissions** (新增許可)。

   1. 選擇 **Attach existing policies directly** (直接連接現有政策)。

   1. 從政策清單中，選擇 **AmazonKeyspacesReadOnlyAccess**，然後選擇**下一步：檢閱**。

   1. 選擇**新增許可**。

1. 確認您可以透過 VPC 端點存取 Amazon Keyspaces。

   ```
   aws keyspaces list-tables --keyspace-name 'my_Keyspace'
   ```

   如果需要，您可以為 Amazon Keyspaces 嘗試其他一些 AWS CLI 命令。如需詳細資訊，請參閱 [AWS CLI 命令參考](https://docs.aws.amazon.com/cli/latest/reference/)。
**注意**  
IAM 使用者或角色存取 Amazon Keyspaces 所需的最低許可是系統資料表的讀取許可，如下列政策所示。如需政策型許可的詳細資訊，請參閱 [Amazon Keyspaces 身分型政策範例](security_iam_id-based-policy-examples.md)。

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "cassandra:Select"
            ],
            "Resource":[
               "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
            ]
         }
      ]
   }
   ```

1. 使用 VPC 授予 IAM 使用者對 Amazon EC2 執行個體的讀取存取權。

   當您搭配 VPC 端點使用 Amazon Keyspaces 時，您需要將存取 Amazon Keyspaces *唯讀許可的 IAM 使用者或角色授予 Amazon EC2 執行個體和 VPC，以收集端點和網路介面資料*。Amazon Keyspaces 會將此資訊存放在`system.peers`資料表中，並使用它來管理連線。
**注意**  
受管政策`AmazonKeyspacesReadOnlyAccess_v2`並`AmazonKeyspacesFullAccess`包含必要許可，讓 Amazon Keyspaces 存取 Amazon EC2 執行個體，以讀取可用介面 VPC 端點的相關資訊。

   1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 在 IAM 主控台儀表板上，選擇**政策**。

   1. 選擇**建立政策**，然後選擇 **JSON** 標籤。

   1. 複製下列政策，然後選擇**下一步：標籤**。

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"ListVPCEndpoints",
               "Effect":"Allow",
               "Action":[
                  "ec2:DescribeNetworkInterfaces",
                  "ec2:DescribeVpcEndpoints"
               ],
               "Resource": "*"
            }
         ]
      }
      ```

   1. 選擇**下一步：檢閱**，輸入`keyspacesVPCendpoint`政策的名稱，然後選擇**建立政策**。

   1. 在 IAM 主控台儀表板上，選擇 **Users** (使用者)，然後從清單中選擇 IAM 使用者。

   1. 在 **Summary** (摘要) 頁面上，選擇 **Add permissions** (新增許可)。

   1. 選擇 **Attach existing policies directly** (直接連接現有政策)。

   1. 從政策清單中，選擇 **keyspacesVPCendpoint**，然後選擇**下一步：檢閱**。

   1. 選擇**新增許可**。

1. 若要驗證 Amazon Keyspaces `system.peers`資料表是否使用 VPC 資訊更新，請使用 從您的 Amazon EC2 執行個體執行下列查詢`cqlsh`。如果您在步驟 2 中尚未在 Amazon EC2 執行個體`cqlsh`上安裝 ，請遵循 中的指示[使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。

   ```
   SELECT * FROM system.peers;
   ```

   輸出會傳回具有私有 IPv6 IP 地址的節點，視您區域中的 VPC 和子網路設定而定 AWS 。

   ```
    peer                                    | data_center | host_id                              | preferred_ip                            | rack      | release_version | rpc_address                             | schema_version                       | tokens
   -----------------------------------------+-------------+--------------------------------------+-----------------------------------------+-----------+-----------------+-----------------------------------------+--------------------------------------+---------------------------------------------
     2600:1111:2222:3333:283b:8e6:d04f      |   us-east-1 | dddddddd-7a22-3582-a73d-49338a686a53 |  2600:1111:2222:3333:283b:8e6:d04f      | us-east-1 |          3.11.2 |  2600:1111:2222:3333:283b:8e6:d04f      | 05deae2d-6405-494d-a965-c0e5836bcb3c |  {'85070591730234615865843651857942052863'}
    2600:1111:2222:4444:7d26:5a09:1b44      |   us-east-1 | 66666666-035d-37ef-a247-19a6a867ab09 | 2600:1111:2222:4444:7d26:5a09:1b44      | us-east-1 |          3.11.2 | 2600:1111:2222:4444:7d26:5a09:1b44      | 05deae2d-6405-494d-a965-c0e5836bcb3c | {'170141183460469231731687303715884105726'}
   ```
**注意**  
您必須使用 Amazon Keyspaces 的`cqlsh`連線，以確認您的 VPC 端點已正確設定。如果您使用本機環境或 中的 Amazon Keyspaces CQL 編輯器 AWS 管理主控台，連線會自動通過公有端點，而不是您的 VPC 端點。如果您看到九個 IP 地址，這些是 Amazon Keyspaces 自動寫入`system.peers`資料表以進行公有端點連線的項目。

# 步驟 5：使用 CloudWatch 設定監控
<a name="vpc-endpoints-tutorial.monitoring"></a>

此步驟說明如何使用 Amazon CloudWatch 來監控與 Amazon Keyspaces 的 VPC 端點連線。

AWS PrivateLink 會將介面端點的資料點發佈至 CloudWatch。您可以使用指標來確認系統的運作符合預期。CloudWatch 中的`AWS/PrivateLinkEndpoints`命名空間包含介面端點的指標。如需詳細資訊，請參閱《 *AWS PrivateLink 指南*》中的 [的 CloudWatch 指標 AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-cloudwatch-metrics.html)。

**使用 VPC 端點指標建立 CloudWatch 儀表板**

1. 在 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 ​CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Dashboards** (儀表板)。然後選擇**建立儀表板**。輸入儀表板的名稱，然後選擇**建立**。

1. 在**新增小工具**下，選擇**數字**。

1. 在**指標**下，選擇 **AWS/PrivateLinkEndpoints**。

1. 選擇**端點類型、服務名稱、VPC 端點 ID、VPC ID**。

1. 選取指標 `ActiveConnections`和 `NewConnections`，然後選擇**建立小工具**。

1. 儲存儀表板。

`ActiveConnections` 指標定義為端點在過去一分鐘期間內收到的並行作用中連線數目。`NewConnections` 指標定義為過去一分鐘期間內透過端點建立的新連線數目。

如需建立儀表板的詳細資訊，請參閱《*CloudWatch 使用者指南*》中的[建立儀表板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create_dashboard.html)。

# 步驟 6：（選用） 為應用程式設定連線集區大小的最佳實務
<a name="vpc-endpoints-tutorial.connections"></a>

在本節中，我們概述如何根據應用程式的查詢輸送量需求，判斷理想的連線集區大小。

Amazon Keyspaces 每個 TCP 連線每秒最多允許 3，000 個 CQL 查詢。因此，驅動程式可以使用 Amazon Keyspaces 建立的連線數幾乎沒有限制。不過，我們建議您將連線集區大小符合應用程式的需求，並在搭配 VPC 端點連線使用 Amazon Keyspaces 時考慮可用的端點。

您可以在用戶端驅動程式中設定連線集區大小。例如，根據本機集區大小 **2** 和跨 **3** 個可用區域建立的 VPC 介面端點，驅動程式會建立 **6** 個用於查詢的連線 （總共 7 個，其中包括控制連線）。使用這 6 個連線，您每秒最多可支援 18，000 個 CQL 查詢。

如果您的應用程式需要每秒支援 40，000 個 CQL 查詢，請從判斷所需連線集區大小所需的查詢數目向後工作。若要支援每秒 40，000 個 CQL 查詢，您需要將本機集區大小設定為至少 5 個，這支援每秒至少 45，000 個 CQL 查詢。

您可以使用 `AWS/Cassandra` 命名空間中的 `PerConnectionRequestRateExceeded` CloudWatch 指標，監控您是否超過每個連線每秒最大操作數的配額。此`PerConnectionRequestRateExceeded`指標會顯示對 Amazon Keyspaces 的請求數量，這些請求超過每個連線請求率的配額。

此步驟中的程式碼範例示範如何在使用介面 VPC 端點時估計和設定連線集區。

------
#### [ Java ]

您可以在 Java 驅動程式中設定每個集區的連線數。如需 Java 用戶端驅動程式連線的完整範例，請參閱 [使用 Cassandra Java 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces](using_java_driver.md)。

當用戶端驅動程式啟動時，首先會為管理任務建立控制連線，例如結構描述和拓撲變更。然後建立額外的連線。

在下列範例中，本機集區大小驅動程式組態指定為 2。如果 VPC 端點跨 VPC 內的 3 個子網路建立，這會導致介面端點在 CloudWatch `NewConnections`中為 7，如下列公式所示。

```
NewConnections = 3 (VPC subnet endpoints created across) * 2 (pool size) + 1 ( control connection)
```

```
datastax-java-driver {

    basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"]
    advanced.auth-provider{
        class = PlainTextAuthProvider
           username = "ServiceUserName"
           password = "ServicePassword"
    }
    basic.load-balancing-policy {
        local-datacenter = "us-east-1"
        slow-replica-avoidance = false           
    }

    advanced.ssl-engine-factory {
        class = DefaultSslEngineFactory
        truststore-path = "./src/main/resources/cassandra_truststore.jks"
        truststore-password = "my_password"
        hostname-validation = false
      }
    advanced.connection {
        pool.local.size = 2
          }
}
```

如果作用中連線的數量不符合您設定的集區大小 （跨子網路彙總） \$1 1 個控制連線，則會阻止建立連線。

------
#### [ Node.js ]

您可以在 Node.js 驅動程式中設定每個集區的連線數。如需 Node.js 用戶端驅動程式連線的完整範例，請參閱 [使用 Cassandra Node.js 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces](using_nodejs_driver.md)。

以下程式碼範例使用數位憑證的 *keyspaces-bundle.pem 檔案。*如需詳細資訊，請參閱[開始之前](using_nodejs_driver.md#using_nodejs_driver.BeforeYouBegin)。

對於下列程式碼範例，本機集區大小驅動程式組態指定為 1。如果 VPC 端點跨 VPC 內的 4 個子網路建立，這會導致介面端點在 CloudWatch `NewConnections`中為 5，如下列公式所示。

```
NewConnections = 4 (VPC subnet endpoints created across) * 1 (pool size) + 1 ( control connection)
```

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const types = cassandra.types;
const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');
const sslOptions1 = {
         ca: [
                    fs.readFileSync('/home/ec2-user/keyspaces-bundle.pem', 'utf-8')],
                    host: 'cassandra.us-east-1.amazonaws.com',
                    rejectUnauthorized: true
        };
const client = new cassandra.Client({
                   contactPoints: ['cassandra.us-east-1.amazonaws.com'],
                   localDataCenter: 'us-east-1',
                   pooling: { coreConnectionsPerHost: { [types.distance.local]: 1 } },
                   consistency: types.consistencies.localQuorum,
                   queryOptions: { isIdempotent: true },
                   authProvider: auth,
                   sslOptions: sslOptions1,
                   protocolOptions: { port: 9142 }
        });
```

------

# 步驟 7：（選用） 清除
<a name="vpc-endpoints-tutorial.clean-up"></a>

如果您想要刪除在本教學課程中建立的資源，請遵循這些程序。

**移除 Amazon Keyspaces 的 VPC 端點**

1. 登入 Amazon EC2 執行個體。

1. 判斷用於 Amazon Keyspaces 的 VPC 端點 ID。如果您省略`grep`參數，則會顯示所有服務的 VPC 端點資訊。

   ```
   aws ec2 describe-vpc-endpoint-services | grep ServiceName | grep cassandra
    
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2000-00-00",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-a1234bcd", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.cassandra", 
           "RouteTableIds": [], 
           "VpcEndpointId": "vpce-1a23b4c5", 
           "CreationTimestamp": "2025-07-26T22:00:14Z"
       }
   }
   ```

   在範例輸出中，VPC 端點 ID 為 *vpce-1a23b4c5*。請務必將此值取代為您自己的值。

1. 刪除 VPC 端點。

   ```
   aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-1a23b4c5
    
   {
       "Unsuccessful": []
   }
   ```

   空白陣列 `[]` 表示成功 (沒有未成功的請求)。

**若要終止 Amazon EC2 執行個體**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選擇 Amazon EC2 執行個體。

1. 選擇**動作**，選擇**執行個體狀態**，然後選擇**終止**。

1. 在確認視窗中，請選擇 **Yes, Terminate** (是，終止)。