使用 AWS GlueIceberg REST 端點存取 Amazon S3 Tables
S3 資料表儲存貯體與 AWS Glue Data Catalog 整合後,您就可以使用 AWS Glue Iceberg REST 端點從與 Apache Iceberg 相容的用戶端連線至 S3 資料表,例如 PyIceberg 或 Spark。AWS Glue Iceberg REST 端點會實作 Iceberg REST Catalog Open API 規格
如需使用 PyIceberg 的端對端逐步解說,請參閱透過 AWS GlueIceberg REST 端點使用 PyIceberg 存取 Amazon S3 Tables 中的資料
為您的用戶端建立 IAM 角色
若要透過 AWS Glue 端點存取資料表,您需要建立具有 AWS Glue 和 Lake Formation 動作許可權限的 IAM 角色。此程序說明如何建立此角色,並設定其許可權。
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 在左側導覽窗格中選擇 Policies (政策)。
選擇建立政策,然後在政策編輯器中選擇 JSON。
新增下列內嵌政策,以授予存取 AWS Glue 和 Lake Formation 動作的許可權:
-
建立政策後,可建立 IAM 角色,並選擇自訂信任政策做為信任的實體類型。
-
針對自訂信任政策輸入下列內容。
在 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://console.aws.amazon.com/lakeformation/
開啟 Lake Formation 主控台,並以資料湖管理員身分登入。 在導覽窗格的管理下方,選擇應用程式整合設定。
選取允許外部引擎使用完整資料表存取權來存取 Amazon S3 位置中的資料 然後選擇 Save (儲存)。
授予資料表資源的 Lake Formation 許可
接著,將 Lake Formation 許可權授予您為與 Iceberg 相容之用戶端建立的 IAM 角色。這些許可權允許該角色在您的命名空間中建立和管理資料表。您需要同時提供資料庫和資料表層級的許可權。如需更多詳細資訊,請參閱 授予資料表或資料庫的 Lake Formation 許可。
設定您的環境以使用端點
在使用存取資料表所需的權限設定好 IAM 角色之後,您可以利用該角色從本機電腦執行 Iceberg 用戶端,方法是使用下列命令,以您的角色設定 AWS CLI:
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 Glue Iceberg REST 端點實作的詳細資訊,請參閱《AWS Glue 使用者指南》中的使用 AWS GlueIceberg REST 端點連線至 Data Catalog。