本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用已佈建叢集的 Amazon Redshift 管理界面
注意
本主題著重於已佈建叢集的 Amazon Redshift 管理界面。亞馬遜 Redshift 無伺服器和亞馬 Amazon Redshift 資料 API 也有類似的管理界面。
Amazon Redshift 支援多種管理界面,您可以用來建立、管理和刪除 Amazon Redshift 叢集: AWS 開發套件、 AWS Command Line Interface (AWS CLI) 和 Amazon Redshift 管理 API。
Amazon Redshift API — 您可以透過提交請求來呼叫此 Amazon Redshift 管理 API。請求是使用 HTTP 動詞 GET
或 POST
及 Action
參數的 HTTP 或 HTTPS 請求。呼叫 Amazon Redshift API 是存取 Amazon Redshift 服務最直接的方式。不過,這需要您的應用程式處理低階詳細資訊,例如錯誤處理和產生雜湊以簽署請求。
-
如需有關建置與簽署 Amazon Redshift API 請求的詳細資訊,請參閱簽署 HTTP 請求。
-
如需有關 Amazon Redshift API 動作和 Amazon Redshift 資料類型的資訊,請參閱 Amazon Redshift API 參考。
AWS 開發套件 — 您可以使用 AWS 開發套件來執行與 Amazon Redshift 叢集相關的操作。多種軟體開發套件程式庫包裝了底層的 Amazon Redshift API。它們整合了 API 功能到特定的程式設計語言,並處理許多低階詳細資訊,例如計算簽章、處理請求重試和錯誤處理。在軟體開發套件程式庫中呼叫包裝器函式,可以大幅簡化撰寫 Amazon Redshift 叢集管理應用程式的流程。
-
Amazon Redshift 是由 Java,網 AWS 絡,PHP,Python,紅寶石和 Node.js 的開發套件支持。Amazon Redshift 包裝器函式記錄在每個軟體開發套件的參考手冊中。如需開 AWS 發套件的清單及其文件的連結,請參閱 Amazon Web Services 的工具
。 -
本指南提供透過 Java 開發套件使用 Amazon Redshift 的範例。如需更多一般 AWS SDK 程式碼範例,請參閱使 AWS 用軟體開發套件的 Amazon Redshift 程式碼範例。
AWS CLI— CLI 提供了一組命令列工具,您可以使用這些工具從 Windows、Mac 和 Linux 電腦管理 AWS 服務。 AWS CLI 包含以 Amazon Redshift API 動作為基礎的命令。
-
如需有關安裝和設定 Amazon Redshift CLI 的資訊,請參閱設定 Amazon Redshift CLI。
-
如需有關 Amazon Redshift CLI 命令的參考資料,請參閱《AWS CLI 參考》中的 Amazon Redshift。
簽署 HTTP 請求
Amazon Redshift 要求您傳送至管理 API 的每個請求都必須經過簽章驗證。本主題將說明如何簽署請求。
如果您使用其中一個 AWS 軟體開發套件 (SDK) 或 AWS Command Line Interface,系統會自動處理要求簽署,您可以略過本節。如需使用 AWS SDK 的詳細資訊,請參閱使用已佈建叢集的 Amazon Redshift 管理界面。如需使用 Amazon Redshift 命令列界面的相關資訊,請前往 Amazon Redshift 命令列參考。
若要簽署請求,請使用加密雜湊函數來計算數位簽章。加密雜湊是一個函數,其根據輸入傳回一個唯一的雜湊值。此雜湊函數的輸入包含請求和私密存取金鑰 (可從暫時憑證取得) 的文字。雜湊函數會傳回一個雜湊值,您將此值包含在請求中做為簽章。該簽章是請求 Authorization
標頭中的一部分。
注意
如果使用者想要與 AWS 之外互動,則需要程式設計存取 AWS Management Console。授與程式設計存 AWS取權的方式取決於正在存取的使用者類型。
若要授與使用者程式設計存取權,請選擇下列其中一個選項。
哪個使用者需要程式設計存取權? | 到 | By |
---|---|---|
人力身分 (IAM Identity Center 中管理的使用者) |
使用臨時登入資料來簽署對 AWS CLI、 AWS SDK 或 AWS API 的程式設計要求。 |
請依照您要使用的介面所提供的指示操作。
|
IAM | 使用臨時登入資料來簽署對 AWS CLI、 AWS SDK 或 AWS API 的程式設計要求。 | 遵循《IAM 使用者指南》中的〈將臨時登入資料搭配 AWS 資源使用〉中的指示 |
IAM | (不建議使用) 使用長期認證來簽署對 AWS CLI、 AWS SDK 或 AWS API 的程式設計要求。 |
請依照您要使用的介面所提供的指示操作。
|
Amazon Redshift 收到請求後,其會使用您原先用來簽署請求的相同雜湊函數與輸入來重新計算簽章。若產生的簽章與請求中的簽章相符,Amazon Redshift 會處理該請求,否則請求會遭到拒絕。
Amazon Redshift 支援使用 AWS Signature 第 4 版進行身分驗證。計算簽章的程序由三個任務組成。這些任務如下圖說明。
-
將 HTTP 請求重新編排為正式格式。必須使用正式格式,因為 Amazon Redshift 在比較您傳送的簽章來建立簽章時會使用相同的正式格式。
-
建立一個字串,您會使用此字串做為密碼編譯雜湊函數的其中一個輸入值。此字串,稱為登入字串,是雜湊演算法的名稱、請求日期、登入資料範圍字串和前一個任務的正式請求的串連。登入資料範圍字串本身是日期、區域和服務資訊的串連。
-
使用接受兩個輸入字串的密碼編譯雜湊函數來計算請求的簽章:您的登入字串和衍生金鑰。藉由從您的私密存取金鑰開始來計算此衍生金鑰和使用登入資料範圍字串來建立一系列雜湊型訊息身分驗證代碼 (HMAC-SHA256)。
範例簽章計算
下列範例會逐步引導您建立CreateCluster要求簽名的詳細資訊。您可以使用此範例做為檢查自身簽章計算方法的參考。其他參考計算包含在《IAM 使用者指南》的請求簽章範例章節中。
您可以使用 GET 或 POST 請求,將請求傳送至 Amazon Redshift。此兩者的差異在於,若是 GET 要求,會以查詢字串參數的形式來傳送您的參數。若是 POST 請求,它們會包含在請求的內文中。下列範例說明 POST 請求。
該範例假設如下:
-
請求的時間戳記為
Fri, 07 Dec 2012 00:00:00 GMT
。 -
端點是美國東部 (維吉尼亞北部) 區域 (
us-east-1
)。
一般的請求語法是:
https://redshift.us-east-1.amazonaws.com/ ?Action=CreateCluster &ClusterIdentifier=examplecluster &MasterUsername=masteruser &MasterUserPassword=12345678Aa &NumberOfNode=2 &NodeType=dc2.large &Version=2012-12-01 &x-amz-algorithm=AWS4-HMAC-SHA256 &x-amz-credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request &x-amz-date=20121207T000000Z &x-amz-signedheaders=content-type;host;x-amz-date
對於任務1:建立正式請求計算的請求的正式形式是:
POST / content-type:application/x-www-form-urlencoded; charset=utf-8 host:redshift.us-east-1.amazonaws.com x-amz-date:20121207T000000Z content-type;host;x-amz-date 55141b5d2aff6042ccd9d2af808fdf95ac78255e25b823d2dbd720226de1625d
正式請求的最後一行是請求內文的雜湊值。正式請求中的第三行是空的,因為此 API 沒有查詢參數。
「任務 2:建立登入字串」的登入字串是:
AWS4-HMAC-SHA256 20121207T000000Z 20121207/us-east-1/redshift/aws4_request 06b6bef4f4f060a5558b60c627cc6c5b5b5a959b9902b5ac2187be80cbac0714
登入字串的第一行是演算法,第二行是時間戳記,第三行是登入資料範圍,最後一行是來自任務 1:建立正式請求的正式請求的雜湊。在憑證範圍內使用的服務名稱是 redshift
。
對於任務 3:計算簽章,衍生金鑰可以表示為:
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20121207"),"us-east-1"),"redshift"),"aws4_request")
衍生金鑰是以湊雜函數的方式計算。從上述公式中的內部 HMAC 陳述式開始,您可以串連片語 AWS4
與私密存取金鑰並使用此做為金鑰來對資料 "us-east-1" 進行雜湊。此雜湊的結果都會變成下一個雜湊函數的金鑰。
在計算衍生金鑰後,您會在雜湊函數中使用它,該函數會接受兩個輸入字串:您的登入字串和衍生金鑰。例如,如果您使用私密存取金鑰 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
和先前提供的登入字串,則已計算的簽章如下:
9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920
最後步驟是建立 Authorization
標頭。對於示範存取金鑰 AKIAIOSFODNN7EXAMPLE
,標頭 (為了可讀性而新增了換行) 是:
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20121207/us-east-1/redshift/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=9a6b557aa9f38dea83d9215d8f0eae54100877f3e0735d38498d7ae489117920
設定 Amazon Redshift CLI
本節說明如何設定和執行 AWS CLI 命令列工具,以便用於管理 Amazon Redshift。Amazon Redshift 命令行工具上運行 AWS Command Line Interface (AWS CLI),這反過來又使用 Python(https://www.python.org/
安裝說明
若要開始使用 Amazon Redshift 命令列工具,請先設定 AWS CLI,然後新增定義 Amazon Redshift CLI 選項的組態檔案。
如果您已經安裝並設定 AWS CLI 其他 AWS 服務,則可以略過此程序。
若要安裝 AWS Command Line Interface
-
移至 [安裝或更新至最新版本的] AWS CLI,然後依照指示安裝 AWS CLI.
對於 CLI 存取,您需要存取金鑰 ID 和私密存取金鑰。盡可能使用臨時憑證,而不是長期存取金鑰。臨時憑證包含存取金鑰 ID、私密存取金鑰,以及指出憑證何時到期的安全符記。如需詳細資訊,請參閱 IAM 使用者指南中的將臨時登入資料與 AWS 資源搭配使用。
建立包含組態資訊 (例如您的存取金鑰、預設區域和命令輸出格式) 的檔案。然後設定
AWS_CONFIG_FILE
環境變數來參考該檔案。如需詳細指示,請參閱《 AWS Command Line Interface 使用指南》中的〈配置指 AWS 令行介面〉。-
執行測試命令以確認 AWS CLI 介面是否正常運作。例如,下列命令應會顯示 AWS CLI協助資訊:
aws help
下列命令應會顯示 Amazon Redshift 協助資訊:
aws redshift help
如需 Amazon Redshift CLI 命令的參考資料,請前往參考資料中的 Amazon Redshift。 AWS CLI