本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
創建 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}
::integration:*" ] }, { "Effect": "Allow", "Action": [ "redshift:CreateInboundIntegration" ], "Resource": [ "arn:aws:redshift:
{account-id}
{region}
::namespace:
{account-id}
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::
:root" }, "Action":"sts:AssumeRole" } ] }
{external-account-id}
如需建立角色的指示,請參閱使用自訂信任政策建立角色。
建立零ETL整合
您可以建立零ETL整合 使用 AWS Management Console,該 AWS CLI,或 RDSAPI.
根據預設,RDS對於 My,會SQL立即清除二進位記錄檔。由於零ETL整合依賴二進位記錄檔將資料從來源複寫到目標,因此來源資料庫的保留期間必須至少為一小時。只要您建立整合,Amazon 就RDS會檢查所選來源資料庫的二進位日誌檔保留期。如果當前值為 0 小時,Amazon RDS 會自動將其更改為 1 小時。否則,此值保持不變。
若要建立零ETL整合
登入 AWS Management Console 並在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/
。 -
在左側導覽窗格中,選擇 [零ETL整合]。
-
選擇「建立零ETL整合」。
-
對於整合識別符,輸入整合的名稱。此名稱最多可有 63 個英數字元,且可包含連字號。
-
選擇 Next (下一步)。
對於來源,請選取資料來源的資料RDS庫 。
注意
RDS會通知您資料庫參數是否設定正確。如果您收到此訊息,您可以選擇為我修正或手動設定它們。如需手動修正它們的指示,請參閱 步驟 1:建立自訂資料庫參數群組。。
修改資料庫參數需要重新開機。建立整合之前,必須先完成重新開機,且新參數值必須順利套用至資料庫。
-
成功設定來源資料庫資料庫之後,請選擇下一步。
針對目標,執行下列動作:
(選擇性) 若要使用不同的 AWS 帳戶 對於 Amazon Redshift 目標,請選擇「指定其他帳戶」。然後,輸入具有顯示資料倉儲ARN之權限的IAM角色。如需建立IAM角色的指示,請參閱在不同帳戶中選擇目標資料倉儲。
對於 Amazon Redshift 資料倉儲,請從來源資料庫資料庫中選取複寫資料的目標。您可以選擇佈建的 Amazon Redshift 叢集或 Redshift 無伺服器命名空間做為目標。
注意
RDS如果未正確設定指定資料倉儲的資源原則或區分大小寫設定,則會通知您。如果您收到此訊息,您可以選擇為我修正或手動設定它們。如需手動修正它們的指示,請參閱《Amazon Redshift 管理指南》中的開啟資料倉儲的區分大小寫和設定資料倉儲的授權。
修改已佈建 Redshift 叢集的區分大小寫需要重新開機。在可以建立整合之前,必須先完成重新開機,且新參數值必須成功套用至叢集。
如果您選取的來源和目標位於不同 AWS 帳戶,那麼 Amazon RDS 無法為您修復這些設置。您必須導覽至其他帳戶,然後在 Amazon Redshift 中手動修正這些設定。
-
正確設定了目標資料倉儲後,即可選擇下一步。
-
(選用) 對於標籤,將一或多個標籤新增至整合。如需詳細資訊,請參閱標記 Amazon RDS 資源。
-
對於加密,指定您想要加密整合的方式。依預設,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 開發人員指南。
-
-
選擇 Next (下一步)。
檢閱您的整合設定,然後選擇 [建立零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
動作的權限。此外,它必須允許要求者帳戶或角色對DescribeKey
和CreateGrant
動作執行。
下列金鑰原則陳述式範例示範政策文件中所需的權限。一些範例包括可進一步縮減權限範圍的內容索引鍵。
下列政策陳述式可讓要求者帳戶或角色擷取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 中建立目的地資料庫。