用cqlsh於連接到 Amazon Keyspaces - Amazon Keyspaces (適用於 Apache Cassandra)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

cqlsh於連接到 Amazon Keyspaces

要使用連接到 Amazon Keyspacescqlsh,您可以使用cqlsh-expansion. 這是一個包含常見的 Apache 卡桑德拉工具一樣,cqlsh並預先配置為 Amazon Keyspaces 助手,同時保持與 Apache 卡桑德拉完全兼容的工具包。該cqlsh-expansion集成了 Sigv4 身份驗證插件,並允許您使用IAM訪問密鑰而不是用戶名和密碼進行連接。您只需要安裝cqlsh腳本來建立連接,而不是完整的 Apache 卡桑德拉分佈,因為 Amazon Keyspaces 是無服務器的。此輕量型安裝套件cqlsh-expansion包含可在任何支援 Python 的平台上安裝的傳統cqlsh指令碼。

注意

Murmur3Partitioner是推薦的 Amazon Keyspaces 和. cqlsh-expansion cqlsh-expansion不支持 Amazon Keyspaces DefaultPartitioner。如需詳細資訊,請參閱使用 Amazon Keyspaces 中的分區程序

如需有關的一般資訊cqlsh,請參閱cqlsh:CQL殼層

使用連cqlsh-expansion接到 Amazon Keyspaces

安裝和配置 cqlsh-expansion
  1. 若要安裝 cqlsh-expansion Python 套件,您可以執行pip命令。這將使用 pip install 以及包含依賴關係列表的文件在您的計算機上安裝cqlsh-expansion腳本。--user flag告訴使pip用 Python 用戶安裝目錄為您的平台。在基於 Unix 的系統上,這應該是~/.local/目錄。

    你需要 Python 3 來安裝cqlsh-expansion,找出你的 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. 將星空數位憑證複製到.cassandra目錄中。Amazon Keyspaces 使用此憑證來設定與傳輸層安全性 (TLS) 的安全連線。傳輸中的加密功能會在資料往返 Amazon Keyspaces 時加密,藉此提供額外的資料保護層。

    要首先查看腳本,您可以在 Github 存儲庫中訪問它post_install.py

    要使用該腳本,您可以運行以下命令。

    cqlsh-expansion.init
    注意

    當您解除安裝cqlsh-expansion使用時,不會移除安裝後指令碼所建立的目錄和檔案pip uninstall,而且必須手動刪除。

使用連接到 Amazon Keyspaces cqlsh-expansion
  1. 配置您的 AWS 區域 並將其添加為用戶環境變量。

    若要將預設 Region 新增為 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存取金鑰的詳細資訊,請參閱〈〉建立和設定 AWS Amazon Keyspaces 的憑據

    2. 建立一個IAM政策,以授予角色 (或IAM使用者) 至少對 Amazon 金 Keyspaces 的唯讀存取權限。如需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 身份驗證 Connect 到 Amazon Keyspaces。

    要使用連接到 Amazon Keyspacescqlsh-expansion,您可以使用以下命令。確保將服務端點替換為您區域的正確端點。

    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取得疑難排解資訊。

    • 使用服務特定登入資料 Connect 到 Amazon Keyspaces。

      要與 Cassandra 用於身份驗證的傳統用戶名和密碼組合連接,您必須首先為 Amazon 密 Keyspaces 創建特定服務的憑據,如中所述。建立服務特定登入資料,以程式設計方式存取 Amazon Keyspaces您還必須授予該使用者存取 Amazon Keyspaces 的權限,如需詳細資訊,請參閱存取 Amazon Keyspaces 資料表

      為使用者建立服務特定認證和權限之後,您必須更新cqlshrc檔案,通常位於使用者目錄路徑~/.cassandra/中。在該cqlshrc文件中,轉到卡桑德拉[authentication]部分,並註釋掉[auth_provider]使用下的 SIGv4 模塊和類「;」字符,如下面的例子。

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

      更新cqlshrc檔案後,您可以使用下列命令使用服務特定登入資料連線到 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錄。

如何手動設定cqlsh連線 TLS

Amazon Keyspaces 僅接受使用傳輸層安全性 (TLS) 的安全連線。您可以使用自動為您下載憑證並安裝預先設定的cqlshrc組態檔的cqlsh-expansion公用程式。如需詳細資訊,請參閱本頁使用連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,則可以繼續這麼做。Starfield 憑證為使用舊版憑證授權單位的用戶端提供額外的向後相容性。

  2. 例如,在卡桑德拉主目錄中打開cqlshrc配置文件,${HOME}/.cassandra/cqlshrc並添加以下幾行。

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