cqlsh を使用した Amazon Keyspaces への接続 - Amazon Keyspaces (Apache Cassandra 向け)

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

cqlsh を使用した Amazon Keyspaces への接続

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 スクリプトが含まれています。

cqlsh」の詳細については、cqlsh: CQL シェル」 を参照してください。

cqlsh-expansion による Amazon Keyspaces までの接続

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

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

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

    3. Starfield デジタル証明書を .cassandra ディレクトリにコピーします。Amazon Keyspaces では、この証明書で、Transport Layer Security (TLS) との安全な接続を設定します。転送時の暗号化では、Amazon Keyspaces との間で送受信するときにデータを暗号化することによって、データ保護のレイヤーを追加します。

    このスクリプトを最初に確認するため、post_install.py にある Github リポジトリからスクリプトにアクセスします。

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

    cqlsh-expansion.init
    注記

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

cqlsh-expansion を使用した Amazon Keyspaces への接続
  1. を設定し AWS リージョン 、ユーザー環境変数として追加します。

    デフォルトのリージョンを Unix ベースのシステム上の環境変数として追加するには、次のコマンドを実行します。この例では、米国東部 (バージニア北部) を使用します

    export AWS_DEFAULT_REGION=us-east-1

    他のプラットフォーム用など、環境変数の設定方法の詳細については、「環境変数を設定する方法」を参照してください。

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

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

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

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

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

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

    2. Amazon Keyspaces に少なくとも読み取り専用アクセス権限を与えるロール(または IAM ユーザー)を作成します。IAM ユーザーまたはロールが Amazon Keyspaces に接続するために必要な権限の詳細については、「Amazon Keyspaces テーブルへのアクセス」を参照してください。

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

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

      他のプラットフォームなど、環境変数の設定方法の詳細については、「環境変数を設定する方法」を参照してください。

      注記

      Amazon EC2 インスタンスから接続する場合は、インスタンスから Amazon Keyspaces へのトラフィックを許可するアウトバウンドルールをセキュリティグループで設定する必要もあります。EC2 アウトバウンドルールを表示および編集する方法の詳細については、Amazon EC2」を参照してください。

  4. 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 に接続できない「」でトラブルシューティング情報を参照してください。

    • サービス固有の認証情報で Amazon Keyspaces に接続します。

      Cassandra が認証に使用する従来のユーザー名とパスワードの組み合わせで接続するには、サービス固有の認証情報を生成する にあるように、まず Amazon Keyspaces 用のサービス固有の認証情報を作成する必要があります。また、Amazon Keyspaces にアクセスするための権限をそのユーザーに与える必要があります。詳細については、「Amazon Keyspaces テーブルへのアクセス」を参照してください。

      ユーザー用にサービス固有の認証情報と権限を作成したら、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 接続を手動で設定する方法

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

証明書をダウンロードして手動で接続を設定する場合は、以下の手順に従います。

  1. 次のコマンドを使用して Starfield デジタル証明書をダウンロードし、sf-class2-root.crt をローカルまたはホームディレクトリ内に保存します。

    curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
    注記

    Amazon デジタル証明書を使用して Amazon Keyspaces に接続することもできます。クライアントが Amazon Keyspaces に正常に接続されている場合は、引き続き Amazon Keyspaces に接続できます。Starfield 証明書は、古い認定権限を使用しているクライアントに対して追加の下位互換性を提供するものです。

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

    [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory [ssl] validate = true certfile = path_to_file/sf-class2-root.crt