Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
建立 DynamoDB 的零 ETL 整合
在建立零 ETL 整合之前,請先檢閱 將零 ETL 整合與 Amazon Redshift 搭配使用的考量 中所述的考量事項和需求。依照此一般流程進行,以建立從 DynamoDB 到 Amazon Redshift 的零 ETL 整合
透過零 ETL 整合將 DynamoDB 資料複寫至 Amazon Redshift
-
確認您的登入憑證允許使用零 ETL 整合搭配 Amazon Redshift 和 DynamoDB 的許可。請參閱 要搭配 DynamoDB 零 ETL 整合使用的 IAM 政策 中的範例 IAM 政策。
-
從 DynamoDB 主控台,設定您的 DynamoDB 資料表,使其具有時間點復原 (PITR)、資源政策、身分型政策和加密金鑰許可,如《Amazon DynamoDB 開發人員指南》中所述。
-
從 Amazon Redshift 主控台:建立和設定目標 Amazon Redshift 資料倉儲。
-
從 AWS CLI 或 Amazon Redshift 主控台:為資料倉儲開啟區分大小寫功能。
-
從 Amazon Redshift 主控台:設定 Amazon Redshift 資料倉儲的授權。
-
-
從 Amazon Redshift 主控台建立零 ETL 整合,如本主題稍後所述。
-
從 Amazon Redshift 主控台,在您的 Amazon Redshift 資料倉儲中建立目的地資料庫。如需更多詳細資訊,請參閱 在 Amazon Redshift 中建立目的地資料庫。
-
從 Amazon Redshift 主控台,查詢 Amazon Redshift 資料倉儲中的複寫資料。如需更多詳細資訊,請參閱 在 Amazon Redshift 中查詢複寫的資料。
在此步驟中,您會建立與 Amazon Redshift 的 Amazon DynamoDB 零 ETL 整合。
要搭配 DynamoDB 零 ETL 整合使用的 IAM 政策
建立零 ETL 整合時,您的登入憑證必須同時具有 DynamoDB 和 Amazon Redshift 動作的許可,以及具有作為整合來源和目標之資源的許可。以下範例示範所需的最低許可。
使用客戶自管金鑰加密 DynamoDB 整合
如果您在建立 DynamoDB 零 ETL 整合時指定自訂 KMS 金鑰,而不是 AWS 擁有的金鑰,則金鑰政策必須提供 Amazon Redshift 服務主體對 CreateGrant 動作的存取權。此外,政策必須允許請求者帳戶或角色許可執行 DescribeKey 和 CreateGrant 動作。
下列範例金鑰政策陳述式示範政策中所需的許可。有些範例包含內容索引鍵,可進一步縮減許可範圍。
下列政策陳述式允許請求者帳戶或角色擷取 KMS 金鑰的相關資訊。
{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::{account-ID}:role/{role-name}" }, "Action":"kms:DescribeKey", "Resource":"*" }
下列政策陳述式允許請求者帳戶或角色新增授權至 KMS 金鑰。kms:ViaService 條件金鑰會將 KMS 金鑰的使用限於來自 Amazon Redshift 的請求。
{ "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":"redshift.{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 整合時,您可以將金鑰-值對新增為其他加密內容。您可能希望新增這些金鑰-值對,以新增有關複寫資料的其他內容資訊。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的加密內容。
除了您新增的任何項目之外,Amazon Redshift 還會新增下列加密內容對:
-
aws:redshift:integration:arn-IntegrationArn -
aws:servicename:id-Redshift
這會將您可以新增的整體配對數量從 8 減少為 6,並對授予限制的整體字元限制造成影響。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的使用授予限制條件。