創建 Amazon RDS 零ETL集成與 Amazon Redshift - Amazon Relational Database Service

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

創建 Amazon RDS 零ETL集成與 Amazon Redshift

當您建立 Amazon RDS 零ETL整合時,您必須指定來源資料RDS庫 和目標 Amazon Redshift 資料倉儲。您也可以自訂加密設定和新增標籤。Amazon RDS 會在來源資料庫資料庫與其目標之間建立整合。整合啟用後,您插入來源資料庫資料的任何資料都會複寫到已設定的 Amazon Redshift 目標。

必要條件

在建立零ETL整合之前,您必須先建立來源資料資料和目標 Amazon Redshift 資料倉儲。您也必須將資料庫資料新增為授權整合來源,以允許複寫至資料倉儲。

如需完成上述每個步驟的指示,請參閱 開始使用 Amazon RDS 零ETL集成與 Amazon Redshift

所需的許可

建立零ETL整合需要特定IAM權限。您至少需要執行下列動作的許可:

  • 為來源RDS資料庫 Aurora 資料庫建立零ETL整合。

  • 查看和刪除所有零ETL集成。

  • 建立目標資料倉儲的傳入整合。如果相同帳戶擁有 Amazon Redshift 資料倉儲,且此帳戶是該資料倉儲的授權主體,則您不需要此許可。如需新增授權主體的相關資訊,請參閱設定 Amazon Redshift 資料倉儲的授權

下列範例政策示範建立和管理整合所需的最低權限許可。如果您的使用者或角色擁有更廣泛的權限 (例如AdministratorAccess受管理原則),您可能不需要這些確切的權限。

注意

Redshift Amazon 資源名稱(ARNs)具有以下格式。請注意在無伺服器命名空間UUID之前使用正斜線 (/:) 而不是冒號 ()。

  • 佈建的叢集 – arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

  • 無伺服器 – arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:db:source-db", "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:{region}:{account-id}:integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid" ] }] }

在不同帳戶中選擇目標資料倉儲

如果您打算指定位於另一個目標 Amazon Redshift 數據倉庫 AWS 帳戶,您必須建立一個角色,以允許目前帳號中的使用者存取目標帳號中的資源。如需詳細資訊,請參閱為其他IAM使用者提供存取權 AWS 帳戶 你擁有的

角色必須具有下列許可,允許使用者檢視目標帳戶中可用的 Amazon Redshift 佈建叢集和 Redshift 無伺服器命名空間。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "redshift:DescribeClusters", "redshift-serverless:ListNamespaces" ], "Resource":[ "*" ] } ] }

角色必須具有下列信任策略,其可指定目標帳戶 ID。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": "arn:aws:iam::{external-account-id}:root" }, "Action":"sts:AssumeRole" } ] }

如需建立角色的指示,請參閱使用自訂信任政策建立角色

建立零ETL整合

您可以建立零ETL整合 使用 AWS Management Console,該 AWS CLI,或 RDSAPI.

根據預設,RDS對於 My,會SQL立即清除二進位記錄檔。由於零ETL整合依賴二進位記錄檔將資料從來源複寫到目標,因此來源資料庫的保留期間必須至少為一小時。只要您建立整合,Amazon 就RDS會檢查所選來源資料庫的二進位日誌檔保留期。如果當前值為 0 小時,Amazon RDS 會自動將其更改為 1 小時。否則,此值保持不變。

若要建立零ETL整合
  1. 登入 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/

  2. 在左側導覽窗格中,選擇 [零ETL整合]。

  3. 選擇「建立零ETL整合」。

  4. 對於整合識別符,輸入整合的名稱。此名稱最多可有 63 個英數字元,且可包含連字號。

  5. 選擇 Next (下一步)

  6. 對於來源,請選取資料來源的資料RDS庫

    注意

    RDS會通知您資料庫參數是否設定正確。如果您收到此訊息,您可以選擇為我修正或手動設定它們。如需手動修正它們的指示,請參閱 步驟 1:建立自訂資料庫參數群組。

    修改資料庫參數需要重新開機。建立整合之前,必須先完成重新開機,且新參數值必須順利套用至資料庫

  7. 成功設定來源資料庫資料庫之後,請選擇下一步

  8. 針對目標,執行下列動作:

    1. (選擇性) 若要使用不同的 AWS 帳戶 對於 Amazon Redshift 目標,請選擇「指定其他帳戶」。然後,輸入具有顯示資料倉儲ARN之權限的IAM角色。如需建立IAM角色的指示,請參閱在不同帳戶中選擇目標資料倉儲

    2. 對於 Amazon Redshift 資料倉儲,請從來源資料庫資料中選取複寫資料的目標。您可以選擇佈建的 Amazon Redshift 叢集或 Redshift 無伺服器命名空間做為目標。

    注意

    RDS如果未正確設定指定資料倉儲的資源原則或區分大小寫設定,則會通知您。如果您收到此訊息,您可以選擇為我修正或手動設定它們。如需手動修正它們的指示,請參閱《Amazon Redshift 管理指南》中的開啟資料倉儲的區分大小寫設定資料倉儲的授權

    修改已佈建 Redshift 叢集的區分大小寫需要重新開機。在可以建立整合之前,必須先完成重新開機,且新參數值必須成功套用至叢集。

    如果您選取的來源和目標位於不同 AWS 帳戶,那麼 Amazon RDS 無法為您修復這些設置。您必須導覽至其他帳戶,然後在 Amazon Redshift 中手動修正這些設定。

  9. 正確設定了目標資料倉儲後,即可選擇下一步

  10. (選用) 對於標籤,將一或多個標籤新增至整合。如需詳細資訊,請參閱標記 Amazon RDS 資源

  11. 對於加密,指定您想要加密整合的方式。依預設,RDS會將所有整合加密 AWS 擁有的金鑰。 若要改為選擇客戶管理的金鑰,請啟用「自訂加密設定」,然後選擇要用於加密的KMS金鑰。如需詳細資訊,請參閱加密 Amazon RDS 資源

    可選擇性地新增加密內容。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南

    注意

    除了您新RDS增的任何內容之外,Amazon 還新增下列加密內容配對:

    • aws:redshift:integration:arn - IntegrationArn

    • aws:servicename:id - Redshift

    這將您可以添加的對的總數從 8 減少到 6,並有助於授予約束的整體字符限制。如需詳細資訊,請參閱 < 使用授與條件約束AWS Key Management Service 開發人員指南

  12. 選擇 Next (下一步)

  13. 檢閱您的整合設定,然後選擇 [建立零ETL整合]。

    如果建立失敗,請參閱 我無法創建零ETL集成,取得疑難排解步驟。

整合建立時的狀態為 Creating,而目標 Amazon Redshift 資料倉儲的狀態為 Modifying。在此期間,您無法查詢資料倉儲或對其進行任何組態變更。

成功建立整合時,整合和目標 Amazon Redshift 資料倉儲的狀態都會變更為 Active

若要使用建立零ETL整合 AWS CLI」中,搭配下列選項使用「建立整合」指令:

  • --integration-name - 指定整合的名稱。

  • --source-arn— 指定將成為整合來源ARN的RDS資料庫 Aurora 資料庫

  • --target-arn— 指定將成為整合目標ARN的 Amazon Redshift 資料倉儲。

用於 Linux, macOS,或 Unix:

aws rds create-integration \ --integration-name my-integration \ --source-arn arn:aws:rds:{region}:{account-id}:my-db \ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

用於 Windows:

aws rds create-integration ^ --integration-name my-integration ^ --source-arn arn:aws:rds:{region}:{account-id}:my-db ^ --target-arn arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid

要使用 Amazon 創建零ETL集成 RDSAPI,請使用具有以下參數的CreateIntegration操作:

  • IntegrationName - 指定整合的名稱。

  • SourceArn— 指定將成為整合來源ARN的RDS資料庫 Aurora 資料庫

  • TargetArn— 指定將成為整合目標ARN的 Amazon Redshift 資料倉儲。

加密與客戶管理金鑰的整合

如果您指定自訂KMS金鑰而非 AWS 擁有的金鑰 當您建立整合時,金鑰政策必須提供 Amazon Redshift 服務主體存取CreateGrant動作的權限。此外,它必須允許要求者帳戶或角色對DescribeKeyCreateGrant動作執行。

下列金鑰原則陳述式範例示範政策文件中所需的權限。一些範例包括可進一步縮減權限範圍的內容索引鍵。

下列政策陳述式可讓要求者帳戶或角色擷取KMS金鑰的相關資訊。

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }

下列政策陳述式允許要求者帳戶或角色將授權新增至KMS金鑰。kms:ViaService條件密鑰限制了對來自 Amazon 請求的KMS密鑰的使用RDS。

{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "kms:ViaService":"rds.{region}.amazonaws.com" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }

以下政策聲明允許 Amazon Redshift 服務主體向KMS金鑰新增授權。

{ "Effect":"Allow", "Principal":{ "Service":"redshift.amazonaws.com" }, "Action":"kms:CreateGrant", "Resource":"*", "Condition":{ "StringEquals":{ "kms:EncryptionContext:{context-key}":"{context-value}", "aws:SourceAccount":"{account-ID}" }, "ForAllValues:StringEquals":{ "kms:GrantOperations":[ "Decrypt", "GenerateDataKey", "CreateGrant" ] }, "ArnLike":{ "aws:SourceArn":"arn:aws:*:{region}:{account-ID}:integration:*" } } }

如需詳細資訊,請參AWS Key Management Service 開發人員指南

後續步驟

成功建立零ETL整合後,您必須在目標 Amazon Redshift 叢集或工作群組中建立目標資料庫。然後,您就可以開始將資料新增到來源資料RDS庫 ,並在 Amazon Redshift 中進行查詢。如需指示,請參閱在 Amazon Redshift 中建立目的地資料庫