

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 使用 Amazon Redshift CLI 或 API 產生 IAM 身分的資料庫憑證
<a name="generating-iam-credentials-cli-api"></a>

若要以程式設計方式產生臨時資料庫使用者憑證，Amazon Redshift 為 AWS Command Line Interface (AWS CLI) 和 GetClusterCredentials API 操作提供 [get-cluster-credentials](https://docs.aws.amazon.com/cli/latest/reference/redshift/get-cluster-credentials.html) [GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html) 命令。或者，您可以使用 Amazon Redshift JDBC 或 ODBC 驅動程式來設定 SQL 用戶端，以管理呼叫 `GetClusterCredentials` 操作、擷取資料庫使用者憑證，以及在 SQL 用戶端和 Amazon Redshift 資料庫之間建立連接的程序。如需詳細資訊，請參閱[用於建立資料庫使用者憑證的 JDBC 和 ODBC 選項](options-for-providing-iam-credentials.md#jdbc-and-odbc-options-for-database-credentials)。

**注意**  
我們建議使用 Amazon Redshift JDBC 或 ODBC 驅動程式產生資料庫使用者憑證。

您可在本節中找到程式設計的步驟，以用來呼叫 `GetClusterCredentials` 操作或 get-cluster-credentials 命令、擷取資料庫使用者登入資料，以及連線至資料庫。

**產生及使用暫時性資料庫登入資料**

1. 建立或修改具有必要許可的使用者或角色。如需 IAM 許可的相關資訊，請參閱 [步驟 3：建立具有呼叫 GetClusterCredentialsWithIAM 或 GetClusterCredentials 許可的 IAM 角色 GetClusterCredentials](generating-iam-credentials-steps.md#generating-iam-credentials-role-permissions)。

1. 以您在先前步驟中授權的使用者或角色身分，執行 get-cluster-credentials CLI 命令或呼叫 `GetClusterCredentials` API 操作，然後提供下列值：
   + **叢集識別碼** — 包含資料庫之叢集的名稱。
   + **資料庫使用者名稱** — 現有或新資料庫使用者的名稱。
     + 如果資料庫中不存在使用者，且 AutoCreate 為 true，將建立停用 PASSWORD 的新使用者。
     +  如果使用者不存在，且 AutoCreate 為 false，則請求失敗。
     + 針對此範例，資料庫使用者名稱為 `temp_creds_user`。
   +  **自動建立** — (選用) 如果資料庫使用者名稱不存在，則建立新使用者。
   +  **資料庫名稱** — (選用) 使用者授權登入之資料庫的名稱。如果未指定資料庫名稱，使用者將可登入任何的叢集資料庫。
   +  **資料庫群組** — (選用) 現有資料庫使用者群組的清單。成功登入後，資料庫使用者將新增至指定的使用者群組。如果未指定群組，使用者只會具有 PUBLIC 許可。使用者群組名稱必須符合附加至使用者或角色之 IAM 政策中指定的 dbgroup 資源 ARN。
   +  **過期時間** — (選用) 暫時性憑證過期前經過的時間 (以秒計)。您可指定 900 秒 (15 分鐘) 至 3600 秒 (60 分鐘) 之間的值。預設為 900 秒。

1. Amazon Redshift 會確定使用者具備用指定資源呼叫 `GetClusterCredentials` 操作的許可。

1. Amazon Redshift 將傳回暫時性密碼和資料庫使用者名稱。

   下列範例使用 Amazon Redshift CLI 為名為 `temp_creds_user` 的現有使用者產生暫時性資料庫憑證。

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600
   ```

   結果如下所示。

   ```
   {
     "DbUser": "IAM:temp_creds_user", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

   下列範例使用 Amazon Redshift CLI 與 autocreate 為新使用者產生暫時性資料庫憑證，並將使用者加入到 `example_group` 群組。

   ```
   aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600
   ```

   結果如下所示。

   ```
   {
     "DbUser": "IAMA:temp_creds_user:example_group", 
     "Expiration": "2016-12-08T21:12:53Z", 
     "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
   }
   ```

1. 建立與 Amazon Redshift 叢集的 Secure Socket Layer (SSL) 身分驗證連線，並用來自 `GetClusterCredentials` 回應中的使用者名稱和密碼傳送登入請求。請在使用者名稱中加入 `IAM:` 或 `IAMA:` 字首，例如，`IAM:temp_creds_user` 或 `IAMA:temp_creds_user`。
**重要**  
設定 SQL 用戶端要求 SSL。否則，如果您的 SQL 用戶端自動嘗試使用 SSL 連線，發生任何類型的故障時其將切換為非 SSL。在此情況下，第一個連線嘗試可能會因為登入資料過期或失效而失敗，而第二個連線嘗試可能會因連線不是 SSL 而失敗。此時，可能會跳過第一個錯誤訊息。如需使用 SSL 連接至叢集的相關資訊，請參閱 [設定連線的安全選項](connecting-ssl-support.md)。

1. 如果連線不使用 SSL，連線嘗試將失敗。

1. 叢集會傳送 `authentication` 請求至 SQL 用戶端。

1. 接著 SQL 用戶端會傳送暫時性密碼至叢集。

1. 如果密碼為有效且尚未過期，叢集將完成連線。