本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定來源與目標之間的整合需要一些先決條件,例如設定 IAM角色,其 AWS Glue 使用 從來源存取資料並寫入目標,以及使用KMS金鑰來加密中繼或目標位置的資料。
設定來源資源
視需要為您的來源執行下列設定任務。
設定來源角色
本節說明如何傳遞來源角色,以允許零ETL整合存取您的連線。這也僅適用於 SaaS 來源。
注意
若要限制只存取幾個連線,您可以先建立連線以取得連線 ARN。請參閱 設定零ETL整合的來源。
建立具有 整合存取連線許可的角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueConnections",
"Effect": "Allow",
"Action": [
"glue:GetConnections",
"glue:GetConnection"
],
"Resource": [
"arn:aws:glue:*:<accountId>:catalog",
"arn:aws:glue:us-east-1:<accountId>:connection/*"
]
},
{
"Sid": "GlueActionBasedPermissions",
"Effect": "Allow",
"Action": [
// Fetch entities:
"glue:ListEntities",
// Refresh connection credentials:
"glue:RefreshOAuth2Tokens"
],
"Resource": [
"*"
]
}
]
}
信任政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"glue.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
設定目標資源
針對 AWS Glue Data Catalog 或 Amazon Redshift 資料倉儲整合目標,視需要執行下列設定任務。
對於與 AWS Glue 資料庫目標的整合:
對於與 Amazon Redshift 資料倉儲目標的整合:
設定 AWS Glue 資料庫
對於使用 AWS Glue 資料庫的整合:
若要在 AWS Glue Data Catalog 中設定具有 Amazon S3 位置的目標資料庫:
在 AWS Glue 主控台首頁中,選取 Data Catalog 下的資料庫。
選擇右上角的新增資料庫。如果您已建立資料庫,請確定URI已為資料庫設定具有 Amazon S3 的位置。
輸入名稱和位置 (S3 URI)。請注意,零ETL整合需要 位置。完成後按一下建立資料庫。
注意
Amazon S3 儲存貯體必須與 AWS Glue 資料庫位於相同的區域。
如需在 中建立新資料庫的資訊 AWS Glue,請參閱 AWS Glue Data Catalog 入門。
您也可以使用 create-database
CLI 在 中建立資料庫 AWS Glue。請注意,--database-input
需要 LocationUri
中的 。
最佳化處理 Iceberg 資料表
由 AWS Glue 在目標資料庫中建立資料表後,您可以啟用壓縮以加速 Amazon Athena 中的查詢。如需設定壓縮資源 (IAM 角色) 的相關資訊,請參閱資料表最佳化先決條件。
如需在整合建立的 AWS Glue 資料表上設定壓縮的詳細資訊,請參閱最佳化 Iceberg 資料表。
提供目錄資源型存取 (RBAC) 政策
對於使用 AWS Glue 資料庫的整合,請將下列許可新增至目錄RBAC政策,以允許來源和目標之間的整合。
注意
對於跨帳戶整合,Alice (建立整合的使用者) 角色政策和目錄資源政策都需要在資源glue:CreateInboundIntegration
上允許 。對於相同帳戶,允許 資源的資源政策或角色政策glue:CreateInboundIntegration
已足夠。這兩個案例仍需要允許 glue.amazonaws.com
。 glue:AuthorizeInboundIntegration
您可以在 Data Catalog 下存取 Catalog 設定。然後提供下列許可,並填入缺少的資訊。
{
"Version": "2012-10-17",
"Statement": [
{ // Allow Alice to create Integration on Target Database
"Principal": {
"AWS": [
"arn:aws:iam::<source-account-id>:user/Alice"
]
},
"Effect": "Allow",
"Action": [
"glue:CreateInboundIntegration"
],
"Resource": [
"arn:aws:glue:<region>:<Target-Account-Id>:catalog",
"arn:aws:glue:<region>:<Target-Account-Id>:database/DatabaseName"
],
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:dynamodb:<region>:<Account>:table/<table-name>"
}
}
},
{ // Allow Glue to Authorize the Inbound Integration on behalf of Bob
"Principal": {
"Service": [
"glue.amazonaws.com"
]
},
"Effect": "Allow",
"Action": [
"glue:AuthorizeInboundIntegration"
],
"Resource": [
"arn:aws:glue:<region>:<Target-Account-Id>:catalog",
"arn:aws:glue:<region>:<Target-Account-Id>:database/DatabaseName"
],
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:dynamodb:<region>:<account-id>:table/<table-name>"
}
}
}
]
}
建立目標IAM角色
建立具有下列許可和信任關係的目標IAM角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<target iceberg table s3 bucket>",
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::<target iceberg table s3 bucket>/prefix/*",
"Effect": "Allow"
},
{
"Action": [
"glue:GetDatabase"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/DatabaseName"
],
"Effect": "Allow"
},
{
"Action": [
"glue:CreateTable",
"glue:GetTable",
"glue:UpdateTable",
"glue:GetTableVersion",
"glue:GetTableVersions",
"glue:GetResourcePolicy"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/<DatabaseName>",
"arn:aws:glue:<region>:<account-id>:table/<DatabaseName>/*"
],
"Effect": "Allow"
},
{
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "AWS/Glue/ZeroETL"
}
},
"Effect": "Allow"
},
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
新增下列信任政策,以允許 AWS Glue 服務擔任該角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
建立 Amazon Redshift 資料倉儲
當您的零ETL整合目標是 Amazon Redshift 資料倉儲時,如果您還沒有資料倉儲,請建立資料倉儲。若要建立 Amazon Redshift Serverless 工作群組,請參閱使用命名空間建立工作群組。若要建立 Amazon Redshift 叢集,請參閱建立叢集。
目標 Amazon Redshift 工作群組或叢集必須開啟 enable_case_sensitive_identifier
參數,才能成功整合。如需啟用區分大小寫的詳細資訊,請參閱《Amazon Redshift 管理指南》中的為您的資料倉儲開啟區分大小寫。
Amazon Redshift 工作群組或叢集設定完成後,您需要設定資料倉儲。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的零ETL整合入門。
VPC 為您的零ETL整合設定
若要VPC為您的零ETL整合設定 :
前往 VPC > 您的 VPCs ,然後選擇建立 VPC。
選取 VPC 等。
設定您的VPC名稱。
設定 IPv4 CIDR:10.0.0.0/16。
將 AZ 數量設定為 1。
將公有和私有子網路的數量設定為 1。
將NAT閘道設定為無。
將VPC端點設定為 S3 Gateway。
啟用DNS主機名稱和DNS解析度。
前往端點,然後選擇建立端點。
在 的私有子網路中建立這些服務的端點 VPC(使用預設安全群組):
com.amazonaws.us-east-1.lambda
com.amazonaws.us-east-1.glue
com.amazonaws.us-east-1.sts
建立 AWS Glue 連線:
前往 AWS Glue > 資料連線,然後選擇建立連線。
選取網路。
選取您建立的 VPC、子網路 (私有) 和預設安全群組。
設定 的目標角色 VPC
目標角色必須具有這些許可 (除了零ETl整合所需的其他許可之外):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CustomerVpc",
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeRouteTables",
"ec2:DescribeVpcEndpoints",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"glue:GetConnection"
],
"Resource": [
"*"
]
}
]
}
設定目標腿部資源屬性
如果您使用 CLI,請將目標腿部資源屬性設定為您建立的目標 AWS Glue 資料庫。傳遞目標角色 ARN以及 AWS Glue 連線名稱。
aws glue create-integration-resource-property \
--resource-arn arn:aws:glue:us-east-1:<account-id>:database/exampletarget \
--target-processing-properties '{"RoleArn" : "arn:aws:iam::<account-id>:role/example-role", "ConnectionName":"example-vpc-3"}' \
--endpoint-url https://example.amazonaws.com --region us-east-1
可能的用戶端錯誤
以下是使用 設定的整合可能發生的用戶端錯誤VPC。
錯誤訊息 | 必要動作 |
---|---|
提供的角色未獲授權執行 glue:GetConnection on 連線。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的角色未獲授權執行 ec2:DescribeSubnets。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的角色未獲授權執行 ec2:DescribeSecurityGroups。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的角色未獲授權執行 ec2:DescribeVpcEndpoints。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的角色未獲授權執行 ec2:DescribeRouteTables。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的角色未獲授權執行 ec2:CreateTags。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的角色未獲授權執行 ec2:CreateNetworkInterface。將此許可新增至角色政策,然後等待整合復原。 | 更新角色政策 |
提供的連線子網路不包含有效的 S3 端點或NAT閘道。更新子網路,然後等待整合復原。 | 更新VPC子網路端點 |
找不到連線子網路。更新連線子網路,然後等待整合復原。 | 更新 &GLU; 連線 |
找不到連線安全群組。更新連線安全群組,然後等待整合復原。 | 更新 &GLU; 連線 |
無法透過提供的連線連線至 S3VPC。更新子網路組態,然後等待整合復原。 | 更新VPC子網路端點 |
無法透過提供的連線連線至 LambdaVPC。更新子網路組態,然後等待整合復原。 | 更新VPC子網路端點 |
設定零跨ETL帳戶整合
若要設定零跨ETL帳戶整合:
設定目標資源政策,如中所述提供目錄資源型存取 (RBAC) 政策。確定目標資源上明確允許來源帳戶角色。
檢查來源帳戶角色 (用來建立整合的角色) 是否具有下列項目:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt123456789012", "Action": [ "glue:CreateInboundIntegration" ], "Effect": "Allow", "Resource": [ "arn:aws:glue:<region>:<target-account-id>:catalog", "arn:aws:glue:<region>:<target-account-id>:database/DatabaseName" ] }] }
建立整合,如 中所述建立整合。