

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

# 存取 Amazon Keyspaces （適用於 Apache Cassandra)
<a name="accessing"></a>

您可以使用主控台 AWS CloudShell、透過執行`cqlsh`用戶端、軟體 AWS 開發套件或使用 Apache 2.0 授權的 Cassandra 驅動程式，以程式設計方式存取 Amazon Keyspaces。Amazon Keyspaces 支援與 Apache Cassandra 3.11.2 相容的驅動程式和用戶端。存取 Amazon Keyspaces 之前，您必須完成設定， AWS Identity and Access Management 然後將 IAM 身分存取許可授予 Amazon Keyspaces。

## 設定 AWS Identity and Access Management
<a name="SettingUp.IAM"></a>

### 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

如果您沒有 AWS 帳戶，請完成下列步驟來建立一個。

**註冊 AWS 帳戶**

1. 開啟 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 請遵循線上指示進行。

   部分註冊程序需接收來電或簡訊，並在電話鍵盤輸入驗證碼。

   當您註冊 時 AWS 帳戶，*AWS 帳戶根使用者*會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務，請將管理存取權指派給使用者，並且僅使用根使用者來執行[需要根使用者存取權的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時登錄 [https://aws.amazon.com/](https://aws.amazon.com/) 並選擇**我的帳戶**，以檢視您目前的帳戶活動並管理帳戶。

### 建立具有管理存取權的使用者
<a name="create-an-admin"></a>

註冊 後 AWS 帳戶，請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center和建立管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

   如需使用根使用者登入的說明，請參閱 *AWS 登入 使用者指南*中的[以根使用者身分登入](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

   如需說明，請參閱《*IAM 使用者指南*》中的[為您的 AWS 帳戶 根使用者 （主控台） 啟用虛擬 MFA 裝置](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**建立具有管理存取權的使用者**

1. 啟用 IAM Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

## 設定 Amazon Keyspaces
<a name="SettingUp.KEY"></a>

 使用 [IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)管理對 Amazon Keyspaces 資源的存取。使用 IAM，您可以將政策連接至 IAM 使用者、角色和聯合身分，以授予 Amazon Keyspaces 中特定資源的讀取和寫入許可。

若要開始將許可授予 IAM 身分，您可以使用 Amazon Keyspaces 的其中一個 AWS 受管政策：
+ [AmazonKeyspacesFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonKeyspacesFullAccess.html) – 此政策授予許可，以存取 Amazon Keyspaces 中的所有資源，並完整存取所有功能。
+ [AmazonKeyspacesReadOnlyAccess\$1v2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonKeyspacesReadOnlyAccess_v2.html) – 此政策會將唯讀許可授予 Amazon Keyspaces。

如需 受管政策中定義之動作的詳細說明，請參閱 [AWS Amazon Keyspaces 的 受管政策](security-iam-awsmanpol.md)。

若要限制 IAM 身分可執行的動作範圍，或限制身分可存取的資源，您可以建立使用 `AmazonKeyspacesFullAccess`受管政策做為範本的自訂政策，並移除不需要的所有許可。您也可以限制對特定金鑰空間或資料表的存取。如需如何限制動作或限制存取 Amazon Keyspaces 中特定資源的詳細資訊，請參閱 [Amazon Keyspaces 如何與 IAM 搭配使用](security_iam_service-with-iam.md)。

若要在建立 AWS 帳戶 並建立授予 IAM 身分存取 Amazon Keyspaces 的政策之後存取 Amazon Keyspaces，請繼續下列其中一個區段：
+ [使用主控台](console_keyspaces.md)
+ [使用 AWS CloudShell](using-aws-with-cloudshell.md)

# 使用主控台存取 Amazon Keyspaces
<a name="console_keyspaces"></a>

您可以在 存取 Amazon Keyspaces 的 主控台[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home)。如需 AWS 管理主控台 存取的詳細資訊，請參閱《[IAM 使用者指南》中的控制 IAM 使用者對 的存取 AWS 管理主控台](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_controlling-access.html)。

您可以使用 主控台在 Amazon Keyspaces 中執行下列動作：
+ 建立、刪除和管理金鑰空間和資料表。
+ 在資料表的監控標籤上**監控**重要資料表指標：
  + 計費資料表大小 （位元組）
  + 容量指標
+ 使用 CQL 編輯器或透過[整合式 AWS CloudShell 體驗](console_cloudshell_integration.md)執行查詢，例如插入、更新和刪除資料。
+ 透過整合 AWS CloudShell 的 CQLSH 支援，直接連線至 Amazon Keyspaces。
+ 變更帳戶的分割區組態。
+ 在儀表板上檢視帳戶的效能和錯誤指標。

# AWS CloudShell 從主控台使用 連線至 Amazon Keyspaces
<a name="console_cloudshell_integration"></a>

AWS CloudShell 提供從主控台直接連線至 Amazon Keyspaces 的簡化方法。 AWS CloudShell 整合會自動`cqlsh-expansion`為您初始化 ，並建立與特定金鑰空間的連線。

## AWS CloudShell 整合入門
<a name="cloudshell_getting_started"></a>

1. **存取 AWS CloudShell 整合** – 從 Amazon Keyspaces 主控台導覽至您要連線的金鑰空間，然後選擇**連線至金鑰空間** AWS CloudShell 按鈕。

1. **預先填入的設定命令** – 當您選擇 AWS CloudShell 按鈕時，系統會提供預先填入的命令，其中包含必要的初始化和連線參數：

   ```
   cqlsh-expansion.init ; cqlsh-expansion cassandra.region.amazonaws.com 9142 --ssl -my_keyspace
   ```

1. **按一下**執行****

1. **等待 Amazon Keyspaces 建立連線** – 讓設定程序有時間完成，並建立與所選金鑰空間的連線。

1. **執行命令** – 連線時，您可以直接針對選取的金鑰空間寫入和執行 CQL 命令。

## 可用的 CQLSH 命令
<a name="available_cqlsh_commands"></a>

 AWS CloudShell 整合可讓您存取標準 CQLSH 功能，包括支援基本 CQL 以外的命令。
+ **描述** – 列出和檢視鍵空間和資料表的詳細說明。
+ **複製** – 將查詢輸出匯出至檔案以供日後處理。
+ **來源** – 從檔案執行 CQL 陳述式。
+ **命令歷史記錄導覽** – 使用鍵盤快速鍵捲動先前的命令。
+ **查詢執行** – 直接從鍵盤界面執行查詢。
+ **輸出複製** – 將結果複製為簡單文字，以用於其他應用程式。

## 功能考量
<a name="feature_considerations"></a>

使用 AWS CloudShell 整合時，請考慮下列取捨。

**不支援下列功能：**
+ CQL 語法建議和自動完成功能。
+ 編輯器工具，例如顯示自動完成、顯示工具提示、尋找、尋找和取代、重做、切換區塊註解、切換程式碼摺疊、切換行註解和復原。

**修改的功能：**
+ **CSV 下載** – 若要以 CSV 格式下載結果，請指定`>`運算子到管道命令輸出：

  ```
  SELECT * FROM my_table > file_name.csv
  ```
+ **JSON 檢視** - 您可以 JSON 格式檢視項目，而不需要資料轉換。
+ **終端機式界面** - 體驗以終端機界面運作，而不是功能完整的程式碼編輯器。

 AWS CloudShell 整合可簡化連線程序，同時提供直接從 管理 Amazon Keyspaces 資料所需的 CQL 功能 AWS 管理主控台。

若要了解如何建立 Amazon Keyspaces 金鑰空間和資料表，並使用範例應用程式資料進行設定，請參閱 [Amazon Keyspaces 入門 （適用於 Apache Cassandra)](getting-started.md)。

# 使用 AWS CloudShell 存取 Amazon Keyspaces
<a name="using-aws-with-cloudshell"></a>

AWS CloudShell 是以瀏覽器為基礎的預先驗證 Shell，您可以直接從 啟動 AWS 管理主控台。您可以使用您偏好的 shell (Bash、PowerShell 或 Z shell) 對 AWS 服務執行 AWS CLI 命令。 使用您的主控台登入資料 AWS CloudShell 進行預先驗證，並包含使用 AWS 服務的常用工具，包括 AWS CLI、Python 和 Node.js。

您[AWS CloudShell 從 啟動 AWS 管理主控台](https://docs.aws.amazon.com/cloudshell/latest/userguide/working-with-cloudshell.html#launch-options)，而且您用來登入主控台的 AWS 登入資料會自動在新的 shell 工作階段中使用。此預先驗證 AWS CloudShell 使用者可讓您在使用 `cqlsh`或 第 2 AWS CLI 版 （預先安裝在 shell 的運算環境） 與 Amazon Keyspaces 等 AWS 服務互動時，略過設定登入資料。

## AWS CloudShell 整合選項
<a name="cloudshell-integration-options"></a>

Amazon Keyspaces 提供兩種使用方式 AWS CloudShell：

1. **整合 AWS CloudShell 體驗** - 直接從 Amazon Keyspaces 主控台提供的簡化連線方法，可自動初始化 `cqlsh-expansion`並連接至特定的金鑰空間。如需使用此整合體驗的完整說明，請參閱 [AWS CloudShell 從主控台使用 連線至 Amazon Keyspaces](console_cloudshell_integration.md)。

1. **手動 AWS CloudShell 設定** - 在 `cqlsh` 中手動安裝和設定 AWS CloudShell。這些步驟會在以下各節中說明，並提供更多對設定程序的控制，以及啟用自訂組態。

## 先決條件
<a name="cloudshell-prerequisites"></a>

搭配 使用 Amazon Keyspaces 之前 AWS CloudShell，請確定您有：
+ 可存取 Amazon Keyspaces 和 AWS 的帳戶 AWS CloudShell
+ 使用這兩種服務的適當 IAM 許可
+ 對 Cassandra 查詢語言 (CQL) 的基本熟悉度

## 入門 AWS CloudShell
<a name="getting-started-cloudshell"></a>

若要存取 AWS CloudShell：

1. 登入 AWS 管理主控台

1.  AWS CloudShell 選擇主控台頂端導覽列中的 AWS CloudShell 圖示，或導覽至 https：//[https://console.aws.amazon.com/cloudshell/](https://console.aws.amazon.com/cloudshell/) 來啟動

1. 等待 AWS CloudShell 環境初始化

## 取得 的 IAM 許可 AWS CloudShell
<a name="cloudshell-permissions"></a>

 AWS Identity and Access Management管理員可以使用 提供的存取管理資源，將許可授予 IAM 使用者，讓他們可以存取 AWS CloudShell 和使用環境的功能。

管理員授予使用者存取權的最快速方法是透過 AWS 受管政策。[AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)是由 AWS建立並管理的獨立政策。下列 CloudShell 受 AWS 管政策可以連接到 IAM 身分：
+ `AWSCloudShellFullAccess`：授予許可，以使用 AWS CloudShell 並完整存取所有功能。

如果您想要限制 IAM 使用者可以執行的動作範圍 AWS CloudShell，您可以建立使用 `AWSCloudShellFullAccess`受管政策做為範本的自訂政策。如需限制 CloudShell 中使用者可用的動作的詳細資訊，請參閱*AWS CloudShell 《 使用者指南*》中的[使用 IAM 政策管理 AWS CloudShell 存取和用量](https://docs.aws.amazon.com/cloudshell/latest/userguide/sec-auth-with-identities.html)。

**注意**  
您的 IAM 身分也需要政策，授予對 Amazon Keyspaces 進行呼叫的許可。

您可以使用 AWS 受管政策為您的 Amazon Keyspaces 提供 IAM 身分存取權，或從 受管政策作為範本開始，並移除您不需要的許可。您也可以限制對特定金鑰空間和資料表的存取，以建立自訂政策。下列 Amazon Keyspaces 的受管政策可以連接到 IAM 身分：
+ [AmazonKeyspacesFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonKeyspacesFullAccess.html) – 此政策授予許可，以使用具有所有功能完整存取權的 Amazon Keyspaces。

如需受管政策中定義之動作的詳細說明，請參閱 [AWS Amazon Keyspaces 的 受管政策](security-iam-awsmanpol.md)。

 如需如何限制動作或限制存取 Amazon Keyspaces 中特定資源的詳細資訊，請參閱 [Amazon Keyspaces 如何與 IAM 搭配使用](security_iam_service-with-iam.md)。

## 安裝 cqlsh 用戶端
<a name="installing-cqlsh-client"></a>

AWS CloudShell 不會隨附`cqlsh`預先安裝的 。您需要安裝它才能與 Amazon Keyspaces 互動。您可以安裝 的 Amazon Keyspaces 特定版本`cqlsh`。如需`cqlsh-expansion`安裝說明，請參閱 [使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。

## 設定 TLS 憑證
<a name="configuring-ssl-certificates"></a>

若要使用 TLS 連線連線至 Amazon Keyspaces，您需要下載所需的 Amazon 數位憑證。如需下載和設定 SSL 憑證的詳細說明，請參閱 [如何手動設定 TLS 的`cqlsh`連線](programmatic.cqlsh.md#encrypt_using_tls)。

## 連線至 Amazon Keyspaces
<a name="connecting-to-keyspaces"></a>

您可以使用 IAM 登入資料 （建議） 或服務特定的登入資料來連線至 Amazon Keyspaces。

### 使用 IAM 登入資料連線 （建議）
<a name="connecting-iam-credentials"></a>

AWS CloudShell 已使用您的 IAM 登入資料進行身分驗證。若要使用這些登入資料進行連線，您可以使用 SigV4 身分驗證外掛程式。如需搭配 使用 IAM 登入資料的詳細指示`cqlsh`，請參閱 [使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。

### 使用服務特定的登入資料進行連線
<a name="connecting-service-specific-credentials"></a>

如果您已為 Amazon Keyspaces 建立服務特定的登入資料，您可以使用它們進行連線。如需建立和使用服務特定登入資料的資訊，請參閱 [建立服務特定的登入資料，以程式設計方式存取 Amazon Keyspaces](programmatic.credentials.ssc.md)。

## 搭配 Amazon Keyspaces 使用 CQLSH
<a name="using-cqlsh-keyspaces"></a>

連線時，您可以使用標準 CQL 命令與 金鑰空間和資料表互動。如需支援的 CQL 命令和操作的詳細資訊，請參閱 [使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。

## 在 中保留資料 AWS CloudShell
<a name="persisting-data-cloudshell"></a>

AWS CloudShell 會在您的主目錄中提供 1 GB 的持久性儲存。這表示您建立的指令碼、憑證和組態檔案在工作階段之間仍然可用。您可以為 建立組態檔案`cqlsh`，以簡化連線。

使用組態檔案，您可以執行 `cqlsh` 而無需指定其他參數。如需建立和使用`cqlsh`組態檔案的詳細資訊，請參閱 [使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。

## 最佳實務
<a name="best-practices-cloudshell"></a>

搭配 使用 Amazon Keyspaces 時 AWS CloudShell，我們建議下列最佳實務：
+ 建立重複任務的指令碼，並將其存放在您的持久性主目錄中。
+ 將環境變數用於敏感資訊，而不是硬式編碼。
+ 請記住， AWS CloudShell 工作階段可能會在閒置後逾時。
+ 請注意 AWS CloudShell 服務配額和限制。
+ 考慮使用 搭配 Amazon Keyspaces AWS CLI 進行自動化操作。

## 疑難排解
<a name="troubleshooting-cloudshell"></a>

如果您在從下列位置連線至 Amazon Keyspaces 時遇到問題 AWS CloudShell：
+ 確認您的 IAM 許可包含必要的 Amazon Keyspaces 動作。
+ 請確定您使用的是 區域的正確端點。
+ 檢查 SSL 憑證是否已正確下載並參考。
+ 確認您的服務特定登入資料正確且未過期。
+ 如果使用 cqlshrc 檔案，請檢查其格式和許可。

## 範例：如何使用 與 Amazon Keyspaces 互動 AWS CloudShell
<a name="cshell-examples"></a>

 AWS CloudShell 從 啟動後 AWS 管理主控台，您可以立即開始使用 `cqlsh`或命令列界面與 Amazon Keyspaces 互動。如果您尚未安裝 `cqlsh-expansion`，請參閱 [使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh) 以取得詳細步驟。

**注意**  
在 `cqlsh-expansion` 中使用 時 AWS CloudShell，您不需要在呼叫之前設定登入資料，因為您已在 shell 中驗證。

**連線至 Amazon Keyspaces 並建立新的金鑰空間。然後從系統資料表讀取 ，以確認使用 建立金鑰空間 AWS CloudShell**

1. 從 中 AWS 管理主控台，您可以選擇導覽列上可用的下列選項來啟動 CloudShell：
   +  選擇 CloudShell 圖示。
   + 開始`cloudshell`在搜尋方塊中輸入 ，然後選擇 CloudShell 選項。

1. 您可以使用下列命令建立與 Amazon Keyspaces 的連線。請務必`cassandra.us-east-1.amazonaws.com`將 取代為您區域的正確端點。

   ```
   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>
   ```

1. 使用名稱 建立新的金鑰空間`mykeyspace`。您可以使用下列命令來執行此操作。

   ```
   CREATE KEYSPACE mykeyspace WITH REPLICATION = {'class': 'SingleRegionStrategy'};
   ```

1. 若要確認金鑰空間已建立，您可以使用下列命令從系統資料表讀取。

   ```
   SELECT * FROM system_schema_mcs.keyspaces WHERE keyspace_name = 'mykeyspace';
   ```

   如果呼叫成功，命令列會顯示類似下列輸出的服務回應：

   ```
    keyspace_name  | durable_writes | replication
   ----------------+----------------+-------------------------------------------------------------------------------------
    mykeyspace     |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
   
   (1 rows)
   ```

# 建立 Amazon Keyspaces 的程式設計存取憑證
<a name="programmatic.credentials"></a>

若要為使用者和應用程式提供以程式設計方式存取 Amazon Keyspaces 資源的登入資料，您可以執行下列其中一項操作：
+ 建立與 Cassandra 用於身分驗證和存取管理的傳統使用者名稱和密碼類似的服務特定登入資料。 AWS 服務特定登入資料會與特定 AWS Identity and Access Management (IAM) 使用者建立關聯，且只能用於為其建立的服務。如需詳細資訊，請參閱《[IAM 使用者指南》中的搭配使用 IAM 與 Amazon Keyspaces （適用於 Apache Cassandra)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_keyspaces.html)。
**警告**  
IAM 使用者具有長期憑證，這會造成安全風險。為了協助降低此風險，建議您只為這些使用者提供執行任務所需的許可，並在不再需要這些使用者時將其移除。
+ 為了增強安全性，建議您建立用於所有 AWS 服務的 IAM 身分，並使用暫時登入資料。Cassandra 用戶端驅動程式的 Amazon Keyspaces SigV4 身分驗證外掛程式可讓您使用 IAM 存取金鑰來驗證對 Amazon Keyspaces 的呼叫，而不是使用者名稱和密碼。若要進一步了解 Amazon Keyspaces SigV4 外掛程式如何讓 [IAM 使用者、角色和聯合身分](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)在 Amazon Keyspaces API 請求中進行身分驗證，請參閱[AWS 簽章第 4 版程序 (SigV4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

  您可以從下列位置下載 SigV4 外掛程式。
  + Java：[https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-java-driver-plugin)。
  + Node.js：[https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin)。
  + Python: [https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin).
  + Go：[https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin](https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin)。

  如需示範如何使用 SigV4 身分驗證外掛程式建立連線的程式碼範例，請參閱 [使用 Cassandra 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces](programmatic.drivers.md)。

**Topics**
+ [建立服務特定的登入資料](programmatic.credentials.ssc.md)
+ [建立 IAM 登入資料以進行 AWS 身分驗證](access.credentials.md)

# 建立服務特定的登入資料，以程式設計方式存取 Amazon Keyspaces
<a name="programmatic.credentials.ssc"></a>

服務特定的登入資料類似於 Cassandra 用於身分驗證和存取管理的傳統使用者名稱和密碼。服務特定的登入資料可讓 IAM 使用者存取特定 AWS 服務。這些長期登入資料無法用於存取其他 AWS 服務。它們與特定 IAM 使用者相關聯，無法供其他 IAM 使用者使用。

**重要**  
服務特定憑證是與特定 IAM 使用者關聯的長期憑證，只能用於為其建立的服務。若要授予 IAM 角色或聯合身分使用臨時憑證存取所有 AWS 資源的許可，您應該使用 [AWS Amazon Keyspaces 的 SigV4 身分驗證外掛程式進行身分驗證](access.credentials.md)。

使用下列其中一個程序來產生服務特定的登入資料。

------
#### [ Console ]

**使用主控台建立服務特定的登入資料**

1. 登入 AWS 管理主控台 ，並在 開啟 AWS Identity and Access Management 主控台[https://console.aws.amazon.com/iam/home](https://console.aws.amazon.com/iam/home)。

1. 在導覽窗格中，選擇**使用者**，然後選擇您先前建立且具有 Amazon Keyspaces 許可 （附加政策） 的使用者。

1. 選擇**安全登入資料**。在 **Amazon Keyspaces 的登入資料**下，選擇**產生登入**資料以產生服務特定的登入資料。

   您的服務特定憑證現在可供使用。這是您唯一可以下載或檢視密碼的時間。您稍後無法進行復原。不過，您可以隨時重設密碼。請將使用者和密碼儲存在安全的位置，因為稍後需要用到。

------
#### [ CLI ]

**使用 建立服務特定的登入資料 AWS CLI**

 在產生服務特定的登入資料之前，您需要下載、安裝和設定 AWS Command Line Interface (AWS CLI)：

1. 在 AWS CLI https：//[http://aws.amazon.com/cli](https://aws.amazon.com/cli) 下載 。
**注意**  
 AWS CLI 會在 Windows、macOS 或 Linux 上執行。

1. 遵循*AWS Command Line Interface 《 使用者指南*》中[安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 和[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 的指示。

1. 使用 AWS CLI，執行下列命令來產生使用者 的服務特定登入資料`alice`，以便她可以存取 Amazon Keyspaces。

   ```
   aws iam create-service-specific-credential \
       --user-name alice \
       --service-name cassandra.amazonaws.com
   ```

輸出看起來如下。

```
{
    "ServiceSpecificCredential": {
        "CreateDate": "2019-10-09T16:12:04Z",
        "ServiceName": "cassandra.amazonaws.com",
        "ServiceUserName": "alice-at-111122223333",
        "ServicePassword": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "ServiceSpecificCredentialId": "ACCAYFI33SINPGJEBYESF",
        "UserName": "alice",
        "Status": "Active"
    }
}
```

在輸出中，記下 `ServiceUserName`和 的值`ServicePassword`。將這些值儲存在安全的位置，因為您稍後會需要這些值。

**重要**  
這是 唯一`ServicePassword`可供您使用的時間。

------

# 建立和設定 Amazon Keyspaces 的 AWS 登入資料
<a name="access.credentials"></a>

若要使用 AWS CLI、 AWS SDK 或使用 Cassandra 用戶端驅動程式和 SigV4 外掛程式以程式設計方式存取 Amazon Keyspaces，您需要具有存取金鑰的 IAM 使用者。當您以程式設計方式使用 Amazon Keyspaces 時，您會提供 AWS 存取金鑰，讓 AWS 在程式設計呼叫中驗證您的身分。您的存取金鑰包含存取金鑰 ID （例如 AKIAIOSFODNN7EXAMPLE) 和私密存取金鑰 （例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)。本主題會逐步引導您完成此程序的必要步驟。

安全最佳實務建議您建立具有有限許可的 IAM 使用者，並將 IAM 角色與執行特定任務所需的許可建立關聯。然後，IAM 使用者可以暫時擔任 IAM 角色來執行所需的任務。例如，您帳戶中使用 Amazon Keyspaces 主控台的 IAM 使用者可以切換至角色，以在主控台中暫時使用角色的許可。使用者放棄其原始許可並取得指派給該角色的許可。當使用者退出角色時，將恢復其原始許可。使用者用來擔任角色的登入資料是暫時的。相反地，IAM 使用者具有長期登入資料，如果 IAM 使用者沒有直接指派給他們的許可，則存在安全風險。為了協助降低此風險，建議您只為這些使用者提供執行任務所需的許可，並在不再需要這些使用者時將其移除。如需角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[角色的常見案例：使用者、應用程式和服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)。

**Topics**
+ [Cassandra 用戶端驅動程式的 AWS CLI、 AWS 開發套件或 Amazon Keyspaces SigV4 外掛程式所需的登入資料](SigV4_credentials.md)
+ [使用 IAM 角色和 SigV4 外掛程式建立臨時登入資料以連線至 Amazon Keyspaces](temporary.credentials.IAM.md)
+ [建立 IAM 使用者，以程式設計方式存取您 AWS 帳戶中的 Amazon Keyspaces](access.credentials.IAM.md)
+ [為 IAM 使用者建立新的存取金鑰](create.keypair.md)
+ [存放用於程式設計存取的存取金鑰](aws.credentials.manage.md)

# Cassandra 用戶端驅動程式的 AWS CLI、 AWS 開發套件或 Amazon Keyspaces SigV4 外掛程式所需的登入資料
<a name="SigV4_credentials"></a>

驗證 IAM 使用者或角色需要下列登入資料：

`AWS_ACCESS_KEY_ID`  
指定與 IAM 使用者或角色相關聯的 AWS 存取金鑰。  
`aws_access_key_id` 需要存取金鑰才能以程式設計方式連線至 Amazon Keyspaces。

`AWS_SECRET_ACCESS_KEY`  
指定與存取金鑰相關聯的私密金鑰。這基本上是存取金鑰的「密碼」。  
`aws_secret_access_key` 必須以程式設計方式連線至 Amazon Keyspaces。

`AWS_SESSION_TOKEN` – 選用  
指定當您直接從 AWS Security Token Service 作業擷取的暫時安全憑證時需要的工作階段字符值。如需詳細資訊，請參閱[使用 IAM 角色和 SigV4 外掛程式建立臨時登入資料以連線至 Amazon Keyspaces](temporary.credentials.IAM.md)。  
如果您要與 IAM 使用者連線，`aws_session_token`則不需要 。

# 使用 IAM 角色和 SigV4 外掛程式建立臨時登入資料以連線至 Amazon Keyspaces
<a name="temporary.credentials.IAM"></a>

以程式設計方式存取 Amazon Keyspaces 的建議方法是使用[臨時登入](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)資料來驗證 SigV4 外掛程式。在許多情況下，您不必像 IAM 使用者一樣需要永遠不會過期的長期存取金鑰。反之，您可以建立 IAM 角色並產生臨時安全登入資料。臨時安全登入資料包含存取金鑰 ID 和私密存取金鑰，但其中也包含指出登入資料何時到期的安全符記。若要進一步了解如何使用 IAM 角色而非長期存取金鑰，請參閱[切換到 IAM 角色 (AWS API)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html)。

若要開始使用臨時登入資料，您必須先建立 IAM 角色。

**建立授予 Amazon Keyspaces 唯讀存取權的 IAM 角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 在**建立角色**頁面的**選取信任實體類型**下，選擇**AWS 服務**。在**選擇使用案例**下，選擇 **Amazon EC2**，然後選擇**下一步**。

1. 在**新增許可**頁面的**許可政策**下，從政策清單中選擇 **Amazon Keyspaces 唯讀存取**，然後選擇**下一步**。

1. 在**名稱、檢閱和建立**頁面上，輸入角色的名稱，然後檢閱**選取信任的實體**和**新增許可**區段。您也可以在此頁面上為角色新增選用標籤。完成後，請選取**建立角色**。請記住此名稱，因為您在啟動 Amazon EC2 執行個體時需要此名稱。

若要在程式碼中使用臨時安全登入資料，請以程式設計方式呼叫類似 的 AWS Security Token Service API，`AssumeRole`並從您在上一個步驟中建立的 IAM 角色擷取產生的登入資料和工作階段字符。然後，您可以將這些值用作後續呼叫的登入資料 AWS。下列範例顯示如何使用臨時安全登入資料的虛擬程式碼：

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
cassandraRequest = CreateAmazoncassandraClient(tempCredentials);
```

如需使用 Python 驅動程式來存取 Amazon Keyspaces 實作臨時登入資料的範例，請參閱 [使用適用於 Apache Cassandra 的 DataStax Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces](using_python_driver.md#python_SigV4)。

如需如何呼叫 `AssumeRole`、`GetFederationToken` 以及其他 API 操作的詳細資訊，請參閱 [AWS Security Token Service API 參考](https://docs.aws.amazon.com/STS/latest/APIReference/)。有關從結果取得臨時安全憑證和工作階段權杖的詳細資訊，請參閱您正在使用的軟體開發套件的說明文件。您可以在 SDK **SDKs 和工具組**區段的主要文件頁面上找到所有 AWS SDKs 的文件。 [AWS](https://aws.amazon.com/documentation)

# 建立 IAM 使用者，以程式設計方式存取您 AWS 帳戶中的 Amazon Keyspaces
<a name="access.credentials.IAM"></a>

若要取得使用 AWS CLI、 AWS SDK 或 SigV4 外掛程式以程式設計方式存取 Amazon Keyspaces 的登入資料，您必須先建立 IAM 使用者或角色。下列步驟顯示建立 IAM 使用者並設定該 IAM 使用者以程式設計方式存取 Amazon Keyspaces 的程序：

1. 在 AWS 管理主控台、 AWS CLI、Tools for Windows PowerShell 或使用 AWS API 操作建立使用者。如果您在 中建立使用者 AWS 管理主控台，則會自動建立登入資料。

1. 如果您以程式設計方式建立使用者，則必須在其他步驟中為該使用者建立存取金鑰 （存取金鑰 ID 和私密存取金鑰）。

1. 授予使用者存取 Amazon Keyspaces 的許可。

如需建立 IAM 使用者所需的許可資訊，請參閱[存取 IAM 資源所需的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions-required.html)。

------
#### [ Console ]

**建立具有程式設計存取的 IAM 使用者 （主控台）**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇 **Users** (使用者)，然後選擇 **Add users** (新增使用者)。

1. 為新使用者輸入使用者名稱。這是 的登入名稱 AWS。
**注意**  
使用者名稱可以是長達 64 個字母、數字以及這些字元的組合：加號 (\$1)、等號 (=)、逗號 (,)、句號 (.)、@ 符號、底線 (\$1) 以及連字號 (-)。名稱在帳戶中必須是唯一的。它們無法透過大小寫進行區分。例如，您不可以建立兩個名為 *TESTUSER* 和 *testuser* 的使用者。

1. 選取**存取金鑰 - 程式設計存取**，為新使用者建立存取金鑰。您可以在前往**最終**頁面時檢視或下載存取金鑰。

   選擇**下一步：許可**。

1. 在**設定許可**頁面上，選擇**直接連接現有政策**，將許可指派給新使用者。

   此選項會顯示您帳戶中可用的 AWS 受管和客戶受管政策清單。您可以在搜尋欄位中輸入 `keyspaces` ，以僅顯示與 Amazon Keyspaces 相關的政策。

   對於 Amazon Keyspaces，可用的受管政策為 `AmazonKeyspacesFullAccess`和 `AmazonKeyspacesReadOnlyAccess`。如需每個政策的詳細資訊，請參閱 [AWS Amazon Keyspaces 的 受管政策](security-iam-awsmanpol.md)。

   為了測試目的和遵循連線教學課程，請選取新 IAM 使用者`AmazonKeyspacesReadOnlyAccess`的政策。**注意：**最佳實務是，建議您遵循最低權限原則，並建立自訂政策來限制對特定資源的存取，並僅允許必要的動作。如需 IAM 政策和檢視 Amazon Keyspaces 範例政策的詳細資訊，請參閱 [Amazon Keyspaces 身分型政策](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies)。建立自訂許可政策之後，請將政策連接至角色，然後讓使用者暫時擔任適當的角色。

   選擇下**一步：標籤**。

1. 在**新增標籤 （選用）** 頁面上，您可以為使用者新增標籤，或選擇**下一步：檢閱**。

1. 在**檢閱**頁面上，您可以看到到目前為止所做的所有選擇。當您準備好繼續時，請選擇**建立使用者**。

1. 若要檢視使用者的存取金鑰 (存取金鑰 ID 和私密存取金鑰)，請選擇密碼和存取金鑰旁的 **Show (顯示)**。若要儲存取金鑰，請選擇 **Download .csv (下載 .csv)**，然後將檔案儲存到安全的位置。
**重要**  
這是您檢視或下載私密存取金鑰的唯一機會，您需要此資訊才能使用 SigV4 外掛程式。請將使用者的新存取金鑰 ID 和私密存取金鑰存放在安全處。在此步驟之後，您將無法再存取該私密金鑰。

------
#### [ CLI ]

**建立具有程式設計存取的 IAM 使用者 (AWS CLI)**

1. 使用下列 AWS CLI 程式碼建立使用者。
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html)

1. 提供使用者程式設計存取權。這需要存取金鑰，可透過下列方式產生。
   + AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)
   + Tools for Windows PowerShell：[https://docs.aws.amazon.com/powershell/latest/reference/items/New-IAMAccessKey.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-IAMAccessKey.html)
   + IAM API： [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)
**重要**  
這是您檢視或下載私密存取金鑰的唯一機會，您需要此資訊才能使用 SigV4 外掛程式。請將使用者的新存取金鑰 ID 和私密存取金鑰存放在安全處。在此步驟之後，您將無法再存取該私密金鑰。

1. 將`AmazonKeyspacesReadOnlyAccess`政策連接至定義使用者許可的使用者。**注意：**最佳實務是，建議您將使用者新增至群組並將政策連接至群組，而不是直接連接至使用者，以管理使用者許可。
   + AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html)

------

# 為 IAM 使用者建立新的存取金鑰
<a name="create.keypair"></a>

如果您已有 IAM 使用者，您可以隨時建立新的存取金鑰。如需金鑰管理的詳細資訊，例如如何更新存取金鑰，請參閱[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。

**為 IAM 使用者建立存取金鑰 （主控台）**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇您要建立其存取金鑰的使用者名稱。

1. 在使用者的**摘要**頁面上，選擇**安全登入**資料索引標籤。

1. 在**存取金鑰****最佳實務和替代方案下的存取金鑰**區段中，選擇使用案例**其他**。按一下**下一步**，視需要輸入選用資訊，然後選擇**建立存取金鑰**。

   若要查看新的存取金鑰，請選擇 **Show (顯示)**。您的憑證看起來如下：
   + 存取金鑰 ID：AKIAIOSFODNN7EXAMPLE
   + 私密存取金鑰：wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
**注意**  
在關閉此對話方塊後，您將無法再次存取該私密存取金鑰。

   請考慮下列您已建立之金鑰對的最佳實務。
   + 切勿將您的存取金鑰以純文字、程式碼儲存庫或程式碼形式存放。
   + 不再需要時，停用或刪除存取金鑰。
   + 啟用最低權限許可。
   + 定期輪換存取金鑰。

1. 若要下載金鑰對，請選擇 **Download .csv file** (下載 .csv 檔案)。請將金鑰存放在安全位置。

1. 下載 .csv 檔案後，請選擇 **Close (關閉)**。

當您建立存取金鑰時，在預設情況下，該金鑰對是作用中的，且您可以立即使用該金鑰對。

# 存放用於程式設計存取的存取金鑰
<a name="aws.credentials.manage"></a>

最佳實務是，建議您不要將存取金鑰直接嵌入程式碼。「 AWS SDKs」和「 AWS 命令列工具」可讓您將存取金鑰放在已知位置，讓您不必將其保留在程式碼中。將存取金鑰放入以下其中一個位置：
+ **環境變數 **– 在多租戶系統上，選擇使用者環境變數，而非系統環境變數。
+ **CLI 憑證檔案** – 當您執行命令 `aws configure` 時，會更新 `credentials` 和 `config` 檔案。`credentials` 檔案位於 Linux、macOS 或 Unix `~/.aws/credentials`上的 ，或 Windows `C:\Users\USERNAME\.aws\credentials`上的 。此檔案可包含 `default` 描述檔和任何具名描述檔的憑證詳細資訊。
+ **CLI 組態檔** – 當您執行命令 `aws configure` 時，會更新 `credentials` 和 `config` 檔案。`config` 檔案位於 Linux、macOS 或 Unix `~/.aws/config`上的 ，或 Windows `C:\Users\USERNAME\.aws\config`上的 。此檔案包含預設描述檔和任何具名描述檔的組態設定。

將存取金鑰儲存為環境變數是 的先決條件[使用適用於 Apache Cassandra 的 4.x DataStax Java 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces 的Step-by-step教學課程](using_java_driver.md#java_tutorial.SigV4)。請注意，這包含預設值 AWS 區域。用戶端會使用預設登入資料提供者鏈結搜尋登入資料，而存放為環境變數的存取金鑰會優先於所有其他位置，例如組態檔案。如需詳細資訊，請參閱[組態設定和優先順序](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence)。

下列範例說明如何為預設使用者設定環境變數。

------
#### [ Linux, macOS, or Unix ]

```
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
$ export AWS_DEFAULT_REGION=us-east-1
```

設定環境變數會變更使用的數值，直到 Shell 工作階段結束或直到您將該變數設為其他數值。您可以在 Shell 的啟動指令碼中設定變數，讓它們跨未來的工作階段持續生效。

------
#### [ Windows Command Prompt ]

```
C:\> setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
C:\> setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> setx AWS_SESSION_TOKEN AQoDYXdzEJr...<remainder of security token>
C:\> setx AWS_DEFAULT_REGION us-east-1
```

使用 `[set](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)` 設定環境變數會變更使用的數值，直到目前命令提示工作階段結束或直到您將該變數設為其他數值。使用 [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx) 設定環境變數時，將會變更在目前命令提示工作階段及您在執行命令後建立的所有命令提示工作階段中使用的數值。***不會***影響您執行命令當時已執行的其他命令 Shell。

------
#### [ PowerShell ]

```
PS C:\> $Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
PS C:\> $Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
PS C:\> $Env:AWS_SESSION_TOKEN="AQoDYXdzEJr...<remainder of security token>"
PS C:\> $Env:AWS_DEFAULT_REGION="us-east-1"
```

如果您在 PowerShell 提示字元中設定環境變數 (如前一個範例所示)，它只會在目前的工作階段儲存該數值。若要讓環境變數設定在所有 PowerShell 和命令提示字元工作階段中持續存在，請使用 **Control Panel** (控制面板) 中的 **System** (系統) 應用程式。或者，您也可以將變數新增到 PowerShell 設定檔，為所有未來 PowerShell 工作階段設定變數。如需有關存放環境變數或跨工作階段持續存放的詳細資訊，請參閱 [PowerShell 文件](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_environment_variables)。

------

# Amazon Keyspaces 的服務端點
<a name="programmatic.endpoints"></a>

**Topics**
+ [連接埠和通訊協定](#ports)
+ [全域端點](#global_endpoints)
+ [AWS GovCloud (US) Region FIPS 端點](#fips_endpoints)
+ [中國區域端點](#china_endpoints)
+ [串流端點](#streams_endpoints)
+ [連線至雙堆疊端點](dualstack_endpoints.md)

## 連接埠和通訊協定
<a name="ports"></a>

您可以使用 Apache 2.0 授權的 Cassandra 驅動程式`cqlsh`，或使用 AWS CLI 和 AWS SDK，以程式設計方式存取 Amazon Keyspaces。

下表顯示不同存取機制的連接埠和通訊協定。


| 程式設計存取 | 站點 | 通訊協定 | 
| --- | --- | --- | 
| CQLSH | 9142 | TLS | 
| Cassandra 驅動程式 | 9142 | TLS | 
| AWS CLI | 443 | HTTPS | 
| AWS 開發套件 | 443 | HTTPS | 

 對於 TLS 連線，Amazon Keyspaces 會使用 Amazon Trust Services (Amazon Root CAs1–4) 發行的憑證來驗證伺服器。如需詳細資訊，請參閱 [如何手動設定 TLS 的`cqlsh`連線](programmatic.cqlsh.md#encrypt_using_tls)或 [使用 Cassandra 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces](programmatic.drivers.md) 章節中的驅動程式[開始之前](using_java_driver.md#using_java_driver.BeforeYouBegin)一節。

## 全域端點
<a name="global_endpoints"></a>

 Amazon Keyspaces 同時支援 IPv4 和 IPv6 公有端點。您可以選擇 IPv4 端點和雙堆疊端點。端點使用以下命名慣例，您可以在其中將 *us-east-1* 取代為資料表 AWS 區域 中可用的另一個。
+ **IPv4 端點** – `cassandra.us-east-1.amazonaws.com`
+ **雙堆疊端點** – `cassandra.us-east-1.api.aws`

如需雙堆疊端點以及如何設定連線的詳細資訊，請參閱 [連線至雙堆疊端點](dualstack_endpoints.md)。

Amazon Keyspaces 可在下列區域使用。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/programmatic.endpoints.html)

## AWS GovCloud (US) Region FIPS 端點
<a name="fips_endpoints"></a>

中的可用 FIPS 端點 AWS GovCloud (US) Region。Amazon Keyspaces 同時支援 IPv4 和 IPv6 FIPS 端點。您可以選擇 IPv4 端點和雙堆疊端點。如需詳細資訊，請參閱《 [*AWS GovCloud (US) 使用者指南*》中的 Amazon Keyspaces](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-keyspaces.html)。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/programmatic.endpoints.html)

## 中國區域端點
<a name="china_endpoints"></a>

Amazon Keyspaces 在中國 AWS 區域支援 IPv4 端點。

若要存取這些端點，您必須註冊一組中國區域獨有的個別帳戶登入資料。如需詳細資訊，請參閱[中國註冊、帳戶和登入資料](https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html)。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/programmatic.endpoints.html)

## 串流端點
<a name="streams_endpoints"></a>

Amazon Keyspaces CDC streams 在以下提供 AWS 區域。此資料表顯示每個區域的可用雙堆疊服務端點。如需 的詳細資訊 Amazon Keyspaces CDC streams，請參閱 [如何在 Amazon Keyspaces 中存取 CDC 串流端點](CDC_access-endpoints.md)。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/programmatic.endpoints.html)

# 連線至雙堆疊端點
<a name="dualstack_endpoints"></a>

Amazon Keyspaces 全域端點是接受 IPv4 和 IPv6 請求的雙堆疊端點。

使用 IPv6 連線至 Amazon Keyspaces 時，服務會自動調整系統資料表回應，以符合您的連線通訊協定。這可確保您的應用程式接收與其連線類型相符的一致網路地址資訊。這可為用戶端提供準確的網路拓撲資訊，同時保持現有 CQL 應用程式的回溯相容性。

Amazon Keyspaces 會自動偵測用戶端連線所使用的網路通訊協定 (IPv4 或 IPv6)，並相應地調整系統資料表回應。此偵測會在初始連線交握期間透明發生，不需要用戶端應用程式的額外組態。

Amazon Keyspaces 會根據您的連線通訊協定傳回 IP 地址。例如，來自 IPv4 網路的請求會傳回下列回應。

```
SELECT * FROM system.peers;
-- Returns IPv4 addresses in peer column
-- Example: 172.31.1.1, 172.31.1.2, etc.
```

從 IPv6 網路到雙堆疊端點的連線，例如 `cassandra.us-east-1.api.aws`，會傳回下列回應。

```
SELECT * FROM system.peers;
-- Returns IPv6 addresses in peer column
-- Example: 2001:db8::1, 2001:db8::2, etc.
```

如需 Amazon Keyspaces 中 IPv6 支援的詳細資訊，請參閱 [Amazon Keyspaces 中的 IPv6 支援](ipv6-support.md)。

# Amazon Keyspaces 中的 IPv6 支援
<a name="ipv6-support"></a>

Amazon Keyspaces 中的 IPv6 支援允許應用程式使用網際網路通訊協定第 6 版建立連線，後者是新一代網際網路通訊協定，可提供與 IPv4 相比大幅擴展的地址空間。實作使用同時支援 IPv4 和 IPv6 的雙堆疊端點，確保回溯相容性，同時實現面向未來的連線能力。如需端點清單，請參閱 [全域端點](programmatic.endpoints.md#global_endpoints)。

Amazon Keyspaces 透過雙堆疊架構實作 IPv6 支援，可維持完整的回溯相容性，同時啟用 IPv6 連線。

## Amazon Keyspaces 中的 DNS 解析
<a name="dns-resolution"></a>

當應用程式連線到雙堆疊端點時，DNS 解析程序會傳回兩種地址類型：

記錄 (IPv4)  
用於回溯相容性的傳統 IPv4 地址

AAAA 記錄 (IPv6)  
用於現代連線的新 IPv6 地址

用戶端的作業系統和網路堆疊會根據本機組態、網路可用性和系統偏好設定，自動選取最適合的通訊協定。

Cassandra 查詢語言 (CQL) 通訊協定可無縫支援 IPv6 連線，而無需變更應用程式碼。

自動通訊協定選擇  
+ 應用程式指定雙堆疊端點
+ 網路堆疊會根據可用性選擇 IPv4 或 IPv6 
+ 現有 CQL 應用程式不需要修改程式碼

驅動程式相容性  
+ 所有主要 CQL 驅動程式都以透明的方式支援 IPv6 
+ DataStax 驅動程式原生處理 IPv6 地址
+ 開放原始碼驅動程式可在不修改的情況下運作

連線一致性  
+ 系統資料表反映使用的連線通訊協定
+ IPv6 連線會在 中顯示 IPv6 地址 `system.peers`
+ IPv4 連線會繼續顯示 IPv4 地址

# 使用 `cqlsh` 連線至 Amazon Keyspaces
<a name="programmatic.cqlsh"></a>

若要使用 連線到 Amazon Keyspaces`cqlsh`，您可以使用 `cqlsh-expansion`。這是一個工具組，其中包含常見的 Apache Cassandra 工具，例如 `cqlsh`和針對 Amazon Keyspaces 預先設定的協助程式，同時保持與 Apache Cassandra 的完整相容性。`cqlsh-expansion` 整合了 SigV4 身分驗證外掛程式，並可讓您使用 IAM 存取金鑰來連線，而不是使用者名稱和密碼。您只需要安裝`cqlsh`指令碼來建立連線，而不是完整的 Apache Cassandra 分佈，因為 Amazon Keyspaces 是無伺服器。此輕量型安裝套件包含 `cqlsh-expansion`和傳統指令碼，您可以在任何支援 Python 的平台上安裝這些`cqlsh`指令碼。

**注意**  
`Murmur3Partitioner` 是 Amazon Keyspaces 和 的建議分割區。 `cqlsh-expansion``cqlsh-expansion` 不支援 Amazon Keyspaces `DefaultPartitioner`。如需詳細資訊，請參閱[在 Amazon Keyspaces 中使用分割區](working-with-partitioners.md)。

如需 的一般資訊`cqlsh`，請參閱 [`cqlsh`：CQL shell](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 安裝*，以及包含相依性清單的檔案，在您的機器上安裝`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
   ```

1. 若要設定 `cqlsh-expansion`，您可以執行安裝後指令碼，以自動完成下列步驟：

   1. 如果`.cassandra`目錄尚未存在，請在使用者主目錄中建立目錄。

   1. 將預先設定的`cqlshrc`組態檔案複製到 `.cassandra`目錄。

   1. 將合併的憑證檔案複製到 `.cassandra`目錄。Amazon Keyspaces 使用此憑證來設定與 Transport Layer Security (TLS) 的安全連線。傳輸中加密可在資料往返 Amazon Keyspaces 時加密資料，提供多一層的資料保護。如需憑證的詳細資訊，請參閱 [如何手動設定 TLS 的`cqlsh`連線](#encrypt_using_tls)。

   若要先檢閱指令碼，您可以在 的 Github 儲存庫中存取指令碼[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)。

   若要使用指令碼，您可以執行下列命令。

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

**使用 連線至 Amazon Keyspaces `cqlsh-expansion`**

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. 建立 IAM 政策，授予角色 （或 IAM 使用者） 至少對 Amazon Keyspaces 的唯讀存取權。如需 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。

   若要使用 連線到 Amazon Keyspaces`cqlsh-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](troubleshooting.connecting.md#troubleshooting.connection.cqlsh) 以取得故障診斷資訊。
   + 使用服務特定的登入資料連線至 Amazon Keyspaces。

     若要與 Cassandra 用於身分驗證的傳統使用者名稱和密碼組合連線，您必須先建立 Amazon Keyspaces 的服務特定憑證，如 中所述[建立服務特定的登入資料，以程式設計方式存取 Amazon Keyspaces](programmatic.credentials.ssc.md)。您也必須授予該使用者存取 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。

     ```
     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) 的安全連線。您可以使用 `cqlsh-expansion`公用程式來自動為您下載憑證，並安裝預先設定的`cqlshrc`組態檔案。如需詳細資訊，請參閱此頁面[使用 `cqlsh-expansion` 連線至 Amazon Keyspaces](#using_cqlsh)上的 。

如果您想要下載憑證並手動設定連線，您可以使用下列步驟執行此操作。

1.  下載下列數位憑證，並將檔案儲存在本機或主目錄中。

   1. AmazonRootCA1

   1. AmazonRootCA2

   1. AmazonRootCA3

   1. AmazonRootCA4

   1. Starfield Class 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 正在將所有 遷移 AWS 區域 至根據 Amazon Trust Services (Amazon 根 CAs 發行的憑證。在此轉換期間，請將用戶端設定為信任 Amazon 根 CAs1–4 和 Starfield 根，以確保所有區域的相容性。

1. 使用範例中的名稱 *keyspaces-bundle.pem*，將所有下載的憑證合併成單一`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
   ```

# 使用 AWS CLI 連線至 Amazon Keyspaces
<a name="access.cli"></a>

 您可以使用 AWS Command Line Interface (AWS CLI) 從命令列控制多個 AWS 服務，並透過指令碼將其自動化。透過 Amazon Keyspaces，您可以使用 AWS CLI 進行資料定義語言 (DDL) 操作，例如建立資料表。此外，您可以使用基礎設施做為程式碼 (IaC) 服務和工具，例如 AWS CloudFormation 和 Terraform。

您必須先取得存取金鑰 ID 和私密存取金鑰，才能 AWS CLI 搭配 Amazon Keyspaces 使用 。如需詳細資訊，請參閱[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。

如需 中可用於 Amazon Keyspaces 的所有命令的完整清單 AWS CLI，請參閱 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/keyspaces/index.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/keyspaces/index.html)。

**Topics**
+ [下載和設定 AWS CLI](#access.cli.installcli)
+ [AWS CLI 搭配 Amazon Keyspaces 使用](#access.cli.usingcli)

## 下載和設定 AWS CLI
<a name="access.cli.installcli"></a>

 AWS CLI 可在 取得[https://aws.amazon.com/cli](https://aws.amazon.com/cli)。它可在 Windows、macOS，或 Linux 上執行。下載 之後 AWS CLI，請依照下列步驟進行安裝和設定：

1. 前往 [AWS Command Line Interface 使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)

1. 遵循[安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)和[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)的指示

## AWS CLI 搭配 Amazon Keyspaces 使用
<a name="access.cli.usingcli"></a>

命令列格式包含 Amazon Keyspaces 操作名稱，後面接著該操作的參數。 AWS CLI 支援參數值以及 JSON 的速記語法。下列 Amazon Keyspaces 範例使用 AWS CLI 速記語法。如需詳細資訊，請參閱[搭配 CLI AWS 使用速記語法](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html)。

下列命令會使用 名稱*目錄*建立金鑰空間。

```
aws keyspaces create-keyspace --keyspace-name 'catalog'
```

命令會在輸出中傳回資源 Amazon Resource Name (ARN)。

```
{
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/"
}
```

若要確認金鑰空間*目錄*是否存在，您可以使用下列命令。

```
aws keyspaces get-keyspace --keyspace-name 'catalog'
```

命令的輸出會傳回下列值。

```
{
    "keyspaceName": "catalog",
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/"
}
```

下列命令會建立名稱為 *book\$1awards* 的資料表。資料表的分割區索引鍵由欄 `year``award`和 組成，叢集索引鍵由欄 `category`和 組成`rank`，兩個叢集欄都使用遞增排序順序。(為確保易讀性，本節的長命令以分行顯示。)

```
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'book_awards' 
            --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int},
            {name=category,type=text}, {name=author,type=text},{name=book_title,type=text},{name=publisher,type=text}],
            partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]'
```

此命令會產生下列輸出。

```
{
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards"
}
```

若要確認資料表的中繼資料和屬性，您可以使用下列命令。

```
aws keyspaces get-table --keyspace-name 'catalog' --table-name 'book_awards'
```

此命令會傳回下列輸出。

```
{
    "keyspaceName": "catalog",
    "tableName": "book_awards",
    "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards",
    "creationTimestamp": 1645564368.628,
    "status": "ACTIVE",
    "schemaDefinition": {
        "allColumns": [
            {
                "name": "year",
                "type": "int"
            },
            {
                "name": "award",
                "type": "text"
            },
            {
                "name": "category",
                "type": "text"
            },
            {
                "name": "rank",
                "type": "int"
            },
            {
                "name": "author",
                "type": "text"
            },
            {
                "name": "book_title",
                "type": "text"
            },
            {
                "name": "publisher",
                "type": "text"
            }
        ],
        "partitionKeys": [
            {
                "name": "year"
            },
            {
                "name": "award"
            }
        ],
        "clusteringKeys": [
            {
                "name": "category",
                "orderBy": "ASC"
            },
            {
                "name": "rank",
                "orderBy": "ASC"
            }
        ],
        "staticColumns": []
    },
    "capacitySpecification": {
        "throughputMode": "PAY_PER_REQUEST",
        "lastUpdateToPayPerRequestTimestamp": 1645564368.628
    },
    "encryptionSpecification": {
        "type": "AWS_OWNED_KMS_KEY"
    },
    "pointInTimeRecovery": {
        "status": "DISABLED"
    },
    "ttl": {
        "status": "ENABLED"
    },
    "defaultTimeToLive": 0,
    "comment": {
        "message": ""
    }
}
```

建立具有複雜結構描述的資料表時，從 JSON 檔案載入資料表的結構描述定義會很有幫助。以下是此範例。從 [schema\$1definition.zip](samples/schema_definition.zip) 下載結構描述定義範例 JSON 檔案，並擷取 `schema_definition.json`，並記下檔案的路徑。在此範例中，結構描述定義 JSON 檔案位於目前的 目錄中。如需不同的檔案路徑選項，請參閱[如何從檔案載入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html#cli-usage-parameters-file-how)。

```
aws keyspaces create-table --keyspace-name 'catalog' 
            --table-name 'book_awards' --schema-definition 'file://schema_definition.json'
```

下列範例示範如何建立名為 *myTable* 的簡單資料表，以及其他選項。請注意，命令會細分為不同的資料列，以改善可讀性。此命令說明如何建立資料表和：
+ 設定資料表的容量模式
+ 啟用資料表的Point-in-time復原
+ 將資料表的預設存留時間 (TTL) 值設定為一年
+ 為資料表新增兩個標籤

```
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'myTable' 
            --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
            --capacity-specification 'throughputMode=PROVISIONED,readCapacityUnits=5,writeCapacityUnits=5' 
            --point-in-time-recovery 'status=ENABLED' 
            --default-time-to-live '31536000' 
            --tags 'key=env,value=test' 'key=dpt,value=sec'
```

此範例說明如何建立新的資料表，該資料表使用客戶受管金鑰進行加密，並啟用 TTL 以允許您設定資料欄和資料列的過期日期。若要執行此範例，您必須將客戶受管 AWS KMS 金鑰的資源 ARN 取代為您自己的金鑰，並確保 Amazon Keyspaces 可以存取該金鑰。

```
aws keyspaces create-table --keyspace-name 'catalog' --table-name 'myTable' 
            --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
            --encryption-specification 'type=CUSTOMER_MANAGED_KMS_KEY,kmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/11111111-2222-3333-4444-555555555555'  
            --ttl 'status=ENABLED'
```

# 使用 API 連線至 Amazon Keyspaces
<a name="access.api"></a>

 您可以使用 AWS SDK 和 AWS Command Line Interface (AWS CLI) 以互動方式使用 Amazon Keyspaces。您可以使用 API 進行資料語言定義 (DDL) 操作，例如建立金鑰空間或資料表。此外，您可以使用基礎設施做為程式碼 (IaC) 服務和工具，例如 AWS CloudFormation 和 Terraform。

您必須先取得存取金鑰 ID 和私密存取金鑰，才能 AWS CLI 搭配 Amazon Keyspaces 使用 。如需詳細資訊，請參閱[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。

如需 API 中可用於 Amazon Keyspaces 的所有操作的完整清單，請參閱 [https://docs.aws.amazon.com/keyspaces/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/keyspaces/latest/APIReference/Welcome.html)。

# 使用 Cassandra 用戶端驅動程式以程式設計方式存取 Amazon Keyspaces
<a name="programmatic.drivers"></a>

您可以使用許多第三方開放原始碼 Cassandra 驅動程式來連線至 Amazon Keyspaces。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 用戶端驅動程式](http://cassandra.apache.org/doc/latest/getting_started/drivers.html)。

**注意**  
為了協助您開始使用，您可以檢視和下載end-to-end程式碼範例，這些範例使用熱門驅動程式建立與 Amazon Keyspaces 的連線。請參閱 GitHub 上的 [Amazon Keyspaces 範例](https://github.com/aws-samples/amazon-keyspaces-examples)。

本章中的教學課程包含簡單的 CQL 查詢，以確認已成功建立與 Amazon Keyspaces 的連線。若要了解如何在連線至 Amazon Keyspaces 端點後使用金鑰空間和資料表，請參閱 [Amazon Keyspaces 的 CQL 語言參考 （適用於 Apache Cassandra)](cql.md)。如需示範如何從 Amazon VPC 端點連線至 Amazon Keyspaces 的step-by-step教學課程，請參閱 [教學課程：使用介面 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 目前僅支援 Beta 版。如需詳細資訊，請參閱[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 身分建立 IAM 存取金鑰。Cassandra 用戶端驅動程式的 Amazon Keyspaces SigV4 身分驗證外掛程式可讓您使用 IAM 存取金鑰來驗證對 Amazon Keyspaces 的呼叫，而不是使用者名稱和密碼。如需詳細資訊，請參閱[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。

**注意**  
如需如何使用 Amazon Keyspaces 搭配 Spring Boot 的範例，請參閱 [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 的Step-by-step教學課程](#java_tutorial)
+ [使用適用於 Apache Cassandra 的 4.x DataStax Java 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces 的Step-by-step教學課程](#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 Class 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 正在將所有 遷移 AWS 區域 至根據 Amazon Trust Services (Amazon 根 CAs 發行的憑證。在此轉換期間，請將用戶端設定為信任 Amazon 根 CAs1–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 的Step-by-step教學課程
<a name="java_tutorial"></a>

下列step-by-step教學課程會逐步引導您使用適用於 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 IAM 使用者產生服務特定的登入資料[建立服務特定的登入資料，以程式設計方式存取 Amazon Keyspaces](programmatic.credentials.ssc.md)。如果您偏好使用 IAM 存取金鑰進行身分驗證，請參閱 [使用適用於 Apache Cassandra 的 4.x DataStax Java 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces 的Step-by-step教學課程](#java_tutorial.SigV4)。
+ 將 Apache Cassandra 的 DataStax Java 驅動程式新增至您的 Java 專案。請確定您使用的驅動程式版本支援 Apache Cassandra 3.11.2。如需詳細資訊，請參閱 [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 的Step-by-step教學課程](#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** – 使用指定具有 類別的單行，在組態檔案中新增區段，以初始化 SSLEngineFactory`class = DefaultSslEngineFactory`。提供 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 的Step-by-step教學課程
<a name="java_tutorial.SigV4"></a>

下一節說明如何使用開放原始碼 4.x DataStax Java 驅動程式的 SigV4 身分驗證外掛程式，讓 Apache Cassandra 存取 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>

若要遵循本教學課程，您需要完成下列任務。
+ 如果您尚未這麼做，請依照 中的步驟為 IAM 使用者或角色建立登入資料[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。本教學假設存取金鑰儲存為環境變數。如需詳細資訊，請參閱[存放用於程式設計存取的存取金鑰](aws.credentials.manage.md)。
+ 將 Apache Cassandra 的 DataStax Java 驅動程式新增至您的 Java 專案。請確定您使用的驅動程式版本支援 Apache Cassandra 3.11.2。如需詳細資訊，請參閱 [DataStax Java Driver for Apache Cassandra 文件](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. **冪等性** – 將應用程式的預設值設定為 `true`，以設定驅動程式一律重試失敗`idempotence`的read/write/prepare/執行請求。這是分散式應用程式的最佳實務，可透過重試失敗的請求，協助處理暫時性故障。

1. **SSL/TLS** – 初始化 SSLEngineFactory，方法是在組態檔案中新增一個區段，並使用 指定類別`class = DefaultSslEngineFactory`。提供 trustStore 檔案的路徑以及您先前建立的密碼。Amazon Keyspaces 不支援`hostname-validation`對等，因此請將此選項設定為 false。

1. **連線** – 透過設定 ，為每個端點建立至少 3 個本機連線`local.size = 3`。這是最佳實務，可協助應用程式處理額外負荷和流量暴增。如需如何根據預期的流量模式，計算應用程式每個端點需要多少本機連線的詳細資訊，請參閱 [如何在 Amazon Keyspaces 中設定連線](connections.md#connections.howtoconfigure)。

1. **重試政策** – 實作 Amazon Keyspaces 重試政策`DefaultRetryPolicy`，`AmazonKeyspacesExponentialRetryPolicy`而非 Cassandra 驅動程式隨附的 。這可讓您為`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>

下一節說明如何使用 3.x 開放原始碼 DataStax Java 驅動程式的 SigV4 身分驗證外掛程式，讓 Apache Cassandra 存取 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>

若要執行此程式碼範例，您必須先完成下列任務。
+ 遵循 中的步驟，為您的 IAM 使用者或角色建立登入資料[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。本教學假設存取金鑰會儲存為環境變數。如需詳細資訊，請參閱[存放用於程式設計存取的存取金鑰](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 文件](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 Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces](#python_SigV4)

## 開始之前
<a name="using_python_driver.BeforeYouBegin"></a>

您需要先完成下列任務，才能開始。

Amazon Keyspaces 需要使用 Transport Layer Security (TLS) 來協助保護與用戶端的連線。若要使用 TLS 連線至 Amazon Keyspaces，您需要下載 Amazon 數位憑證，並將 Python 驅動程式設定為使用 TLS。

 下載下列數位憑證，並將檔案儲存在本機或主目錄中。

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield Class 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 正在將所有 遷移 AWS 區域 至根據 Amazon Trust Services (Amazon 根 CAs 發行的憑證。在此轉換期間，請將用戶端設定為信任 Amazon 根 CAs1–4 和 Starfield 根，以確保所有區域的相容性。

使用範例中的名稱 *keyspaces-bundle.pem*，將所有下載的憑證合併成單一`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 Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces
<a name="python_SigV4"></a>

下一節說明如何使用開放原始碼 DataStax Python 驅動程式的 SigV4 身分驗證外掛程式，讓 Apache Cassandra 存取 Amazon Keyspaces （適用於 Apache Cassandra)。

如果您尚未這麼做，請先依照 中的步驟，為您的 IAM 角色建立登入資料[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。本教學課程使用臨時登入資料，需要 IAM 角色。如需臨時登入資料的詳細資訊，請參閱 [使用 IAM 角色和 SigV4 外掛程式建立臨時登入資料以連線至 Amazon Keyspaces](temporary.credentials.IAM.md)。

然後，從 [GitHub 儲存庫](https://github.com/aws/aws-sigv4-auth-cassandra-python-driver-plugin)將 Python SigV4 身分驗證外掛程式新增至您的環境。

```
pip install cassandra-sigv4
```

下列程式碼範例示範如何使用適用於 Cassandra 的開放原始碼 DataStax Python 驅動程式和 SigV4 身分驗證外掛程式連線至 Amazon Keyspaces。外掛程式取決於適用於 Python 的 AWS SDK (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* 符合 `Access Key`、 `Secret Access Key``Session Token`以及您使用 取得的 `boto3.session`。如需詳細資訊，請參閱 中的[登入資料](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)*適用於 Python (Boto3) 的 AWS SDK*。

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 數位憑證，並將 Python 驅動程式設定為使用 TLS。

 下載下列數位憑證，並將檔案儲存在本機或主目錄中。

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield Class 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 正在將所有 遷移 AWS 區域 至根據 Amazon Trust Services (Amazon 根 CAs 發行的憑證。在此轉換期間，請將用戶端設定為信任 Amazon 根 CAs1–4 和 Starfield 根，以確保所有區域的相容性。

使用範例中的名稱 *keyspaces-bundle.pem*，將所有下載的憑證合併成單一`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)。

如果您尚未這麼做，請依照 中的步驟為 IAM 使用者或角色建立登入資料[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。

從 [GitHub 儲存庫](https://github.com/aws/aws-sigv4-auth-cassandra-nodejs-driver-plugin)將 Node.js SigV4 身分驗證外掛程式新增至您的應用程式。外掛程式支援適用於 Cassandra 的 DataStax Node.js 驅動程式 4.x 版，並取決於適用於 Node.js 的 AWS SDK。它使用 `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`。如需詳細資訊，請參閱 [Node.js 中適用於 JavaScript 的 SDK 中的在 Node.js 中設定登入](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html)資料。 *AWS JavaScript * 

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 根 CAs1-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 根 CAs1-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 數位憑證，並將 Go 驅動程式設定為使用 TLS。

 下載下列數位憑證，並將檔案儲存在本機或主目錄中。

1. AmazonRootCA1

1. AmazonRootCA2

1. AmazonRootCA3

1. AmazonRootCA4

1. Starfield Class 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 正在將所有 遷移 AWS 區域 至根據 Amazon Trust Services (Amazon 根 CAs 發行的憑證。在此轉換期間，請將用戶端設定為信任 Amazon 根 CAs1–4 和 Starfield 根，以確保所有區域的相容性。

使用範例中的名稱 *keyspaces-bundle.pem*，將所有下載的憑證合併成單一`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>

下列程式碼範例示範如何使用開放原始碼 Go 驅動程式的 SigV4 身分驗證外掛程式來存取 Amazon Keyspaces （適用於 Apache Cassandra)。

如果您尚未這麼做，請依照 中的步驟建立 IAM 主體的登入資料[建立和設定 Amazon Keyspaces 的 AWS 登入資料](access.credentials.md)。如果應用程式在 Lambda 或 Amazon EC2 執行個體上執行，您的應用程式會自動使用執行個體的登入資料。若要在本機執行本教學課程，您可以將登入資料儲存為本機環境變數。

從 [GitHub 儲存庫](https://github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin)將 Go SigV4 身分驗證外掛程式新增至您的應用程式。外掛程式支援適用於 Cassandra 的開放原始碼 Go 驅動程式 1.2.x 版，並取決於適用於 Go 的 AWS SDK。

```
$ 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 根 CAs1–4，以避免在此輪換期間發生連線錯誤。Perl 驅動程式不會驗證伺服器的 Amazon SSL 憑證，這表示您無法確認您連線到 Amazon Keyspaces。第二個步驟是設定驅動程式在連線至 Amazon Keyspaces 時使用 TLS，並確保用戶端和伺服器之間傳輸的資料已加密。

1. 從 下載 Cassandra DBI 驅動程式，[https://metacpan.org/pod/DBD::Cassandra](https://metacpan.org/pod/DBD::Cassandra)並將驅動程式安裝到您的 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
   ```

# 使用 VPC 端點設定 Amazon Keyspaces 的跨帳戶存取權
<a name="access.cross-account"></a>

您可以建立並使用個別 AWS 帳戶 來隔離資源，並在不同的環境中使用，例如開發和生產。本主題使用 中的介面 VPC 端點，逐步引導您存取 Amazon Keyspaces 的跨帳戶 Amazon Virtual Private Cloud。如需 IAM 跨帳戶存取組態的詳細資訊，請參閱《IAM 使用者指南》中的[使用個別開發和生產帳戶的範例案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html#id_roles_common-scenarios_aws-accounts-example)。

如需 Amazon Keyspaces 和私有 VPC 端點的詳細資訊，請參閱 [搭配界面 VPC 端點使用 Amazon Keyspaces](vpc-endpoints.md)。

**Topics**
+ [在共用 VPC 中設定跨帳戶存取](access.cross-account.sharedVPC.md)
+ [設定沒有共用 VPC 的跨帳戶存取](access.cross-account.noVPC.setup.md)

# 使用共用 VPC 中的 VPC 端點設定 Amazon Keyspaces 的跨帳戶存取權
<a name="access.cross-account.sharedVPC"></a>

您可以建立不同的 AWS 帳戶 ，將資源與應用程式分開。例如，您可以為 Amazon Keyspaces 資料表建立一個帳戶、為開發環境中的應用程式建立不同的帳戶，以及為生產環境中的應用程式建立另一個帳戶。本主題會逐步解說在共用 VPC 中使用介面 VPC 端點設定 Amazon Keyspaces 跨帳戶存取所需的組態步驟。

如需如何為 Amazon Keyspaces 設定 VPC 端點的詳細步驟，請參閱 [步驟 3：建立 Amazon Keyspaces 的 VPC 端點](vpc-endpoints-tutorial.create-endpoint.md)。

在此範例中，我們在共用 VPC 中使用下列三個帳戶：
+ `Account A:111111111111` – 此帳戶包含基礎設施，包括 VPC 端點、VPC 子網路和 Amazon Keyspaces 資料表。
+ `Account B:222222222222` – 此帳戶包含在開發環境中的應用程式，需要連線到 中的 Amazon Keyspaces 資料表`Account A:111111111111`。
+ `Account C:333333333333` – 此帳戶包含生產環境中的應用程式，需要連線到 中的 Amazon Keyspaces 資料表`Account A:111111111111`。

![\[圖表顯示使用共用 VPC 之相同 中 AWS 區域 相同組織在 中擁有的三個不同帳戶。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/keyspaces_cross-account_sharedVPC.png)


`Account A:111111111111` 是包含 `Account B:222222222222` 和 `Account C:333333333333` 需要存取之資源 (Amazon Keyspaces 資料表） 的帳戶， `Account A:111111111111`是*信任*帳戶。 `Account B:222222222222`和 `Account C:333333333333`是具有 中需要存取資源 (Amazon Keyspaces 資料表） 之主體的帳戶`Account A:111111111111`，因此 `Account B:222222222222` 和 `Account C:333333333333`是*信任*帳戶。信任帳戶透過共用 IAM 角色，將許可授予信任的帳戶。下列程序概述 中所需的組態步驟`Account A:111111111111`。

**的組態 `Account A:111111111111`**

1. 使用 為子網路 AWS Resource Access Manager 建立資源共用，並與 `Account B:222222222222`和 共用私有子網路`Account C:333333333333`。

   `Account B:222222222222` 和 `Account C:333333333333` 現在可以在已與其共用的子網路中查看和建立資源。

1. 建立採用 技術的 Amazon Keyspaces 私有 VPC 端點 AWS PrivateLink。這會在共用子網路和 Amazon Keyspaces 服務端點的 DNS 項目之間建立多個端點。

1. 建立 Amazon Keyspaces 金鑰空間和資料表。

1. 在 中建立 IAM 角色`Account A:111111111111`，該角色具有 Amazon Keyspaces 資料表的完整存取權、Amazon Keyspaces 系統資料表的讀取存取權，並且能夠描述 Amazon EC2 VPC 資源，如下列政策範例所示。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CrossAccountAccess",
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:DescribeVpcEndpoints",
                   "cassandra:*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 在 中設定 IAM 角色的信任政策，`Account A:111111111111`讓 `Account B:222222222222`和 `Account C:333333333333` 可以擔任該角色做為信任的帳戶。如以下範例所示。

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::222222222222:role/Cross-Account-Role-B",
             "arn:aws:iam::333333333333:role/Cross-Account-Role-C"
           ]
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

   如需跨帳戶 IAM 政策的詳細資訊，請參閱《IAM 使用者指南》中的[跨帳戶政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)。

**`Account B:222222222222` 和 中的組態 `Account C:333333333333`**

1. 在 `Account B:222222222222`和 中`Account C:333333333333`，建立新的角色並連接下列政策，以允許委託人擔任在 中建立的共用角色`Account A:111111111111`。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ec2.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

   允許委託人擔任共用角色是使用 AWS Security Token Service (AWS STS) 的 `AssumeRole` API 實作。如需詳細資訊，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 IAM 使用者中提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。

1. 在 `Account B:222222222222`和 中`Account C:333333333333`，您可以建立使用 SIGV4 身分驗證外掛程式的應用程式，允許應用程式擔任共用角色，`Account A:111111111111`透過共用 VPC 中的 VPC 端點連線到位於 中的 Amazon Keyspaces 資料表。如需 SIGV4 身分驗證外掛程式的詳細資訊，請參閱 [建立 Amazon Keyspaces 的程式設計存取憑證](programmatic.credentials.md)。如需如何設定應用程式以在另一個 AWS 帳戶中擔任角色的詳細資訊，請參閱 *AWS SDKs和工具參考指南中的*[身分驗證和存取](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

# 設定沒有共用 VPC 的 Amazon Keyspaces 跨帳戶存取權
<a name="access.cross-account.noVPC.setup"></a>

如果 Amazon Keyspaces 資料表和私有 VPC 端點為不同帳戶所擁有，但未共用 VPC，則應用程式仍然可以使用 VPC 端點來連接跨帳戶。由於帳戶不會共用 VPC 端點，`Account B:222222222222`因此 `Account A:111111111111`、 和 `Account C:333333333333`需要自己的 VPC 端點。對於 Cassandra 用戶端驅動程式，Amazon Keyspaces 會顯示為單一節點，而不是多節點叢集。連線時，用戶端驅動程式會到達 DNS 伺服器，傳回帳戶 VPC 中其中一個可用的端點。

您也可以使用公有端點或在每個帳戶中部署私有 VPC 端點，存取不同帳戶的 Amazon Keyspaces 資料表，而無需共用 VPC 端點。不使用共用 VPC 時，每個帳戶都需要自己的 VPC 端點。在此範例中，`Account A:111111111111`、 `Account B:222222222222`和 `Account C:333333333333`需要自己的 VPC 端點才能存取 中的資料表`Account A:111111111111`。在此組態中使用 VPC 端點時，Amazon Keyspaces 會顯示為 Cassandra 用戶端驅動程式的單一節點叢集，而非多節點叢集。連線時，用戶端驅動程式會到達 DNS 伺服器，傳回帳戶 VPC 中其中一個可用的端點。但用戶端驅動程式無法存取`system.peers`資料表來探索其他端點。由於可用的主機較少，驅動程式的連線較少。若要調整此值，請將驅動程式的連線集區設定增加 3 倍。

![\[圖表顯示沒有共用 VPC 的相同組織在 AWS 區域 中擁有的三個不同帳戶。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/keyspaces_cross-account_noVPC.png)


`Account A:111111111111` 是包含 `Account B:222222222222` 和 `Account C:333333333333` 需要存取之資源 (Amazon Keyspaces 資料表） 的帳戶， `Account A:111111111111`是*信任*帳戶。 `Account B:222222222222`和 `Account C:333333333333`是具有 中需要存取資源 (Amazon Keyspaces 資料表） 之主體的帳戶`Account A:111111111111`，因此 `Account B:222222222222` 和 `Account C:333333333333`是*信任*帳戶。信任帳戶透過共用 IAM 角色，將許可授予信任的帳戶。下列程序概述 中所需的組態步驟`Account A:111111111111`。

**的組態 `Account A:111111111111`**

1. 在 中建立 Amazon Keyspaces 金鑰空間和資料表`Account A:111111111111`。

1. 在 中建立`Account A:111111111111`具有 Amazon Keyspaces 資料表完整存取權和 Amazon Keyspaces 系統資料表讀取存取權的 IAM 角色。

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "cassandra:Select",
               "cassandra:Modify"
            ],
            "Resource":[
               "arn:aws:cassandra:us-east-1:111111111111:/keyspace/mykeyspace/table/mytable",
               "arn:aws:cassandra:us-east-1:111111111111:/keyspace/system*"
            ]
         }
      ]
   }
   ```

1. 在 中設定 IAM 角色的信任政策，`Account A:111111111111`讓 `Account B:222222222222`和 中的主體`Account C:333333333333`可以擔任信任帳戶的角色。如以下範例所示。

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::222222222222:role/Cross-Account-Role-B",
             "arn:aws:iam::333333333333:role/Cross-Account-Role-C"
           ]
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

   如需跨帳戶 IAM 政策的詳細資訊，請參閱《IAM 使用者指南》中的[跨帳戶政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)。

1. 在 中設定 VPC 端點，`Account A:111111111111`並將許可連接到允許來自 `Account B:222222222222`和 的角色`Account A`使用 VPC 端點`Account C:333333333333`擔任 中角色的端點。這些許可對其連接的 VPC 端點有效。如需 VPC 端點政策的詳細資訊，請參閱 [控制對 Amazon Keyspaces 介面 VPC 端點的存取](vpc-endpoints.md#interface-vpc-endpoints-policies)。

   ```
   {{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowAccessfromSpecificIAMroles",
         "Effect": "Allow",
         "Action": "cassandra:*",
         "Resource": "*",
         "Principal": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::222222222222:role/Cross-Account-Role-B",
               "arn:aws:iam::333333333333:role/Cross-Account-Role-C"
             ]
           }
         }
       }
     ]
   }
   ```

**`Account B:222222222222` 和 中的組態 `Account C:333333333333`**

1. 在 `Account B:222222222222`和 中`Account C:333333333333`，建立新的角色並連接下列政策，以允許委託人擔任在 中建立的共用角色`Account A:111111111111`。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": {
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::111111111111:role/keyspaces_access"
           }
   }
   ```

   允許委託人擔任共用角色是使用 AWS Security Token Service (AWS STS) 的 `AssumeRole` API 實作。如需詳細資訊，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 中為 IAM 使用者提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。

1. 在 `Account B:222222222222`和 中`Account C:333333333333`，您可以建立使用 SIGV4 身分驗證外掛程式的應用程式，允許應用程式擔任共用角色以連線到位於 中的 Amazon Keyspaces 資料表`Account A:111111111111`。如需 SIGV4 身分驗證外掛程式的詳細資訊，請參閱 [建立 Amazon Keyspaces 的程式設計存取憑證](programmatic.credentials.md)。如需如何設定應用程式以在另一個 AWS 帳戶中擔任角色的詳細資訊，請參閱 *AWS SDKs和工具參考指南中的*[身分驗證和存取](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。