

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

# 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)」を参照してください。