

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

# Cassandra クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="programmatic.drivers"></a>

Amazon Keyspaces への接続には、サードパーティー製の多数のオープンソース Cassandra ドライバーを使用できます。Amazon Keyspaces は、Apache Cassandra バージョン 3.11.2 に対応している Cassandra ドライバーと互換性があります。以下に、Amazon Keyspaces での使用が推奨されるテスト済みのドライバーと最新バージョンを紹介します。
+ `Java v3.3`
+ `Java v4.17`
+ `Python Cassandra-driver 3.29.1`
+ `Node.js cassandra driver -v 4.7.2`
+ `GO using GOCQL v1.6`
+ `.NET CassandraCSharpDriver -v 3.20.1`

Cassandra ドライバーの詳細については、「[Apache Cassandra Client drivers(Apache Cassandra クライアントドライバー)](http://cassandra.apache.org/doc/latest/getting_started/drivers.html)」を参照してください。

**注記**  
円滑に使用を開始するために、一般的なドライバーを使用して Amazon Keyspaces への接続を確立するエンドツーエンドのコード例を確認してダウンロードすることができます。GitHub で「[Amazon Keyspaces examplesmazon Keyspaces の例](https://github.com/aws-samples/amazon-keyspaces-examples)」を参照してください。

この章のチュートリアルには、Amazon Keyspaces への接続が正常に確立されたことを確認するための簡易 CQL クエリが含まれています。Amazon Keyspaces エンドポイントへの接続後にキースペースとテーブルを操作する方法については、「[Amazon Keyspaces (Apache Cassandra 向け) の CQL 言語リファレンス](cql.md)」を参照してください。Amazon VPC エンドポイントから Amazon Keyspaces に接続する方法を示すステップバイステップチュートリアルについては、「[チュートリアル: インターフェイス VPC エンドポイントを使用して Amazon Keyspaces に接続する](vpc-endpoints-tutorial.md)」を参照してください。

**Topics**
+ [Cassandra Java クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_java_driver.md)
+ [Cassandra Python クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_python_driver.md)
+ [Cassandra Node.js クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_nodejs_driver.md)
+ [Cassandra .NET Core クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_dotnetcore_driver.md)
+ [Cassandra Go クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_go_driver.md)
+ [Cassandra Perl クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス](using_perl_driver.md)

# Cassandra Java クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="using_java_driver"></a>

このセクションでは、Java クライアントドライバーを使用して Amazon Keyspaces に接続する方法について説明します。

**注記**  
Java 17 と DataStax Java ドライバー 4.17 は、現時点ではベータサポートのみです。詳細については、「[https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/](https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/)」を参照してください。

Amazon Keyspaces リソースへのプログラムアクセスに必要な認証情報を、ユーザーとアプリケーションに提供するには、次のいずれかを実行します。
+ 特定の AWS Identity and Access Management (IAM) ユーザーに関連付けられたサービス固有の認証情報を作成します。
+ セキュリティを強化するために、すべての AWS サービスで使用される IAM ID の IAM アクセスキーを作成することをお勧めします。Cassandra クライアントドライバー用の Amazon Keyspaces SigV4 認証プラグインを使用すると、ユーザー名とパスワードではなく IAM アクセスキーを使用して Amazon Keyspaces のコールの認証を行うことができます。詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

**注記**  
Spring Boot で Amazon Keyspaces を使用する方法の例については、「[https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring](https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring)」を参照してください。

**Topics**
+ [[開始する前に]](#using_java_driver.BeforeYouBegin)
+ [サービス固有の認証情報を使用して、Apache Cassandra 用の DataStax Java ドライバーで Amazon Keyspaces に接続するためのステップバイステップチュートリアル](#java_tutorial)
+ [Apache Cassandra 用の 4.x DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続するためのステップバイステップのチュートリアル](#java_tutorial.SigV4)
+ [Apache Cassandra 用 3.x DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する](#java3x_tutorial.SigV4)

## [開始する前に]
<a name="using_java_driver.BeforeYouBegin"></a>

Amazon Keyspaces への接続を開始する前に、以下のタスクを行う必要があります。

1. Amazon Keyspaces では、クライアントとの安全な接続を確保するために Transport Layer Security (TLS) を使用する必要があります。

   1.  次のデジタル証明書をダウンロードし、ローカルまたはホームディレクトリにファイルを保存します。

      1. AmazonRootCA1

      1. AmazonRootCA2

      1. AmazonRootCA3

      1. AmazonRootCA4

      1. Starfield クラス 2 ルート (オプション – 下位互換性用)

      証明書をダウンロードするには、次のコマンドを使用できます。

      ```
      curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
      curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
      curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
      curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
      curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
      ```
**注記**  
Amazon Keyspaces は以前、Starfield クラス 2 CA に固定された TLS 証明書を使用していました。 AWS は、Amazon Trust Services (Amazon ルート CAs で発行された証明書 AWS リージョン にすべて移行しています。この移行中に、Amazon ルート CAs 1～4 と Starfield ルートの両方を信頼するようにクライアントを設定し、すべてのリージョンで互換性を確保します。

   1. デジタル証明書を trustStore ファイルに変換し、キーストアに追加します。

      ```
      openssl x509 -outform der -in AmazonRootCA1.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-1 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA2.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-2 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA3.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-3 -keystore cassandra_truststore.jks -file temp_file.der
      
      openssl x509 -outform der -in AmazonRootCA4.pem -out temp_file.der
      keytool -import -alias amazon-root-ca-4 -keystore cassandra_truststore.jks -file temp_file.der
                   
      openssl x509 -outform der -in sf-class2-root.crt -out temp_file.der
      keytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der
      ```

      最後のステップでは、キーストアのパスワードを作成し、各証明書を信頼する必要があります。対話型コマンドは次のようになります。

      ```
      Enter keystore password:  
      Re-enter new password: 
      Owner: CN=Amazon Root CA 1, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 1, O=Amazon, C=US
      Serial number: 66c9fcf99bf8c0a39e2f0788a43e696365bca
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sun Jan 17 00:00:00 UTC 2038
      Certificate fingerprints:
           SHA1: 8D:A7:F9:65:EC:5E:FC:37:91:0F:1C:6E:59:FD:C1:CC:6A:6E:DE:16
           SHA256: 8E:CD:E6:88:4F:3D:87:B1:12:5B:A3:1A:C3:FC:B1:3D:70:16:DE:7F:57:CC:90:4F:E1:CB:97:C6:AE:98:19:6E
      Signature algorithm name: SHA256withRSA
      Subject Public Key Algorithm: 2048-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: 84 18 CC 85 34 EC BC 0C   94 94 2E 08 59 9C C7 B2  ....4.......Y...
      0010: 10 4E 0A 08                                        .N..
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 2, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 2, O=Amazon, C=US
      Serial number: 66c9fd29635869f0a0fe58678f85b26bb8a37
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: 5A:8C:EF:45:D7:A6:98:59:76:7A:8C:8B:44:96:B5:78:CF:47:4B:1A
           SHA256: 1B:A5:B2:AA:8C:65:40:1A:82:96:01:18:F8:0B:EC:4F:62:30:4D:83:CE:C4:71:3A:19:C3:9C:01:1E:A4:6D:B4
      Signature algorithm name: SHA384withRSA
      Subject Public Key Algorithm: 4096-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: B0 0C F0 4C 30 F4 05 58   02 48 FD 33 E5 52 AF 4B  ...L0..X.H.3.R.K
      0010: 84 E3 66 52                                        ..fR
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 3, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 3, O=Amazon, C=US
      Serial number: 66c9fd5749736663f3b0b9ad9e89e7603f24a
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: 0D:44:DD:8C:3C:8C:1A:1A:58:75:64:81:E9:0F:2E:2A:FF:B3:D2:6E
           SHA256: 18:CE:6C:FE:7B:F1:4E:60:B2:E3:47:B8:DF:E8:68:CB:31:D0:2E:BB:3A:DA:27:15:69:F5:03:43:B4:6D:B3:A4
      Signature algorithm name: SHA256withECDSA
      Subject Public Key Algorithm: 256-bit EC (secp256r1) key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: AB B6 DB D7 06 9E 37 AC   30 86 07 91 70 C7 9C C4  ......7.0...p...
      0010: 19 B1 78 C0                                        ..x.
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: CN=Amazon Root CA 4, O=Amazon, C=US
      Issuer: CN=Amazon Root CA 4, O=Amazon, C=US
      Serial number: 66c9fd7c1bb104c2943e5717b7b2cc81ac10e
      Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040
      Certificate fingerprints:
           SHA1: F6:10:84:07:D6:F8:BB:67:98:0C:C2:E2:44:C2:EB:AE:1C:EF:63:BE
           SHA256: E3:5D:28:41:9E:D0:20:25:CF:A6:90:38:CD:62:39:62:45:8D:A5:C6:95:FB:DE:A3:C2:2B:0B:FB:25:89:70:92
      Signature algorithm name: SHA384withECDSA
      Subject Public Key Algorithm: 384-bit EC (secp384r1) key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.19 Criticality=true
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #2: ObjectId: 2.5.29.15 Criticality=true
      KeyUsage [
        DigitalSignature
        Key_CertSign
        Crl_Sign
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: D3 EC C7 3A 65 6E CC E1   DA 76 9A 56 FB 9C F3 86  ...:en...v.V....
      0010: 6D 57 E5 81                                        mW..
      ]
      ]
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      Enter keystore password:  
      Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US
      Issuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US
      Serial number: 0
      Valid from: Tue Jun 29 17:39:16 UTC 2004 until: Thu Jun 29 17:39:16 UTC 2034
      Certificate fingerprints:
           SHA1: AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A
           SHA256: 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58
      Signature algorithm name: SHA1withRSA (weak)
      Subject Public Key Algorithm: 2048-bit RSA key
      Version: 3
      
      Extensions: 
      
      #1: ObjectId: 2.5.29.35 Criticality=false
      AuthorityKeyIdentifier [
      KeyIdentifier [
      0000: BF 5F B7 D1 CE DD 1F 86   F4 5B 55 AC DC D7 10 C2  ._.......[U.....
      0010: 0E A9 88 E7                                        ....
      ]
      [OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US]
      SerialNumber: [    00]
      ]
      
      #2: ObjectId: 2.5.29.19 Criticality=false
      BasicConstraints:[
        CA:true
        PathLen:2147483647
      ]
      
      #3: ObjectId: 2.5.29.14 Criticality=false
      SubjectKeyIdentifier [
      KeyIdentifier [
      0000: BF 5F B7 D1 CE DD 1F 86   F4 5B 55 AC DC D7 10 C2  ._.......[U.....
      0010: 0E A9 88 E7                                        ....
      ]
      ]
      
      
      Warning:
      The input uses the SHA1withRSA signature algorithm which is considered a security risk. This algorithm will be disabled in a future update.
      
      Trust this certificate? [no]:  yes
      Certificate was added to keystore
      ```

1.  JVM 引数に TrustStore ファイルをアタッチします。

   ```
   -Djavax.net.ssl.trustStore=path_to_file/cassandra_truststore.jks 
   -Djavax.net.ssl.trustStorePassword=my_password
   ```

## サービス固有の認証情報を使用して、Apache Cassandra 用の DataStax Java ドライバーで Amazon Keyspaces に接続するためのステップバイステップチュートリアル
<a name="java_tutorial"></a>

以下のステップバイステップチュートリアルでは、サービス固有の認証情報を使用して Cassandra 用 Java ドライバーで Amazon Keyspaces に接続する手順を説明します。具体的には、Apache Cassandra 用の DataStax Java ドライバーのバージョン 4.0 を使用します。

**Topics**
+ [ステップ 1: 前提条件](#java_tutorial.prereq)
+ [ステップ 2: ドライバーを設定する](#java_tutorial.driverconfiguration)
+ [ステップ 3: サンプルアプリケーションを実行する](#java_tutorial.application)

### ステップ 1: 前提条件
<a name="java_tutorial.prereq"></a>

このチュートリアルに従って作業を行うには、サービス固有の認証情報を生成し、Apache Cassandra 用の DataStax Java ドライバーを Java プロジェクトに追加しておく必要があります。
+ 「[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md)」の手順を完了することで、Amazon Keyspaces IAM ユーザー向けにサービス固有の認証情報を生成します。認証に IAM アクセスキーを使用する場合は、「[Apache Cassandra 用の 4.x DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続するためのステップバイステップのチュートリアル](#java_tutorial.SigV4)」を参照してください。
+ Apache Cassandra 用の DataStax Java ドライバーを Java プロジェクトに追加します。Apache Cassandra 3.11.2 に対応しているドライバーバージョンを使用していることを確認します。詳細については、「[DataStax Java driver for Apache Cassandra documentation(Apache Cassandra 用 DataStax Java ドライバーのドキュメント)](https://github.com/datastax/java-driver)」を参照してください。

### ステップ 2: ドライバーを設定する
<a name="java_tutorial.driverconfiguration"></a>

アプリケーション用の設定ファイルを作成すれば、DataStax Java Cassandra ドライバーの設定を指定できます。この設定ファイルは、デフォルト設定をオーバーライドし、ポート 9142 を使用して Amazon Keyspaces サービスエンドポイントに接続するようにドライバーに指示を与えます。利用可能なサービスエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

設定ファイルを作成し、アプリケーションのリソースフォルダ (例: `src/main/resources/application.conf`) に保存します。`application.conf` を開き、次の設定を追加します。

1. **認証プロバイダ** — `PlainTextAuthProvider` クラスを使用して認証プロバイダを作成します。*ServiceUserName* と *ServicePassword* は、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) の手順に従ってサービス固有の認証情報を生成したときに取得したユーザー名とパスワードと一致します。
**注記**  
短期の認証情報を使用するには、ドライバー設定ファイルの認証情報をハードコードする代わりに、Apache Cassandra 用 DataStax Java ドライバーの認証プラグインを使用します。詳細を把握するには、「[Apache Cassandra 用の 4.x DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続するためのステップバイステップのチュートリアル](#java_tutorial.SigV4)」の指示に従ってください。

1. **ローカルデータセンター** — `local-datacenter` の値を、接続先のリージョンに設定します。例えば、アプリケーションを `cassandra.us-east-2.amazonaws.com` に接続する場合は、ローカルデータセンターを `us-east-2` に設定します。すべての利用可能な AWS リージョンについては「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。。負荷分散の対象となるノードの数を減らすように `slow-replica-avoidance = false` を設定します。

1. **SSL/TLS** — `class = DefaultSslEngineFactory` があるクラスを指定する 1 行を含む設定ファイルにセクションを追加することで、SSlengineFactory を初期化します。trustStore ファイルへのパスと、以前に作成したパスワードを提供します。Amazon Keyspaces はピアの `hostname-validation` をサポートしていないため、このオプションを false に設定してください。

```
datastax-java-driver {

    basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]
    advanced.auth-provider{
        class = PlainTextAuthProvider
        username = "ServiceUserName"
        password = "ServicePassword"
    }
    basic.load-balancing-policy {
        local-datacenter = "us-east-2"
        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
      }
}
```

**注記**  
trustStore へのパスを設定ファイル追加する代わりに、trustStore パスをアプリケーションコード直接追加することも、trustStore へのパスを JVM 引数に追加することもできます。

### ステップ 3: サンプルアプリケーションを実行する
<a name="java_tutorial.application"></a>

このコード例は、先ほど作成した設定ファイルを使用して Amazon Keyspaces への接続プールを作成する単純なコマンドラインアプリケーションを示しています。これは、単純なクエリを実行することで、接続が確立されたことを確認するものです。

```
package <your package>;
// add the following imports to your project
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class App 
{
    
    public static void main( String[] args )
    {
        //Use DriverConfigLoader to load your configuration file
        DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
        try (CqlSession session = CqlSession.builder()
                .withConfigLoader(loader)
                .build()) {

            ResultSet rs = session.execute("select * from system_schema.keyspaces");
            Row row = rs.one();
            System.out.println(row.getString("keyspace_name"));
        }
    }
}
```

**注記**  
`try` ブロックを使用して接続を確立し、その接続が常に閉じていることを確認します。`try` ブロックを使用しない場合は、リソースの漏洩を防ぐために必ず接続を閉じてください。

## Apache Cassandra 用の 4.x DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続するためのステップバイステップのチュートリアル
<a name="java_tutorial.SigV4"></a>

次のセクションでは、Apache Cassandra 用のオープンソース 4.x DataStax Java ドライバーに SigV4 認証プラグインを使用して、Amazon Keyspaces (Apache Cassandra 向け) にアクセスする方法について説明します。このプラグインは [GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin)から入手できます。

この SigV4 認証プラグインを使用すると、Amazon Keyspaces に接続するときに、ユーザーまたはロールの IAM 認証情報を使用できます。このプラグインは、ユーザー名とパスワードを要求する代わりに、アクセスキーを使用して API リクエストに署名します。詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

### ステップ 1: 前提条件
<a name="java_tutorial.SigV4.1"></a>

このチュートリアルを実行するには、次のタスクを完了する必要があります。
+ まだ完了していない場合は、[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md) のステップに従って IAM ユーザーまたはロールの認証情報を作成します。このチュートリアルでは、アクセスキーが環境変数として保存されることを前提としています。詳細については、「[プログラムによるアクセス用のアクセスキーを保存する](aws.credentials.manage.md)」を参照してください。
+ Apache Cassandra 用の DataStax Java ドライバーを Java プロジェクトに追加します。Apache Cassandra 3.11.2 に対応しているドライバーバージョンを使用していることを確認します。詳細については、「[DataStax Java Driver for Apache Cassandra documentation (Apache Cassandra 用 DataStax Java ドライバーのドキュメント)](https://github.com/datastax/java-driver)」を参照してください。
+ 認証プラグインをアプリケーションに追加します。認証プラグインは、Apache Cassandra 用 DataStax Java ドライバーのバージョン 4.x に対応しています。Apache Maven を使用している場合、または Maven の依存関係を使用できるビルドシステムを使用している場合は、次の依存関係を `pom.xml` ファイルに追加します。
**重要**  
[GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin#add-the-authentication-plugin-to-the-application)に示されているように、プラグインのバージョンを最新バージョンに置き換えます。

  ```
  <dependency>
          <groupId>software.aws.mcs</groupId>
          <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin</artifactId>
          <version>4.0.9</version>
  </dependency>
  ```

### ステップ 2: ドライバーを設定する
<a name="java_tutorial.SigV4.2"></a>

アプリケーション用の設定ファイルを作成すれば、DataStax Java Cassandra ドライバーの設定を指定できます。この設定ファイルは、デフォルト設定をオーバーライドし、ポート 9142 を使用して Amazon Keyspaces サービスエンドポイントに接続するようにドライバーに指示を与えます。利用可能なサービスエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

設定ファイルを作成し、アプリケーションのリソースフォルダ (例: `src/main/resources/application.conf`) に保存します。`application.conf` を開き、次の設定を追加します。

1. **認証プロバイダ** — `advanced.auth-provider.class` を `software.aws.mcs.auth.SigV4AuthProvider` の新しいインスタンスに設定します。SigV4AuthProvider は、SigV4 認証を実行するためのプラグインによって提供される認証ハンドラです。

1. **ローカルデータセンター** — `local-datacenter` の値を、接続先のリージョンに設定します。例えば、アプリケーションを `cassandra.us-east-2.amazonaws.com` に接続する場合は、ローカルデータセンターを `us-east-2` に設定します。使用可能なすべての については AWS リージョン、「」を参照してください[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)。利用可能なすべてのノードで負荷を分散させるには、`slow-replica-avoidance = false` を設定します。

1. **Idempotence** – アプリケーションのデフォルトの `idempotence` を `true` に設定して、読み取り/書き込み/準備/実行のリクエストが失敗した場合に常に再試行するようにドライバーを設定します。これは、分散型アプリケーションではベストプラクティスであり、失敗したリクエストを再試行することで一時的な障害に対処できます。

1. **SSL/TLS** — `class = DefaultSslEngineFactory` があるクラスを指定する 1 行を含む設定ファイルにセクションを追加することで、SSlengineFactory を初期化します。trustStore ファイルへのパスと、以前に作成したパスワードを提供します。Amazon Keyspaces はピアの `hostname-validation` をサポートしていないため、このオプションを false に設定してください。

1. **接続数** – `local.size = 3` を設定して、エンドポイントごとに 3 つ以上のローカル接続を作成します。これは、アプリケーションがオーバーヘッドやトラフィックのバーストに対処するうえで役立つベストプラクティスです。予想されるトラフィックパターンに基づいて、アプリケーションが必要とするローカル接続の数をエンドポイントごとに計算する方法については、「[Amazon Keyspaces で接続を設定する方法](connections.md#connections.howtoconfigure)」を参照してください。

1. **再試行ポリシー** – Cassandra ドライバーに付属の `DefaultRetryPolicy` ではなく、Amazon Keyspaces の再試行ポリシー `AmazonKeyspacesExponentialRetryPolicy` を実装します。これにより、`AmazonKeyspacesExponentialRetryPolicy` の再試行回数をニーズに応じて設定できます。デフォルトでは、`AmazonKeyspacesExponentialRetryPolicy` の再試行回数は 3 に設定されています。詳細については、「[Amazon Keyspaces で接続の再試行ポリシーを設定する方法](connections.md#connections.retry-policies)」を参照してください。

1. **プリペアドステートメント** – ネットワーク使用量を最適化するため、`prepare-on-all-nodes` を false に設定します。

```
datastax-java-driver {
    basic {
        contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]  
        request {
            timeout = 2 seconds
            consistency = LOCAL_QUORUM
            page-size = 1024
            default-idempotence = true
        }
        load-balancing-policy {
            local-datacenter = "us-east-2"
            class = DefaultLoadBalancingPolicy
            slow-replica-avoidance = false           
        }
    }
    advanced {
        auth-provider {
            class = software.aws.mcs.auth.SigV4AuthProvider
            aws-region = us-east-2
        }
        ssl-engine-factory {
            class = DefaultSslEngineFactory
            truststore-path = "./src/main/resources/cassandra_truststore.jks"
            truststore-password = "my_password"
            hostname-validation = false
        }
        connection {
	     connect-timeout = 5 seconds
	     max-requests-per-connection = 512
	     pool {
                local.size = 3
	     }
        }
       retry-policy {
           class =  com.aws.ssa.keyspaces.retry.AmazonKeyspacesExponentialRetryPolicy
	    max-attempts = 3
	    min-wait = 10 mills
	    max-wait = 100 mills
       }
       prepared-statements {
	    prepare-on-all-nodes = false
       }
    }
}
```

**注記**  
trustStore へのパスを設定ファイル追加する代わりに、trustStore パスをアプリケーションコード直接追加することも、trustStore へのパスを JVM 引数に追加することもできます。

### ステップ 3: アプリケーションを実行する
<a name="java_tutorial.SigV4.3"></a>

このコード例は、先ほど作成した設定ファイルを使用して Amazon Keyspaces への接続プールを作成する単純なコマンドラインアプリケーションを示しています。これは、単純なクエリを実行することで、接続が確立されたことを確認するものです。

```
package <your package>;
// add the following imports to your project
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class App 
{
    
    public static void main( String[] args )
    {
        //Use DriverConfigLoader to load your configuration file
        DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf");
        try (CqlSession session = CqlSession.builder()
                .withConfigLoader(loader)
                .build()) {

            ResultSet rs = session.execute("select * from system_schema.keyspaces");
            Row row = rs.one();
            System.out.println(row.getString("keyspace_name"));
        }
    }
}
```

**注記**  
`try` ブロックを使用して接続を確立し、その接続が常に閉じていることを確認します。`try` ブロックを使用しない場合は、リソースの漏洩を防ぐために必ず接続を閉じてください。

## Apache Cassandra 用 3.x DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する
<a name="java3x_tutorial.SigV4"></a>

次のセクションでは、Apache Cassandra 用 3.x オープンソース DataStax Java ドライバーの SigV4 認証プラグインを使用して Amazon Keyspaces にアクセスする方法について説明します。このプラグインは [GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin/tree/3.x-Driver-Compatible)から入手できます。

SigV4 認証プラグインを使用すると、Amazon Keyspaces に接続するときに、ユーザーとロールの IAM 認証情報を使用できます。このプラグインは、ユーザー名とパスワードを要求する代わりに、アクセスキーを使用して API リクエストに署名します。詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

### ステップ 1: 前提条件
<a name="java3x_tutorial.SigV4.1"></a>

このコードサンプルを実行するには、まず以下のタスクを完了する必要があります。
+ 「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」の手順に従って、IAM ユーザーまたはロールの認証情報を作成します。このチュートリアルでは、アクセスキーが環境変数として保存されることを前提としています。詳細については、「[プログラムによるアクセス用のアクセスキーを保存する](aws.credentials.manage.md)」を参照してください。
+ の手順に従って、デジタル証明書[[開始する前に]](#using_java_driver.BeforeYouBegin)をダウンロードして trustStore ファイルに変換し、JVM 引数のキーストアをアプリケーションにアタッチします。
+ Apache Cassandra 用の DataStax Java ドライバーを Java プロジェクトに追加します。Apache Cassandra 3.11.2 に対応しているドライバーバージョンを使用していることを確認します。詳細については、「[DataStax Java Driver for Apache Cassandra documentation (Apache Cassandra 用 DataStax Java ドライバーのドキュメント)](https://github.com/datastax/java-driver)」を参照してください。
+ 認証プラグインをアプリケーションに追加します。認証プラグインは、Apache Cassandra 用 DataStax Java ドライバーのバージョン 3.x に対応しています。Apache Maven を使用している場合、または Maven の依存関係を使用できるビルドシステムを使用している場合は、次の依存関係を `pom.xml` ファイルに追加します。[GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin/tree/3.x-Driver-Compatible)に示されているように、プラグインのバージョンを最新バージョンに置き換えます。

  ```
  <dependency>
          <groupId>software.aws.mcs</groupId>
          <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin_3</artifactId>
          <version>3.0.3</version>
  </dependency>
  ```

### ステップ 2: アプリケーションを実行する
<a name="java3x_tutorial.SigV4.3"></a>

このコード例は、Amazon Keyspaces への接続プールを作成する単純なコマンドラインアプリケーションを示しています。これは、単純なクエリを実行することで、接続が確立されたことを確認するものです。

```
package <your package>;
// add the following imports to your project

import software.aws.mcs.auth.SigV4AuthProvider;  
import com.datastax.driver.core.Cluster;  
import com.datastax.driver.core.ResultSet;  
import com.datastax.driver.core.Row;  
import com.datastax.driver.core.Session;

public class App 
{
    
    public static void main( String[] args )
    {
        String endPoint = "cassandra.us-east-2.amazonaws.com";  
        int portNumber = 9142;
        Session session = Cluster.builder()  
	                                 .addContactPoint(endPoint)  
	                                 .withPort(portNumber)  
	                                 .withAuthProvider(new SigV4AuthProvider("us-east-2"))  
	                                 .withSSL()  
	                                 .build()  
	                                 .connect();

        ResultSet rs = session.execute("select * from system_schema.keyspaces");  
        Row row = rs.one();  
        System.out.println(row.getString("keyspace_name"));
    }
}
```

使用に関する注意事項:

利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

Java ドライバーを Amazon Keyspaces で使用する場合に役立つ Java ドライバーポリシー ([https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers](https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers)) およびベストプラクティスについては、次のリポジトリを参照してください。

# Cassandra Python クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="using_python_driver"></a>

 このセクションでは、Python クライアントドライバーを使用して Amazon Keyspaces に接続する方法について説明します。Amazon Keyspaces リソースへのプログラムアクセスに必要な認証情報を、ユーザーとアプリケーションに提供するには、次のいずれかを実行します。
+ 特定の AWS Identity and Access Management (IAM) ユーザーに関連付けられたサービス固有の認証情報を作成します。
+ セキュリティを強化するために、すべての AWS サービスで使用される IAM ユーザーまたはロールの IAM アクセスキーを作成することをお勧めします。Cassandra クライアントドライバー用の Amazon Keyspaces SigV4 認証プラグインを使用すると、ユーザー名とパスワードではなく IAM アクセスキーを使用して Amazon Keyspaces のコールの認証を行うことができます。詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

**Topics**
+ [[開始する前に]](#using_python_driver.BeforeYouBegin)
+ [Apache Cassandra 用の Python ドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する](#python_ssc)
+ [Apache Cassandra 用 DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する](#python_SigV4)

## [開始する前に]
<a name="using_python_driver.BeforeYouBegin"></a>

開始する前に、次のタスクを完了する必要があります。

Amazon Keyspaces では、クライアントとの安全な接続を確保するために Transport Layer Security (TLS) を使用する必要があります。TLS を使用して Amazon Keyspaces に接続するには、Amazon デジタル証明書をダウンロードし、TLS を使用するように Python ドライバーを設定する必要があります。

 次のデジタル証明書をダウンロードし、ローカルまたはホームディレクトリにファイルを保存します。

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield クラス 2 ルート (オプション – 下位互換性用)

証明書をダウンロードするには、次のコマンドを使用できます。

```
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
```

**注記**  
Amazon Keyspaces は以前、Starfield クラス 2 CA に固定された TLS 証明書を使用していました。 AWS は、Amazon Trust Services (Amazon ルート CAs で発行された証明書 AWS リージョン にすべて移行しています。この移行中に、Amazon ルート CAs 1～4 と Starfield ルートの両方を信頼するようにクライアントを設定し、すべてのリージョンで互換性を確保します。

ダウンロードしたすべての証明書を、この例の *keyspaces-bundle.pem* という名前の 1 つの`pem`ファイルに結合します。そのためには、以下の コマンドを実行します。ファイルへのパスを書き留めます。これは後で必要になります。

```
cat AmazonRootCA1.pem \
 AmazonRootCA2.pem \
 AmazonRootCA3.pem \
 AmazonRootCA4.pem \
 sf-class2-root.crt \
 > keyspaces-bundle.pem
```

## Apache Cassandra 用の Python ドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する
<a name="python_ssc"></a>

次のコード例では、Python クライアントドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する方法を示します。

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2 )

ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')

ssl_context.verify_mode = CERT_REQUIRED
auth_provider = PlainTextAuthProvider(username='ServiceUserName', password='ServicePassword')
cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

使用に関する注意事項:

1. を、最初のステップで保存した結合証明書ファイルへのパス`"path_to_file/keyspaces-bundle.pem"`に置き換えます。

1. *ServiceUserName* と *ServicePassword* が、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) の手順に従ってサービス固有の認証情報を生成したときに取得したユーザー名とパスワードと一致していることを確認してください。

1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

## Apache Cassandra 用 DataStax Java ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する
<a name="python_SigV4"></a>

次のセクションでは、Apache Cassandra 用オープンソース DataStax Python ドライバーの SigV4 認証プラグインを使用して、Amazon Keyspaces (Apache Cassandra 向け) にアクセスする方法を示します。

まだ完了していない場合は、[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md) のステップに従って IAM ロールの認証情報の作成を開始します。このチュートリアルでは、IAM ロールを必要とする一時認証情報を使用します。一時認証情報の詳細については、「[IAM ロールと SigV4 プラグインで Amazon Keyspaces に接続するための一時的な認証情報を作成する](temporary.credentials.IAM.md)」を参照してください。

次に、Python SigV4 認証プラグインを [GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin)から環境に追加します。

```
pip install cassandra-sigv4
```

次のコード例では、Cassandra 用のオープンソース DataStax Python ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する方法を示します。プラグインは AWS SDK for Python (Boto3) によって異なります。`boto3.session` を使用して一時認証情報を取得します。

```
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2 , CERT_REQUIRED
from cassandra.auth import PlainTextAuthProvider
import boto3
from cassandra_sigv4.auth import SigV4AuthProvider

ssl_context = SSLContext(PROTOCOL_TLSv1_2)
ssl_context.load_verify_locations('path_to_file/keyspaces-bundle.pem')
ssl_context.verify_mode = CERT_REQUIRED

# use this if you want to use Boto to set the session parameters.
boto_session = boto3.Session(aws_access_key_id="AKIAIOSFODNN7EXAMPLE",
                             aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                             aws_session_token="AQoDYXdzEJr...<remainder of token>",
                             region_name="us-east-2")
auth_provider = SigV4AuthProvider(boto_session)

# Use this instead of the above line if you want to use the Default Credentials and not bother with a session.
# auth_provider = SigV4AuthProvider()

cluster = Cluster(['cassandra.us-east-2.amazonaws.com'], ssl_context=ssl_context, auth_provider=auth_provider,
                  port=9142)
session = cluster.connect()
r = session.execute('select * from system_schema.keyspaces')
print(r.current_rows)
```

使用に関する注意事項:

1. `"path_to_file/keyspaces-bundle.pem"` を、最初のステップで保存した証明書へのパスに置き換えてください。

1. *aws\$1access\$1key\$1id*、*aws\$1secret\$1access\$1key*、*aws\$1session\$1token* が、`boto3.session` を使用して入手した `Access Key`、`Secret Access Key`、`Session Token` に一致していることを確認します。詳細については、*AWS SDK for Python (Boto3)* の[「Credentials」](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)(認証情報) を参照してください。

1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

# Cassandra Node.js クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="using_nodejs_driver"></a>

 このセクションでは、Node.js クライアントドライバーを使用して Amazon Keyspaces に接続する方法を説明します。Amazon Keyspaces リソースへのプログラムアクセスに必要な認証情報を、ユーザーとアプリケーションに提供するには、次のいずれかを実行します。
+ 特定の AWS Identity and Access Management (IAM) ユーザーに関連付けられたサービス固有の認証情報を作成します。
+ セキュリティを強化するために、すべての AWS サービスで使用される IAM ユーザーまたはロールの IAM アクセスキーを作成することをお勧めします。Cassandra クライアントドライバー用の Amazon Keyspaces SigV4 認証プラグインを使用すると、ユーザー名とパスワードではなく IAM アクセスキーを使用して Amazon Keyspaces のコールの認証を行うことができます。詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

**Topics**
+ [[開始する前に]](#using_nodejs_driver.BeforeYouBegin)
+ [Apache Cassandra 用の Node.js DataStax ドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する](#nodejs_ssc)
+ [Apache Cassandra 用 DataStax Node.js ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する](#nodejs_SigV4)

## [開始する前に]
<a name="using_nodejs_driver.BeforeYouBegin"></a>

開始する前に、次のタスクを完了する必要があります。

Amazon Keyspaces では、クライアントとの安全な接続を確保するために Transport Layer Security (TLS) を使用する必要があります。TLS を使用して Amazon Keyspaces に接続するには、Amazon デジタル証明書をダウンロードし、TLS を使用するように Python ドライバーを設定する必要があります。

 次のデジタル証明書をダウンロードし、ローカルまたはホームディレクトリにファイルを保存します。

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield クラス 2 ルート (オプション – 下位互換性用)

証明書をダウンロードするには、次のコマンドを使用できます。

```
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
```

**注記**  
Amazon Keyspaces は以前、Starfield クラス 2 CA に固定された TLS 証明書を使用していました。 AWS は、Amazon Trust Services (Amazon ルート CAs で発行された証明書 AWS リージョン にすべて移行しています。この移行中に、Amazon ルート CAs 1～4 と Starfield ルートの両方を信頼するようにクライアントを設定し、すべてのリージョンで互換性を確保します。

ダウンロードしたすべての証明書を、この例の *keyspaces-bundle.pem* という名前の 1 つの`pem`ファイルに結合します。そのためには、以下の コマンドを実行します。ファイルへのパスを書き留めます。これは後で必要になります。

```
cat AmazonRootCA1.pem \
 AmazonRootCA2.pem \
 AmazonRootCA3.pem \
 AmazonRootCA4.pem \
 sf-class2-root.crt \
 > keyspaces-bundle.pem
```

## Apache Cassandra 用の Node.js DataStax ドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する
<a name="nodejs_ssc"></a>

 TLS `keyspaces-bundle.pem`の結合証明書ファイルを使用し、サービス固有の認証情報を使用して認証するようにドライバーを設定します。例えば、次のようになります。

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');
const sslOptions1 = {
         ca: [
                    fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')],      
                    host: 'cassandra.us-west-2.amazonaws.com',
                    rejectUnauthorized: true
        };
const client = new cassandra.Client({
                   contactPoints: ['cassandra.us-west-2.amazonaws.com'],
                   localDataCenter: 'us-west-2',
                   authProvider: auth,
                   sslOptions: sslOptions1,
                   protocolOptions: { port: 9142 }
        });
const query = 'SELECT * FROM system_schema.keyspaces';
 
client.execute(query)
                    .then( result => console.log('Row from Keyspaces %s', result.rows[0]))
                    .catch( e=> console.log(`${e}`));
```

使用に関する注意事項:

1. を、最初のステップで保存した結合証明書ファイルへのパス`"path_to_file/keyspaces-bundle.pem"`に置き換えます。

1. *ServiceUserName* と *ServicePassword* が、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) の手順に従ってサービス固有の認証情報を生成したときに取得したユーザー名とパスワードと一致していることを確認してください。

1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

## Apache Cassandra 用 DataStax Node.js ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する
<a name="nodejs_SigV4"></a>

次のセクションでは、Apache Cassandra 用オープンソース DataStax Node.js ドライバーの SigV4 認証プラグインを使用して、Amazon Keyspaces (Apache Cassandra 向け) にアクセスする方法を示します。

まだ完了していない場合は、[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md) のステップに従って IAM ユーザーまたはロールの認証情報を作成します。

Node.js SigV4 認証プラグインを [GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin)からアプリケーションに追加します。プラグインは、Cassandra 用の DataStax Node.js ドライバーのバージョン 4.x をサポートし、 AWS SDK for Node.js に依存します。認証情報の取得には `AWSCredentialsProvider` が使用されます。

```
$ npm install aws-sigv4-auth-cassandra-plugin --save
```

次のコード例で、`SigV4AuthProvider` のリージョン固有のインスタンスを認証プロバイダーとして設定する方法について説明します。

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const sigV4 = require('aws-sigv4-auth-cassandra-plugin');

const auth = new sigV4.SigV4AuthProvider({
    region: 'us-west-2', 
    accessKeyId:'AKIAIOSFODNN7EXAMPLE',
    secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'});

const sslOptions1 = {
  ca: [
      fs.readFileSync('path_to_file/keyspaces-bundle.pem', 'utf-8')],
  host: 'cassandra.us-west-2.amazonaws.com',
  rejectUnauthorized: true
};


const client = new cassandra.Client({
  contactPoints: ['cassandra.us-west-2.amazonaws.com'],
  localDataCenter: 'us-west-2',
  authProvider: auth,
  sslOptions: sslOptions1,
  protocolOptions: { port: 9142 }
});


const query = 'SELECT * FROM system_schema.keyspaces';

client.execute(query).then(
    result => console.log('Row from Keyspaces %s', result.rows[0]))
    .catch( e=> console.log(`${e}`));
```

使用に関する注意事項:

1. `"path_to_file/keyspaces-bundle.pem"` を、最初のステップで保存した証明書へのパスに置き換えてください。

1. *accessKeyId* と *secretAccessKey* が、`AWSCredentialsProvider` を使用して取得したアクセスキーとシークレットアクセスキーに一致していることを確認してください。詳細については、*「AWS SDK for JavaScript in Node.js」*(Node.js での JavaScript の SDK) の[「Setting Credentials in Node.js」](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html)(Node.js での認証情報の設定) を参照してください。

1. アクセスキーをコード外に保存するには、[プログラムによるアクセス用のアクセスキーを保存する](aws.credentials.manage.md) のベストプラクティスを参照してください。

1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

# Cassandra .NET Core クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="using_dotnetcore_driver"></a>

このセクションでは、.NET Core クライアントドライバーを使用して Amazon Keyspaces に接続する方法について説明します。セットアップ手順が環境やオペレーティングシステムによって異なるため、状況によっては手順の変更が必要になることがあります。Amazon Keyspaces では、クライアントとの安全な接続を確保するために Transport Layer Security (TLS) を使用する必要があります。TLS を使用して Amazon Keyspaces に接続するには、Amazon ルート CAs 1～4 を含むシステムトラストストアを使用するようにドライバーを設定します。

1.  NuGet コンソールを使用して、NuGet から CassandraCSharpDriver をインストールします。

   ```
   PM> Install-Package CassandraCSharpDriver
   ```

1. 次の例では、.NET Core C\$1 コンソールプロジェクトを使用して Amazon Keyspaces に接続し、クエリを実行します。

   ```
   using Cassandra;
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Net.Security;
   using System.Runtime.ConstrainedExecution;
   using System.Security.Cryptography.X509Certificates;
   using System.Text;
   using System.Threading.Tasks;
   
   namespace CSharpKeyspacesExample
   {
       class Program
       {
           public Program(){}
   
           static void Main(string[] args)
           {
               var userName = "ServiceUserName";
               var pwd = "ServicePassword";
               certCollection.Add(amazoncert);
    
               var awsEndpoint =  "cassandra.us-east-2.amazonaws.com" ;  
   
               var cluster = Cluster.Builder()
                        .AddContactPoints(awsEndpoint)
                        .WithPort(9142)
                        .WithAuthProvider(new PlainTextAuthProvider(userName, pwd))
                        .WithSSL(new SSLOptions().SetCertificateCollection(certCollection))
                        .Build();
   
               var session = cluster.Connect();
               var rs = session.Execute("SELECT * FROM system_schema.tables;");
               foreach (var row in rs)
               {
                   var name = row.GetValue<String>("keyspace_name");
                   Console.WriteLine(name);
               }
           }
       }
   }
   ```

使用に関する注意事項:

1. Amazon ルート CAs 1～4 を含むデフォルトのシステムトラストストアを使用していることを確認してください。

1. *ServiceUserName* と *ServicePassword* が、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) の手順に従ってサービス固有の認証情報を生成したときに取得したユーザー名とパスワードと一致していることを確認してください。

1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

# Cassandra Go クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="using_go_driver"></a>

このセクションでは、Go Cassandra クライアントドライバーを使用して Amazon Keyspaces に接続する方法を説明します。Amazon Keyspaces リソースへのプログラムアクセスに必要な認証情報を、ユーザーとアプリケーションに提供するには、次のいずれかを実行します。
+ 特定の AWS Identity and Access Management (IAM) ユーザーに関連付けられたサービス固有の認証情報を作成します。
+ セキュリティを強化するために、すべての AWS サービスで使用される IAM プリンシパルの IAM アクセスキーを作成することをお勧めします。Cassandra クライアントドライバー用の Amazon Keyspaces SigV4 認証プラグインを使用すると、ユーザー名とパスワードではなく IAM アクセスキーを使用して Amazon Keyspaces のコールの認証を行うことができます。詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

**Topics**
+ [[開始する前に]](#using_go_driver.BeforeYouBegin)
+ [Apache Cassandra 用の Gocql ドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する](#go_ssc)
+ [Apache Cassandra 用の Go ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する](#go_SigV4)

## [開始する前に]
<a name="using_go_driver.BeforeYouBegin"></a>

開始する前に、次のタスクを完了する必要があります。

Amazon Keyspaces では、クライアントとの安全な接続を確保するために Transport Layer Security (TLS) を使用する必要があります。TLS を使用して Amazon Keyspaces に接続するには、Amazon デジタル証明書をダウンロードし、TLS を使用するように Go ドライバーを設定する必要があります。

 次のデジタル証明書をダウンロードし、ローカルまたはホームディレクトリにファイルを保存します。

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield クラス 2 ルート (オプション – 下位互換性用)

証明書をダウンロードするには、次のコマンドを使用できます。

```
curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem
curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem
curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
```

**注記**  
Amazon Keyspaces は以前、Starfield クラス 2 CA に固定された TLS 証明書を使用していました。 AWS は、Amazon Trust Services (Amazon ルート CAs で発行された証明書 AWS リージョン にすべて移行しています。この移行中に、Amazon ルート CAs 1～4 と Starfield ルートの両方を信頼するようにクライアントを設定し、すべてのリージョンで互換性を確保します。

ダウンロードしたすべての証明書を、この例の *keyspaces-bundle.pem* という名前の 1 つの`pem`ファイルに結合します。そのためには、以下の コマンドを実行します。ファイルへのパスを書き留めます。これは後で必要になります。

```
cat AmazonRootCA1.pem \
 AmazonRootCA2.pem \
 AmazonRootCA3.pem \
 AmazonRootCA4.pem \
 sf-class2-root.crt \
 > keyspaces-bundle.pem
```

## Apache Cassandra 用の Gocql ドライバーとサービス固有の認証情報を使用して Amazon Keyspaces に接続する
<a name="go_ssc"></a>

1. アプリケーション用の新しいディレクトリを作成します。

   ```
   mkdir ./gocqlexample
   ```

1. 新しいディレクトリに移動します。

   ```
   cd gocqlexample
   ```

1. アプリケーション用のファイルを作成します。

   ```
   touch cqlapp.go
   ```

1. Go ドライバーをダウンロードします。

   ```
   go get github.com/gocql/gocql
   ```

1. 次のサンプルコードを cqlapp.go ファイルに追加します。

   ```
   package main
   
   import (
   	    "fmt"
   	    "github.com/gocql/gocql"
   	    "log"
   )
   
   func main() {
   
       // add the Amazon Keyspaces service endpoint 
       cluster := gocql.NewCluster("cassandra.us-east-2.amazonaws.com")
       cluster.Port=9142
       // add your service specific credentials
       cluster.Authenticator = gocql.PasswordAuthenticator{
               Username: "ServiceUserName",
               Password: "ServicePassword"}
   
       // provide the path to the keyspaces-bundle.pem
       cluster.SslOpts = &gocql.SslOptions{
               CaPath: "path_to_file/keyspaces-bundle.pem",
               EnableHostVerification: false,            
        }
   
        // Override default Consistency to LocalQuorum
        cluster.Consistency = gocql.LocalQuorum
        cluster.DisableInitialHostLookup = false
   
        session, err := cluster.CreateSession()
        if err != nil {
               fmt.Println("err>", err)
        }
        defer session.Close()
   
        // run a sample query from the system keyspace
        var text string
        iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter()
        for iter.Scan(&text) {
               fmt.Println("keyspace_name:", text)
        }
        if err := iter.Close(); err != nil {
               log.Fatal(err)
        }
        session.Close()
   }
   ```

   使用に関する注意事項:

   1. を、最初のステップで保存した結合証明書ファイルへのパス`"path_to_file/keyspaces-bundle.pem"`に置き換えます。

   1. *ServiceUserName* と *ServicePassword* が、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) の手順に従ってサービス固有の認証情報を生成したときに取得したユーザー名とパスワードと一致していることを確認してください。

   1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

1. プログラムを構築します。

   ```
   go build cqlapp.go
   ```

1. プログラムを実行します。

   ```
   ./cqlapp
   ```

## Apache Cassandra 用の Go ドライバーと SigV4 認証プラグインを使用して Amazon Keyspaces に接続する
<a name="go_SigV4"></a>

次のコードサンプルで、Apache Cassandra 用オープンソース Go ドライバーの SigV4 認証プラグインを使用して、Amazon Keyspaces (Apache Cassandra 向け) にアクセスする方法を示します。

IAM プリンシパル用の認証情報をまだ作成していない場合は、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」の手順に従って作成します。Lambda または Amazon EC2 インスタンスで実行されているアプリケーションは、そのインスタンスの認証情報を自動的に使用します。このチュートリアルをローカルで実行するには、認証情報をローカル環境変数として保存します。

Go SigV4 認証プラグインを [GitHub リポジトリ](https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin)からアプリケーションに追加します。プラグインは、Cassandra 用のオープンソース Go ドライバーのバージョン 1.2.x をサポートし、 AWS SDK for Go に依存します。

```
$ go mod init
$ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
```

このコードサンプルでは、Amazon Keyspaces エンドポイントは、`Cluster` クラスで表されています。クラスターの認証システムプロパティに対して `AwsAuthenticator` を使用して、認証情報を取得します。

```
package main

import (
        "fmt"
        "github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin/sigv4"
        "github.com/gocql/gocql"
        "log"
)

func main() {
    // configuring the cluster options
    cluster := gocql.NewCluster("cassandra.us-west-2.amazonaws.com")
    cluster.Port=9142
    
    // the authenticator uses the default credential chain to find AWS credentials
    cluster.Authenticator = sigv4.NewAwsAuthenticator()

    cluster.SslOpts = &gocql.SslOptions{

            CaPath: "path_to_file/keyspaces-bundle.pem",
            EnableHostVerification: false,
    }
    cluster.Consistency = gocql.LocalQuorum
    cluster.DisableInitialHostLookup = false
   
    session, err := cluster.CreateSession()
    if err != nil {
	    fmt.Println("err>", err)
	    return
    }
    defer session.Close()

    // doing the query
    var text string
    iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter()
    for iter.Scan(&text) {
	    fmt.Println("keyspace_name:", text)
    }
    if err := iter.Close(); err != nil {
	    log.Fatal(err)
    }
}
```

使用に関する注意事項:

1. を、最初のステップで保存した証明書ファイルへのパス`"path_to_file/keyspaces-bundle.pem"`に置き換えます。

1. このサンプルをローカルで実行するには、次の変数を環境変数として定義する必要があります。
   + `AWS_ACCESS_KEY_ID`
   + `AWS_SECRET_ACCESS_KEY`
   + `AWS_DEFAULT_REGION`

1. アクセスキーをコード外に保存するには、[プログラムによるアクセス用のアクセスキーを保存する](aws.credentials.manage.md) のベストプラクティスを参照してください。

1. 利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

# Cassandra Perl クライアントドライバーを使用した Amazon Keyspaces へのプログラムアクセス
<a name="using_perl_driver"></a>

このセクションでは、Perl クライアントドライバーを使用して Amazon Keyspaces に接続する方法について説明します。このコードサンプルでは、Perl 5 を使用しました。Amazon Keyspaces では、クライアントとの安全な接続を確保するために Transport Layer Security (TLS) を使用する必要があります。

**重要**  
Amazon Keyspacescertificates は Amazon Trust Services (ATS) 階層に移行しています。このローテーション中に接続エラーが発生しないように、環境が Amazon ルート CAs 1～4 を信頼していることを確認します。Perl ドライバーではサーバーの Amazon SSL 証明書が検証されないため、Amazon Keyspaces に接続していることを確認できません。Amazon Keyspaces への接続時にドライバーにより TLS が使用されるように設定するという 2 番目のステップは引き続き必要で、このステップにより、クライアントとサーバーの間で転送されるデータが確実に暗号化されます。

1. [https://metacpan.org/pod/DBD::Cassandra](https://metacpan.org/pod/DBD::Cassandra) から Cassandra DBI ドライバーをダウンロードして Perl 環境にインストールします。厳密には、環境によって手順が多少異なります。一般的な例を以下に示します。

   ```
   cpanm DBD::Cassandra
   ```

1. アプリケーション用のファイルを作成します。

   ```
   touch cqlapp.pl
   ```

1. 次のサンプルコードを cqlapp.pl ファイルに追加します。

   ```
   use DBI;
   my $user = "ServiceUserName";
   my $password = "ServicePassword";
   my $db = DBI->connect("dbi:Cassandra:host=cassandra.us-east-2.amazonaws.com;port=9142;tls=1;", 
   $user, $password);
   
   my $rows = $db->selectall_arrayref("select * from system_schema.keyspaces"); 
   print "Found the following Keyspaces...\n"; 
   for my $row (@$rows) { 
         print join(" ",@$row['keyspace_name']),"\n"; 
   } 
   
   $db->disconnect;
   ```
**重要**  
 *ServiceUserName* と *ServicePassword* が、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) の手順に従ってサービス固有の認証情報を生成したときに取得したユーザー名とパスワードと一致していることを確認してください。
**注記**  
利用可能なエンドポイントのリストについては、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。

1.  アプリケーションを実行します。

   ```
   perl cqlapp.pl
   ```