建立與 Amazon Redshift 的 Aurora 零 ETL 整合 - Amazon Aurora

建立與 Amazon Redshift 的 Aurora 零 ETL 整合

建立 Aurora 零 ETL 整合時,您可以指定來源 Aurora 資料庫叢集和目標 Amazon Redshift 資料倉儲。您也可以自訂加密設定和新增標籤。Aurora 會在來源資料庫叢集與其目標之間建立整合。一旦整合作用中,您插入至來源資料庫叢集的任何資料就會複寫至設定的 Amazon Redshift 目標。

先決條件

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

如需完成上述每個步驟的指示,請參閱 開始使用 Aurora 零 ETL 整合

所需的許可

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

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

  • 檢視並刪除所有零 ETL 整合。

  • 建立目標資料倉儲的傳入整合。

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

注意

Redshift Amazon Resource Name (ARN) 具有下列格式。請注意在無伺服器命名空間 UUID 之前使用正斜線 ((/),而不是冒號 (:)。

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

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

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateIntegration", "Effect": "Allow", "Action": [ "rds:CreateIntegration" ], "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:source-db", "arn:aws:rds:us-east-1:123456789012:integration:*" ] }, { "Sid": "DescribeIntegrationDetails", "Effect": "Allow", "Action": [ "rds:DescribeIntegrations" ], "Resource": [ "arn:aws:rds:us-east-1:123456789012:integration:*" ] }, { "Sid": "ChangeIntegrationDetails", "Effect": "Allow", "Action": [ "rds:DeleteIntegration", "rds:ModifyIntegration" ], "Resource": [ "arn:aws:rds:us-east-1:123456789012:integration:*" ] }, { "Sid": "AllowRedShiftIntegration", "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:namespace:namespace-uuid" ] } ] }

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

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

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

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

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

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

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

建立零 ETL 整合

您可以使用 AWS Management Console、AWS CLI 或 RDS API 建立除零 ETL 整合。

重要

零 ETL 整合不支援重新整理或重新同步操作。如果您在建立整合之後遇到問題,則必須刪除整合並建立新的整合。

建立零 ETL 整合
  1. 登入 AWS Management Console,開啟位於 https://console.aws.amazon.com/rds/ 的 Amazon RDS 主控台。

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

  3. 選擇建立零 ETL 整合

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

    重要

    目錄名稱的長度限制為 19 個字元。如果整合識別符將用作目錄名稱,請確保其符合此要求。

  5. 選擇下一步

  6. 對於來源,請選取資料源自其中的 Aurora 資料庫叢集

    注意

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

    修改資料庫叢集參數需要重新開機。在可以建立整合之前,必須先完成重新開機,且新參數值必須成功套用至叢集

  7. (選用) 選取自訂資料篩選選項,並將資料篩選條件新增至您的整合。您可以使用資料篩選條件來定義目標資料倉儲的複寫範圍。如需更多詳細資訊,請參閱 Aurora 零 ETL 整合的資料篩選

  8. 順利設定來源資料庫叢集後,即可選擇下一步

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

    1. (選用) 若要針對 Amazon Redshift 目標使用不同的 AWS 帳戶,請選擇指定其他帳戶。然後,輸入 IAM 角色的 ARN,該角色擁有顯示您資料倉儲的許可。如需建立 IAM 角色的指示,請參閱 在不同帳戶中選擇目標資料倉儲

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

    注意

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

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

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

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

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

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

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

    注意

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

    • aws:redshift:integration:arn - IntegrationArn

    • aws:servicename:id - Redshift

    這會將您可以新增的整體配對數量從 8 減少為 6,並對授予限制的整體字元限制造成影響。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的使用授予限制條件

  13. 選擇下一步

  14. 檢閱您的整合設定,然後選擇建立零 ETL 整合

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

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

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

若要使用 AWS CLI 建立零 ETL 整合,請搭配下列選項使用 create-integration 命令:

注意

請記住,目錄名稱限制為 19 個字元。如果整合名稱將用作目錄名稱,請據此選擇整合名稱。

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

  • --source-arn - 指定 Aurora 資料庫叢集的 ARN,它將會成為整合來源。

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

對於 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 RDS API 建立零 ETL 整合,請搭配下列參數使用 CreateIntegration 操作:

注意

目錄名稱限制為 19 個字元。如果 IntegrationName 參數將用作目錄名稱,請確保其符合此要求。

  • IntegrationName - 指定整合的名稱。

  • SourceArn - 指定 Aurora 資料庫叢集的 ARN,它將會成為整合來源。

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

使用客戶自管金鑰加密整合

如果您在建立整合時指定自訂 KMS 金鑰,而不是 AWS 擁有的金鑰,則金鑰政策必須提供 CreateGrant 動作的 Amazon Redshift 服務主體存取權。此外,它必須允許目前的使用者執行 DescribeKeyCreateGrant 動作。

下列範例政策示範如何在金鑰政策中提供必要許可。它包含內容索引鍵,以進一步減少許可範圍。

JSON
{ "Version": "2012-10-17", "Id": "Key policy", "Statement": [ { "Sid": "Enables IAM user permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allows the Redshift service principal to add a grant to a KMS key", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}": "{context-value}" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current user or role to add a grant to a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/{role-name}" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:{context-key}": "{context-value}", "kms:ViaService": "rds.us-east-1.amazonaws.com" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey", "CreateGrant" ] } } }, { "Sid": "Allows the current uer or role to retrieve information about a KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/{role-name}" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }

如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的建立金鑰政策

後續步驟

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