

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

# `cqlsh` を使用した Amazon Keyspaces への接続
<a name="programmatic.cqlsh"></a>

`cqlsh` で Amazon Keyspaces に接続するには、`cqlsh-expansion` を使用します。このツールキットには、`cqlsh` や Apache Cassandra との完全な互換性を維持して、Amazon Keyspaces 用に事前設定した一般的な Apache Cassandra ツールなどのヘルパーが含まれています。`cqlsh-expansion` は、SigV4 認証プラグインを統合しているため、ユーザー名とパスワードを使用する代わりに、IAM アクセスキーで接続できます。Amazon Keyspaces はサーバーレスなので、`cqlsh` スクリプトをインストールするだけで接続でき、Apache Cassandraディストリビューション一式をインストールする必要はありません。この軽量インストールパッケージには、`cqlsh-expansion` と、Python をサポートするプラットフォームであればどのプラットフォームにもインストールできるクラシック `cqlsh` スクリプトが含まれています。

**注記**  
`Murmur3Partitioner` は、Amazon Keyspaces と `cqlsh-expansion` に推奨されるパーティショナーです。`cqlsh-expansion` は Amazon Keyspaces `DefaultPartitioner` に対応していません。詳細については、「[Amazon Keyspaces でのパーティショナーの操作](working-with-partitioners.md)」を参照してください。

「`cqlsh`」の詳細については、[「`cqlsh`: CQL シェル」](https://cassandra.apache.org/doc/latest/cassandra/managing/tools/cqlsh.html) を参照してください。

**Topics**
+ [

## `cqlsh-expansion` による Amazon Keyspaces までの接続
](#using_cqlsh)
+ [

## TLS の `cqlsh` 接続を手動で設定する方法
](#encrypt_using_tls)

## `cqlsh-expansion` による Amazon Keyspaces までの接続
<a name="using_cqlsh"></a>

**`cqlsh-expansion` のインストールと設定**

1. `cqlsh-expansion` Python パッケージをインストールするには、`pip` コマンドを実行します。これにより、*pip install* と依存関係のリストを保存したファイルとともに、`cqlsh-expansion` スクリプトがマシンにインストールされます。`--user flag` は、プラットフォームの Python ユーザーインストールディレクトリを使用するように `pip` に指示します。Unix ベースのシステムでは、それが `~/.local/` ディレクトリになるはずです。

   `cqlsh-expansion` をインストールするには Python 3 が必要です。使用している Python のバージョンを確認するには、`Python --version` を使用してください。インストールするには、次のコマンドを実行します。

   ```
   python3 -m pip install --user cqlsh-expansion
   ```

   出力は次のようになります。

   ```
   Collecting cqlsh-expansion
     Downloading cqlsh_expansion-0.9.6-py3-none-any.whl (153 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 153.7/153.7 KB 3.3 MB/s eta 0:00:00
   Collecting cassandra-driver
     Downloading cassandra_driver-3.28.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.1 MB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.1/19.1 MB 44.5 MB/s eta 0:00:00
   Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from cqlsh-expansion) (1.16.0)
   Collecting boto3
     Downloading boto3-1.29.2-py3-none-any.whl (135 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 135.8/135.8 KB 17.2 MB/s eta 0:00:00
   Collecting cassandra-sigv4>=4.0.2
     Downloading cassandra_sigv4-4.0.2-py2.py3-none-any.whl (9.8 kB)
   Collecting botocore<1.33.0,>=1.32.2
     Downloading botocore-1.32.2-py3-none-any.whl (11.4 MB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 60.9 MB/s eta 0:00:00
   Collecting s3transfer<0.8.0,>=0.7.0
     Downloading s3transfer-0.7.0-py3-none-any.whl (79 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 KB 13.1 MB/s eta 0:00:00
   Collecting jmespath<2.0.0,>=0.7.1
     Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
   Collecting geomet<0.3,>=0.1
     Downloading geomet-0.2.1.post1-py3-none-any.whl (18 kB)
   Collecting python-dateutil<3.0.0,>=2.1
     Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 33.1 MB/s eta 0:00:00
   Requirement already satisfied: urllib3<2.1,>=1.25.4 in /usr/lib/python3/dist-packages (from botocore<1.33.0,>=1.32.2->boto3->cqlsh-expansion) (1.26.5)
   Requirement already satisfied: click in /usr/lib/python3/dist-packages (from geomet<0.3,>=0.1->cassandra-driver->cqlsh-expansion) (8.0.3)
   Installing collected packages: python-dateutil, jmespath, geomet, cassandra-driver, botocore, s3transfer, boto3, cassandra-sigv4, cqlsh-expansion
     WARNING: The script geomet is installed in '/home/ubuntu/.local/bin' which is not on PATH.
     Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
     WARNING: The scripts cqlsh, cqlsh-expansion and cqlsh-expansion.init are installed in '/home/ubuntu/.local/bin' which is not on PATH.
     Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
   Successfully installed boto3-1.29.2 botocore-1.32.2 cassandra-driver-3.28.0 cassandra-sigv4-4.0.2 cqlsh-expansion-0.9.6 geomet-0.2.1.post1 jmespath-1.0.1 python-dateutil-2.8.2 s3transfer-0.7.0
   ```

   インストールディレクトリが `PATH` にない場合は、オペレーティングシステムの指示に従って追加する必要があります。以下は、Ubuntu Linux の場合の一例です。

   ```
   export PATH="$PATH:/home/ubuntu/.local/bin"
   ```

   パッケージがインストールされたことを確認するためには、次のコマンドを実行します。

   ```
   cqlsh-expansion --version
   ```

   出力は次のようになります。

   ```
   cqlsh 6.1.0
   ```

1. `cqlsh-expansion` を設定するには、インストール後のスクリプトを実行して次の手順を自動的に完了させることができます。

   1. `.cassandra` ディレクトリがなければ、ユーザーのホームディレクトリに作成します。

   1. 事前設定済みの `cqlshrc` 設定ファイルを `.cassandra` ディレクトリにコピーします。

   1. 結合された証明書ファイルを `.cassandra` ディレクトリにコピーします。Amazon Keyspaces では、この証明書で、Transport Layer Security (TLS) との安全な接続を設定します。転送時の暗号化では、Amazon Keyspaces との間で送受信するときにデータを暗号化することによって、データ保護のレイヤーを追加します。証明書の詳細については、「」を参照してください[TLS の `cqlsh` 接続を手動で設定する方法](#encrypt_using_tls)。

   このスクリプトを最初に確認するため、[https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/cqlsh-expansion/cqlsh_expansion/post_install.py](https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/cqlsh-expansion/cqlsh_expansion/post_install.py) にある Github リポジトリからスクリプトにアクセスします。

   スクリプトを使用するには、次のコマンドを実行します。

   ```
   cqlsh-expansion.init
   ```
**注記**  
ポストインストールスクリプトによって作成されるディレクトリとファイルは、`pip uninstall` で `cqlsh-expansion` をアンインストールしても削除されないため、手動で削除する必要があります。

**`cqlsh-expansion` を使用した Amazon Keyspaces への接続**

1. を設定し AWS リージョン 、ユーザー環境変数として追加します。

   デフォルトリージョンを Unix ベースシステムの環境変数として追加するには、次のコマンドを実行します。この例では、 を使用します`us-east-1`。

   ```
   export AWS_DEFAULT_REGION=us-east-1
   ```

   他のプラットフォーム用など、環境変数の設定方法の詳細については、「[環境変数を設定する方法](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set)」を参照してください。

1. サービスエンドポイントを検索します。

   リージョンに適したサービスエンドポイントを選択します。Amazon Keyspaces で使用可能なエンドポイントを確認するには、「[Amazon Keyspaces のサービスエンドポイント](programmatic.endpoints.md)」を参照してください。この例では、`cassandra.us-east-1.amazonaws.com` エンドポイントを使用します。

1. 認証方法を設定します。

   IAM アクセスキー (IAM ユーザー、ロール、フェデレーテッドアイデンティティ) を使用した接続が、セキュリティ強化のための推奨方法です。

   IAM アクセスキーで続する前に、以下の手順を完了してください。

   1. IAM ユーザーを作成するか、ベストプラクティスに従って IAM ユーザーが引き受けることができる IAM ロールを作成します。IAM アクセスキーの作成方法の詳細については、「[Amazon Keyspaces の AWS 認証情報の作成と設定](access.credentials.md)」を参照してください。

   1. Amazon Keyspaces に少なくとも読み取り専用アクセス権限を与えるロール（または IAM ユーザー）を作成します。IAM ユーザーまたはロールが Amazon Keyspaces に接続するために必要な権限の詳細については、「[Amazon Keyspaces テーブルへのアクセス](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-one-table)」を参照してください。

   1. 次の例のように、IAM ユーザーのアクセスキーをユーザーの環境変数に追加します。

      ```
      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
      export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      ```

      他のプラットフォームなど、環境変数の設定方法の詳細については、「[環境変数を設定する方法](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-set)」を参照してください。
**注記**  
Amazon EC2 インスタンスから接続する場合は、そのインスタンスから Amazon Keyspaces へのトラフィックを許可するアウトバウンドルールをセキュリティグループで設定する必要もあります。EC2 アウトバウンドルールの表示方法と編集方法の詳細については、「Amazon EC2 ユーザーガイド」の「[セキュリティグループへのルールの追加](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule)」を参照してください。

1. `cqlsh-expansion` と SigV4 認証で Amazon Keyspaces に接続

   `cqlsh-expansion` を使用して Amazon Keyspaces に接続するには、次のコマンドを使用します。必ずサービスエンドポイントを、リージョンに適したエンドポイントに置き換えてください。

   ```
   cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
   ```

   正常に接続されると次の例のような出力が表示されます。

   ```
   Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142
   [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
   Use HELP for help.
   cqlsh current consistency level is ONE.
   cqlsh>
   ```

   接続エラーが発生した場合は、「[cqlsh を使用して Amazon Keyspaces に接続できない](troubleshooting.connecting.md#troubleshooting.connection.cqlsh)」でトラブルシューティング情報をご確認ください。
   + サービス固有の認証情報で Amazon Keyspaces に接続します。

     Cassandra が認証に使用する従来のユーザー名とパスワードの組み合わせで接続するには、[Amazon Keyspaces にプログラムによってアクセスするためのサービス固有の認証情報を作成する](programmatic.credentials.ssc.md) にあるように、まず Amazon Keyspaces 用のサービス固有の認証情報を作成する必要があります。また、Amazon Keyspaces にアクセスするための権限をそのユーザーに与える必要があります。詳細については、「[Amazon Keyspaces テーブルへのアクセス](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-one-table)」を参照してください。

     ユーザー用にサービス固有の認証情報と権限を作成したら、`cqlshrc` ファイルを更新します。通常、このファイルはユーザーディレクトリパス `~/.cassandra/` にあります。`cqlshrc` ファイル内の Cassandra `[authentication]` セクションに移動し、以下の例のように「;」文字を使用して `[auth_provider]` の下にある SigV4 モジュールとクラスをコメントアウトします。

     ```
     [auth_provider]
     
     ; module = cassandra_sigv4.auth
     
     ; classname = SigV4AuthProvider
     ```

     `cqlshrc` ファイルを更新すると、次のコマンドで Amazon Keyspaces に接続できます。サービス固有の認証情報で Amazon Keyspaces に接続できます。

     ```
     cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 -u myUserName -p myPassword --ssl
     ```

**クリーンアップ**
+ `cqlsh-expansion` パッケージを削除するには、`pip uninstall` コマンドを使用します。

  ```
  pip3 uninstall cqlsh-expansion
  ```

  `pip3 uninstall` コマンドでは、インストール後のスクリプトによって作成されたディレクトリと関連ファイルは削除されません。ポストインストールスクリプトによって作成されたフォルダとファイルを削除するには、`.cassandra` ディレクトリを削除します。

## TLS の `cqlsh` 接続を手動で設定する方法
<a name="encrypt_using_tls"></a>

Amazon Keyspaces では、Transport Layer Security (TLS) を使用した安全な接続しか許容されません。証明書を自動的にダウンロードし、事前設定された`cqlshrc`設定ファイルをインストールする `cqlsh-expansion`ユーティリティを使用できます。詳細については、このページの「[`cqlsh-expansion` による Amazon Keyspaces までの接続](#using_cqlsh)」を参照してください。

証明書をダウンロードして接続を手動で設定する場合は、次の手順を実行します。

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

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

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

1. Cassandra ホームディレクトリにある `cqlshrc` 設定ファイル（`${HOME}/.cassandra/cqlshrc` など）を開いて、次の行を追加します。

   ```
   [connection]
   port = 9142
   factory = cqlshlib.ssl.ssl_transport_factory
   
   [ssl]
   validate = true
   certfile =  path_to_file/keyspaces-bundle.pem
   ```