本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當您建立 Amazon RDS Aurora零 ETL 整合時,您可以指定來源 RDS 資料庫和目標 Amazon Redshift 資料倉儲。您也可以自訂加密設定和新增標籤。Amazon RDS Aurora會在來源資料庫及其目標之間建立整合。一旦整合處於作用中狀態,您插入來源資料庫的任何資料都會複寫至設定的 Amazon Redshift 目標。
必要條件
建立零 ETL 整合之前,您必須建立來源資料庫和目標 Amazon Redshift 資料倉儲。您還必須將 database新增為授權整合來源,以允許複寫至資料倉儲。
如需完成上述每個步驟的指示,請參閱 開始使用與 Amazon Redshift 的 Amazon RDS 零 ETL 整合。
所需的許可
建立零 ETL 整合需要特定 IAM 許可。您至少需要執行下列動作的許可:
為來源 RDS 資料庫建立零 ETL 整合。
檢視並刪除所有零 ETL 整合。
建立目標資料倉儲的傳入整合。如果相同帳戶擁有 Amazon Redshift 資料倉儲,且此帳戶是該資料倉儲的授權主體,則您不需要此許可。如需新增授權主體的相關資訊,請參閱設定 Amazon Redshift 資料倉儲的授權。
下列範例政策示範建立和管理整合所需的最低權限許可。如果您的使用者或角色具有更廣泛的許可,例如 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
{
"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 帳戶,則必須建立角色,允許目前帳戶中的使用者存取目標帳戶中的資源。如需詳細資訊,請參閱AWS 帳戶 在您擁有的另一個 IAM 使用者中提供存取權。
角色必須具有下列許可,允許使用者檢視目標帳戶中可用的 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 整合
您可以使用 AWS Management Console、 AWS CLI或 RDS API 建立零 ETL 整合。
依預設,RDS for MySQL 會立即清除二進位日誌檔。由於零 ETL 整合依賴二進位日誌將資料從來源複寫到目標,因此來源資料庫的保留期間必須至少為一小時。建立整合後,Amazon RDS 會檢查所選來源資料庫的二進位日誌檔案保留期間。如果目前值為 0 小時,Amazon RDS 會自動將其變更為 1 小時。否則,此值保持不變。
建立零 ETL 整合
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在左側導覽窗格中,選擇零 ETL 整合。
-
選擇建立零 ETL 整合。
-
對於整合識別符,輸入整合的名稱。此名稱最多可有 63 個英數字元,且可包含連字號。
-
選擇 Next (下一步)。
針對來源,選取資料來源的 RDS 資料庫。
注意
如果未正確設定資料庫參數,RDS 即會通知您。如果您收到此訊息,您可以選擇為我修正或手動設定它們。如需手動修正它們的指示,請參閱 步驟 1:建立自訂資料庫參數群組。。
修改資料庫參數需要重新開機。建立整合之前,重新啟動必須完成,且新的參數值必須成功套用至資料庫。
-
成功設定來源資料庫後,請選擇下一步。
針對目標,執行下列動作:
(選用) 若要 AWS 帳戶 對 Amazon Redshift 目標使用不同的 ,請選擇指定不同的帳戶。然後,輸入 IAM 角色的 ARN,該角色擁有顯示您資料倉儲的許可。如需建立 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 開發人員指南中的加密內容。
注意
除了您新增的任何 之外,Amazon RDS 還會新增下列加密內容對:
-
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,請使用 create-integration 命令搭配下列選項:
-
--integration-name
- 指定整合的名稱。 -
--source-arn
– 指定 RDS 資料庫 的 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
操作:
-
IntegrationName
- 指定整合的名稱。 -
SourceArn
– 指定 RDS 資料庫 的 ARN,該叢集將成為整合的來源。 -
TargetArn
– 指定 Amazon Redshift 資料倉儲的 ARN,它將會成為整合目標。
加密與客戶受管金鑰的整合
如果您在建立整合 AWS 擁有的金鑰 時指定自訂 KMS 金鑰,而不是 ,則金鑰政策必須提供 Amazon Redshift 服務主體對 CreateGrant
動作的存取權。此外,它必須允許目前的使用者對 DescribeKey
和 CreateGrant
動作執行 。
下列範例政策示範如何在金鑰政策中提供必要的許可。它包含內容索引鍵,以進一步減少許可範圍。
{
"Version": "2012-10-17",
"Id": "Key policy",
"Statement": [
{
"Sid": "Enables IAM user permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{account-ID}
: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::{account-ID}
: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::{account-ID}
:role/{role-name}
"
},
"Action": "kms:DescribeKey",
"Resource": "*"
}
]
}
如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的建立金鑰政策。
後續步驟
在成功建立零 ETL 整合之後,您必須在目標 Amazon Redshift 叢集或工作群組內建立目的地資料庫。然後,您可以開始將資料新增至來源 RDS 資料庫,並在 Amazon Redshift 中查詢。如需指示,請參閱在 Amazon Redshift 中建立目的地資料庫。