

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: インターフェイス VPC エンドポイントを使用して Amazon Keyspaces に接続する
<a name="vpc-endpoints-tutorial"></a>

このチュートリアルでは、Amazon Keyspaces 用のインターフェイス VPC エンドポイントのセットアップ方法と使用方法を説明します。

*インターフェイス VPC エンドポイント*では、Amazon VPC で実行されている仮想プライベートクラウド (VPC) と Amazon Keyspaces 間のプライベート通信ができます。インターフェイス VPC エンドポイントは AWS PrivateLink、VPCsと AWS サービス間のプライベート通信を可能にする 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)。これらのステップには、Amazon Keyspaces にアクセスできる AWS Identity and Access Management (IAM) プリンシパルへのサインアップ AWS と作成が含まれます。IAM ユーザーの名前とアクセスキーは、このチュートリアルの後半で必要になるので、メモしておいてください。

このチュートリアルの後半では、VPC エンドポイントからの接続をテストします。そのために、名前 `myKeyspace` のキー空間と少なくとも 1 つのテーブルを作成します。詳細な手順については、「[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. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. [**Launch Instance (インスタンスを起動)**] を選択して、以下を実行します。

   EC2 コンソールダッシュボードから、[**Launch instance (インスタンスを起動する)**] ボックス内で [**Launch instance (インスタンスを起動する)**] を選び、表示されるオプションから [**Launch instance (インスタンスを起動する)**] を選びます。

   [**Names and tags (名前とタグ)**] の [**Name (名前)**] には、インスタンス用にわかりやすい名前を入力します。

   アプリケーションと OS イメージ (Amazon マシンイメージ):
   + [**Quick Start (クイックスタート)**] を選択し、[Ubuntu] を選択します。これが、インスタンスのオペレーティングシステム (OS) です。
   + **Amazon マシンイメージ (AMI)** では、**無料利用枠対象**としてマークされているデフォルトのイメージを使用できます。[Amazon Machine Image (AMI) (Amazon マシンイメージ (AMI))] はインスタンスのテンプレートとして機能する基本設定です。

   [**インスタンスタイプ**] で:
   + [**インスタンスタイプ**] リストから、**t2.micro** インスタンスタイプを選択します。デフォルトではこれが選択されています。

   [**キーペア名**] の場合、[**キーペア (ログイン)**] で、このチュートリアルで使用する次のオプションのいずれかを選択します。
   + Amazon EC2 キーペアがない場合は、[**Create a new key pair (新しいキーペアの作成)**] を選択して画面に表示される指示に従います。プライベートキーファイル (*.pem* ファイル) のダウンロードを求めるプロンプトが表示されます。このファイルは、後で Amazon EC2 インスタンスにログインするときに必要になるので、ファイルパスを書き留めておいてください。
   + 既存の Amazon EC2 キーペアがすでにある場合は、**[Select a key pair (キーペアの選択)]** を選択して、リストからキーペアを選択します。Amazon EC2 インスタンスにログインするには、既にプライベートキーファイル (*.pem* ファイル) が利用可能になっている必要があります。

   [**ネットワーク設定**] の下:
   + [**Edit (編集)**] を選択します。
   + [Select an existing security group (既存のセキュリティグループの選択)] を選択します。
   + セキュリティグループのリストで、[**default (デフォルト)**] を選択します。これは VPC のデフォルトのセキュリティグループです。

   [**概要**] に進みます。
   + [**概要**] パネルで、インスタンス設定の概要を確認します。準備ができたら、[**インスタンスの起動**] を選択します。

1. 新しい Amazon EC2 インスタンスの完了画面で、[**インスタンスに接続**] タイルを選択します。次の画面には、新しいインスタンスに接続するために必要な情報と必要なステップが表示されます。以下の情報を書き留めておきます。
   + キーファイルを保護するサンプルコマンド
   + 接続文字列
   + **パブリック IPv4 DNS 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. Amazon EC2 インスタンスへのインバウンド SSH トラフィックを認可します。このために、新しい EC2 セキュリティグループを作成して、そのセキュリティグループを EC2 インスタンスに割り当てます。

   1. ナビゲーションペインで、[**Security Groups (セキュリティグループ)**] を選択します。

   1. [**Create Security Group** (セキュリティグループの作成)] を選択します。[**セキュリティグループの作成**] ウィンドウで、以下を行います。
      + [**Security group name (セキュリティグループ名)**] に、セキュリティグループの名前を入力します。例: `my-ssh-access`
      + [**Description (説明)**] — セキュリティグループの簡単な説明を入力します。
      + **VPC** — デフォルトの VPCを選択します。
      + [**Inbound rules (インバウンドルール)**] セクションで、[**Add Rule (ルールの追加)**] を選択して、次の操作を行います
        + [**Type (タイプ)**] — **SSH** を選択します。
        + [**Source (ソース)**] — **My 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.  AWS CLIで `zip` ファイルをダウンロードします。

      ```
      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. IPv6 アドレスからのインバウンド HTTP、HTTPS、および SSH アクセスを許可するルールを VPCs セキュリティグループに追加します。

1. VPC エンドポイントが正しく設定されていることを確認するには、Amazon Keyspaces `cqlsh`への接続を使用する必要があります。でローカル環境または Amazon Keyspaces CQL エディタを使用する場合 AWS マネジメントコンソール、接続は VPC エンドポイントではなくパブリックエンドポイントを自動的に経由します。このチュートリアルの VPC エンドポイント接続のデストで `cqlsh` を使用するには、事前に、[`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 が コマンドの出力で使用可能なサービスの 1 つである場合は、VPC エンドポイントの作成に進むことができます。

1. IPv6 対応デュアルスタックエンドポイントを使用して Amazon Keyspaces に接続するには、VPC が IPv6 をサポートしていることを確認し、IPv6 をサポートするサブネットを設定します。現在 IPv4 のみをサポートしている既存の VPC に IPv6 サポートを追加するには、「Amazon [ VPC ユーザーガイド」の「VPC の IPv6 サポート](https://docs.aws.amazon.com/vpc/latest/userguide/)」を参照してください。 IPv4 **

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
           }
       ]
   }
   ```

   出力例では、2 つのサブネット ID (`subnet-70b24b16` と `subnet-c63ffbe7`) を使用できます。

1. VPC エンドポイントを作成します。`--vpc-id` パラメータで、前のステップの VPC ID を指定します。`--subnet-ids` パラメータで、前のステップのサブネット ID を指定します。`--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://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**、[**Next: Review (次へ: 確認)**] を選択します。

   1. [**Add permissions (許可の追加)**] を選択します。

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. IAM ユーザーに VPC の Amazon EC2 インスタンスの読み取りアクセス権限を与えます。

   Amazon Keyspaces を VPC エンドポイントで使用するとき、Amazon Keyspaces にアクセスする IAM ユーザーまたはロールに、*Amazon EC2 インスタンスと VPC に対する読み取り専用アクセス権限を設定して、エンドポイントとネットワークインターフェイスのデータを収集する必要があります*。Amazon Keyspaces はこの情報を `system.peers` テーブルに保存し、それで接続を管理します。
**注記**  
管理ポリシー `AmazonKeyspacesReadOnlyAccess_v2` と `AmazonKeyspacesFullAccess` には、Amazon Keyspaces が Amazon EC2 インスタンスにアクセスして、使用可能なインターフェイス VPC エンドポイントに関する情報を読み取るためのアクセス権限が設定されています。

   1. にサインイン AWS マネジメントコンソール し、[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**] を選択し、次に [**Next: Review (次へ: 確認)**] を選択します。

   1. [**Add permissions (許可の追加)**] を選択します。

1. Amazon Keyspaces `system.peers` テーブルが VPC 情報で更新されていることを確認するには、`cqlsh` で Amazon EC2 インスタンスから次のクエリを実行します。ステップ 2 で Amazon EC2 インスタンスに `cqlsh` をインストールしていない場合は、[`cqlsh-expansion` による Amazon Keyspaces までの接続](programmatic.cqlsh.md#using_cqlsh) の指示に従ってください。

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

   出力は、 AWS リージョンの VPC とサブネットの設定に応じて、プライベート IPv6 IP アドレスを持つノードを返します。

   ```
    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 エンドポイントが正しく設定されていることを確認してください。ローカル環境または AWS マネジメントコンソールの Amazon Keyspaces CQL エディタを使用する場合、接続ルートは VPC エンドポイントではなくパブリックエンドポイントを自動的に経由します。9 個の 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 ガイド*』の「 AWS PrivateLink用の「CloudWatch メトリクス」を参照してください。

**VPC エンドポイントメトリクスを含む CloudWatch ダッシュボードを作成する**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、**[ダッシュボード]** を選択します。次に、[**ダッシュボードを作成**] を選択します。ダッシュボードの名前を入力し、[**作成**] を選択します。

1. [**ウィジェットを追加]** で [**番号**] を選択します。

1. [**メトリクス**] で [**AWS/プライベートリンクエンドポイント**] を選択します。

1. **エンドポイントタイプ、サービス名、VPC エンドポイント ID、VPC ID** を選択します。

1. グラフ化するメトリクス `ActiveConnections` と `NewConnections` を選択し、[**ウィジェットを作成**] を選択します。

1. ダッシュボードを保存します。

`ActiveConnections` メトリクスは、過去 1 分間にエンドポイントが受信した同時アクティブ接続の数として定義されます。`NewConnections` メトリクスは、過去 1 分間にエンドポイントを通じて確立された新しい接続の数として定義されます。

ダッシュボードの作成の詳細については、『*CloudWatch ユーザーガイド*』の「[ダッシュボードを作成](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create_dashboard.html)」を参照してください。

# ステップ 6: (オプション) アプリケーションの接続プールサイズを設定するベストプラクティス
<a name="vpc-endpoints-tutorial.connections"></a>

このセクションでは、アプリケーションのクエリースループット要件に基づいて理想的な接続プールサイズを決定する方法の概要を説明します。

Amazon Keyspaces では、TCP 接続ごとに 1 秒あたり最大 3,000 件の CQL クエリを実行できます。そのため、ドライバーが Amazon Keyspaces で確立できる接続数には実質的に制限がありません。ただし、Amazon Keyspaces を VPC エンドポイント接続で使用する場合は、接続プールのサイズをアプリケーションの要件に合わせて、使用可能なエンドポイント数を検討することをお勧めします。

接続プールのサイズはクライアントドライバーで設定します。たとえば、ローカルプールサイズが **2** で、**3** つのアベイラビリティーゾーンに作成された VPC インターフェイスエンドポイントに基づいて、ドライバーはクエリ用に **6** 本の接続（制御接続を含む合計 7 本）を確立します。これら 6 本の接続を使用すると、1 秒あたり最大 18,000 件の CQL クエリをサポートできます。

アプリケーションで 1 秒あたり 40,000 件の CQL クエリをサポートする必要がある場合は、必要なクエリの数から逆算して、必要な接続プールのサイズを決定します。1 秒あたり 40,000 件の CQL クエリをサポートするには、ローカルプールのサイズを 5 以上に設定する必要があります。これにより、1 秒あたり最低 45,000 件の CQL クエリをサポートできます。

`AWS/Cassandra` 名前空間の `PerConnectionRequestRateExceeded` CloudWatch メトリクスで、接続 1 つあたりの 1 秒あたりの最大オペレーション数のクォータを超えているかどうかをモニタリングできます。`PerConnectionRequestRateExceeded` メトリクスは、接続ごとのリクエストレートのクォータを超える Amazon Keyspaces へのリクエスト数を示します。

このステップのコード例では、インターフェイス VPC エンドポイントを使用する際の接続プールのサイズを見積もって設定する方法を示します。

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

Java ドライバーでは、プールごとの接続数を設定できます。Java クライアントドライバ接続の一式の例については、「[Cassandra Java クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_java_driver.md)」を参照してください。

クライアントドライバーを起動すると、まず、スキーマやトポロジーの変更などの管理タスクのための制御接続がつながります。次に、追加の接続が作成されます。

次の例では、ローカルプールサイズドライバー設定は 2 に指定されています。VPC エンドポイントが VPC 内の 3 つのサブネットにわたって作成されている場合、次の式に示すように、インターフェイスエンドポイントは CloudWatch で 7 `NewConnections` になります。

```
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 で 5 `NewConnections`になります。

```
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. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. Amazon EC2 インスタンスを選択します。

1. [**Actions (アクション)**] に、[**Instance State (インスタンスの状態)**] を選択して、[**Terminate (終了)**] の順に選択します。

1. 確認ウィンドウで、[**Yes, Terminate (はい、終了します)**] を選択します。