本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Lake Formation 跨帳戶功能可讓使用者安全地跨多個 AWS 帳戶、 AWS 組織或直接與另一個帳戶中的 IAM 主體共用分散式資料湖,提供中繼資料和基礎資料的精細存取。
Lake Formation 使用 AWS Resource Access Manager (AWS RAM) 服務來促進資源共享。當您與另一個帳戶共用目錄資源時, AWS RAM 會傳送邀請給承授者帳戶,以接受或拒絕資源授予。
Amazon Athena 和 Redshift Spectrum 等整合式分析服務需要資源連結,才能在查詢中包含共用資源。主體需要在 中建立資源連結 AWS Glue Data Catalog ,以從另一個資源共用資源 AWS 帳戶。如需資源連結的詳細資訊,請參閱資源連結如何在 Lake Formation 中運作。
目錄連結容器是 Data Catalog 物件,其參考來自其他 AWS 帳戶的本機或跨帳戶聯合資料庫層級目錄。您也可以在目錄連結容器中建立資料庫連結和資料表連結。當您建立資料庫連結或資料表連結時,您必須指定位於相同目標 Amazon Redshift 資料庫層級目錄 (Amazon Redshift 資料庫) 下的目標資源。
若要建立目錄連結容器,您需要 Lake Formation CREATE_CATALOG
或 glue:CreateCatalog
許可。
建立跨帳戶聯合目錄的目錄連結容器
您可以使用 AWS Lake Formation 主控台、CreateCatalog
API 或 AWS Command Line Interface (), AWS Glue 建立指向任何 AWS 區域中 Redshift 資料庫層級聯合目錄的目錄連結容器AWS CLI。
建立目錄連結容器至共用目錄 (主控台)
-
在 https://https://console.aws.amazon.com/lakeformation/
開啟 AWS Lake Formation 主控台。以擁有 Lake Formation CREATE_CATALOG
許可的委託人身分登入。 -
在導覽窗格中,選擇目錄,然後選擇建立目錄。
-
在設定目錄詳細資訊頁面上,提供以下資訊:
- 名稱
-
輸入與目錄名稱遵守相同規則的名稱。名稱可與目標共用目錄相同。
- Type
-
選擇目錄連結容器做為目錄類型。
- 來源
-
選擇
Redshift
。 - 目標 Redshift 目錄
-
選取 Redshift 資料庫層級聯合目錄,或從清單中選擇本機 (擁有) 目錄。
此清單包含與您的帳戶共用的所有目錄。請注意,目錄擁有者帳戶 ID 會與每個目錄一起列出。如果您沒有看到您知道與您的帳戶共用的目錄,請檢查下列項目:
-
如果您不是資料湖管理員,請檢查資料湖管理員是否授予目錄上的 Lake Formation 許可。
-
如果您是資料湖管理員,且您的帳戶與授予帳戶不在同一個 AWS 組織中,請確定您已接受目錄的 AWS Resource Access Manager (AWS RAM) 資源共享邀請。如需詳細資訊,請參閱接受來自的資源共用邀請 AWS RAM。
-
-
若要讓 Apache Iceberg 查詢引擎能夠讀取和寫入 Amazon Redshift 命名空間, 會 AWS Glue 建立具有執行讀取和寫入操作所需的運算和儲存資源的受管 Amazon Redshift 叢集,而不會影響 Amazon Redshift 資料倉儲工作負載。您需要為 IAM 角色提供在 Amazon S3 儲存貯體之間傳輸資料所需的許可。
-
選擇 Next (下一步)。
-
(選用) 選擇新增許可,將許可授予其他主體。
不過,授予目錄連結容器的許可不會授予目標 (連結) 目錄的許可。您必須分別授予目標目錄的許可,目錄連結才能在 Athena 中顯示。
接著,檢閱目錄連結容器詳細資訊,然後選擇建立目錄。
然後,您可以在目錄頁面下檢視連結容器名稱。
現在,您可以在目錄連結容器中建立資料庫連結和資料表連結,以啟用查詢引擎的存取。
建立目錄連結容器 CLI 範例
-
在下列範例中,
TargetRedshiftCatalog
物件會指定 Amazon Redshift 聯合資料庫層級目錄 (Amazon Redshift 資料庫) 的生成。建立目錄連結容器時,DataLakeAccess
必須啟用 。aws glue create-catalog \ --cli-input-json '{ "Name":
"linkcontainer"
, "CatalogInput": { "TargetRedshiftCatalog": { "CatalogArn":"arn:aws:us-east-1:123456789012:catalog/nscatalog/dev"
}, "CatalogProperties": { "DataLakeAccessProperties" : { "DataLakeAccess" : true, "DataTransferRole" :"arn:aws:iam::111122223333:role/DataTransferRole"
} } } }'
在目錄連結容器下建立資源連結
您可以在目錄連結容器下建立資料庫和資料表連結的資源連結。當您建立資料庫資源連結或資料表資源連結時,您必須指定位於連結容器指向的相同目標 Amazon Redshift 資料庫層級目錄 (Amazon Redshift 資料庫) 下的目標資源。
您可以使用 AWS Lake Formation 主控台、API 或 AWS Command Line Interface () 建立共用 Amazon Redshift 資料庫或資料表的資源連結AWS CLI。
-
如需詳細說明,請參閱 建立共用 Data Catalog 資料庫的資源連結。
以下是在目錄連結容器下建立資料庫資源連結 AWS CLI 的範例。
aws glue create-database \ --cli-input-json \ '{ "CatalogId":
"111122223333:linkcontainer"
, "DatabaseInput": { "Name":"dblink"
, "TargetDatabase": { "CatalogId":"123456789012:nscatalog/dev"
, "DatabaseName":"schema1"
} } }' -
若要在目錄連結容器下建立資料表資源連結,您必須先在本機中建立 AWS Glue 資料庫, AWS Glue Data Catalog 以包含資料表資源連結。
如需建立共用資料表的資源連結的詳細資訊,請參閱 建立共用 Data Catalog 資料表的資源連結。
建立資料庫以包含資料表資源連結範例
aws glue create-database \ --cli-input-json \ '{ "CatalogId":
"111122223333:linkcontainer"
, "DatabaseInput": { "Name":"db1"
, "Description":"creating parent database for table link"
} }'-
建立資料表資源連結範例
aws glue create-table \ --cli-input-json \ '{ "CatalogId":
"111122223333:linkcontainer"
, "DatabaseName":"db1"
, "TableInput": { "Name": "tablelink", "TargetTable": { "CatalogId":"123456789012:nscatalog/dev"
, "DatabaseName":"schema1"
, "Name":"table1"
} } }'