本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS GlueIceberg REST端點存取 Amazon S3 資料表
一旦 S3 資料表儲存貯體與 整合, AWS Glue Data Catalog 您就可以使用 AWS GlueIceberg REST端點從 Apache Iceberg相容的用戶端連線至 S3 資料表,例如 PyIceberg或 Spark。 AWS Glue Iceberg REST 端點實作 Iceberg REST Catalog Open API 規格
如需使用 的端對端逐步解說PyIceberg,請參閱PyIceberg透過 AWS GlueIceberg REST端點使用 存取 Amazon S3 資料表中的資料
為您的用戶端建立 IAM 角色
若要透過 AWS Glue 端點存取資料表,您需要建立具有 AWS Glue 和 Lake Formation 動作許可的 IAM 角色。此程序說明如何建立此角色並設定其許可。
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 在左側導覽窗格中選擇 Policies (政策)。
選擇建立政策,然後在政策編輯器中選擇 JSON。
新增下列內嵌政策,以授予存取 AWS Glue 和 Lake Formation 動作的許可:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:
<region>
:<account-id>
:catalog", "arn:aws:glue:<region>
:<account-id>
:catalog/s3tablescatalog", "arn:aws:glue:<region>
:<account-id>
:catalog/s3tablescatalog/<s3_table_bucket_name>
", "arn:aws:glue:<region>
:<account-id>
:table/s3tablescatalog/<s3_table_bucket_name>
/<namespace>
/*", "arn:aws:glue:<region>
:<account-id>
:database/s3tablescatalog/<s3_table_bucket_name>
/<namespace>
" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }-
建立政策後,請建立 IAM 角色,然後選擇自訂信任政策作為受信任實體類型。
-
針對自訂信任政策輸入下列內容。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<accountid>:role/<Admin_role>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
在 Lake Formation 中定義存取權
Lake Formation 為您的資料湖資料表提供精細的存取控制。當您將 S3 儲存貯體與 整合時 AWS Glue Data Catalog,您的資料表會自動註冊為 Lake Formation 中的資源。若要存取這些資料表,除了 IAM 政策許可之外,您還必須將特定 Lake Formation 許可授予 IAM 身分。
下列步驟說明如何套用 Lake Formation 存取控制,以允許Iceberg用戶端連線到您的資料表。您必須以資料湖管理員身分登入,才能套用這些許可。
允許外部引擎存取資料表資料
在 Lake Formation 中,您必須啟用外部引擎的完整資料表存取,才能存取資料。這可讓第三方應用程式在使用對請求的資料表具有完整許可的 IAM 角色時,從 Lake Formation 取得臨時登入資料。
開啟 Lake Formation 主控台,網址為 https://console.aws.amazon.com/lakeformation/
在 https://https://console.aws.amazon.com/lakeformation/
開啟 Lake Formation 主控台,並以資料湖管理員身分登入。 在管理下的導覽窗格中,選擇應用程式整合設定。
選取允許外部引擎存取具有完整資料表存取權的 Amazon S3 位置中的資料。然後選擇 Save (儲存)。
授予資料表資源的 Lake Formation 許可
接著,將 Lake Formation 許可授予您為 Iceberg 相容用戶端建立的 IAM 角色。這些許可將允許角色在您的命名空間中建立和管理資料表。您需要同時提供資料庫和資料表層級許可:
授予資料庫許可
在 https://https://console.aws.amazon.com/lakeformation/
開啟 AWS Lake Formation 主控台,並以資料湖管理員身分登入。 在導覽窗格中,選擇資料許可,然後選擇授予。
在授予許可頁面的主體下,選擇 IAM 使用者和角色,然後選取您為 AWS Glue IcebergREST endpoint 存取建立的 IAM 角色。
在 LF-標籤或型錄資源下,選擇已命名的的資料型錄資源。
針對目錄,選擇為資料表儲存貯體建立 AWS Glue 的資料目錄。例如
。<accoundID>
:s3tablescatalog/<table-bucket-name>
針對資料庫,選擇
mynamespace
。針對資料表許可,選擇建立資料表和描述。
選擇 Grant (授予)。
授予資料表許可
在 https://https://console.aws.amazon.com/lakeformation/ 開啟 AWS Lake Formation 主控台,並以資料湖管理員身分登入。
在導覽窗格中,選擇資料許可,然後選擇授予。
在授予許可頁面的主體下,選擇 IAM 使用者和角色,然後選取您為 AWS Glue Iceberg REST endpoint存取建立的 IAM 角色。
在 LF-標籤或型錄資源下,選擇已命名的的資料型錄資源。
針對目錄,選擇為資料表儲存貯體建立 AWS Glue 的資料目錄。例如
。<accoundID>
:s3tablescatalog/<table-bucket-name>
針對資料庫,選擇您建立的 S3 資料表儲存貯體命名空間。
針對資料表,選擇 ALL_TABLES。
對於表格權限,選擇 Super。
選擇 Grant (授予)。
設定您的環境以使用端點
使用資料表存取所需的許可設定 IAM 角色之後,您可以使用下列命令,透過 AWS CLI 使用角色設定 ,從本機電腦執行Iceberg用戶端:
aws sts assume-role --role-arn "arn:aws:iam::
<accountid>
:role/<glue-irc-role>
" --role-session-name<glue-irc-role>
若要透過 AWS Glue REST端點存取資料表,您需要在Iceberg與 相容的用戶端中初始化目錄。此初始化需要指定自訂屬性,包括 sigv4 屬性、端點 URI 和倉儲位置。指定這些屬性,如下所示:
-
Sigv4 屬性 - 必須啟用 Sigv4,簽署名稱為
glue
-
倉儲位置 - 這是您的資料表儲存貯體,以下列格式指定:
<accountid>
:s3tablescatalog/<table-bucket-name>
-
端點 URI - 請參閱區域特定端點 AWS Glue 的服務端點參考指南
下列範例示範如何初始化pyIceberg目錄。
rest_catalog = load_catalog(
s3tablescatalog
, **{ "type": "rest", "warehouse": "<accountid>
:s3tablescatalog/<table-bucket-name>
", "uri": "https://glue.<region>
.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "glue", "rest.signing-region": region } )
如需 AWS GlueIceberg REST端點實作的詳細資訊,請參閱AWS Glue 《 使用者指南》中的使用 AWS GlueIceberg REST端點連線至 Data Catalog。