View a markdown version of this page

启用 Amazon S3 表类数据存储服务集成 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

启用 Amazon S3 表类数据存储服务集成

您可以使用 Amazon S3 控制台创建 Amazon S3 表类数据存储服务存储桶,并将其与 Amazon 分析服务集成。有关更多信息,请参阅将 Amazon S3 表类数据存储服务与 Amazon 分析服务配合使用

在中 Amazon Lake Formation,您可以启用 Amazon S3 表格与 Amazon Glue Data Catalog Lake Formation 控制台的集成,也可以 Amazon Lake Formation 使用 Lake Formation 控制台或使用 Amazon CLI。

  1. 打开 Lake Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/

  2. 在导航窗格的 Data Catalog 下,选择目录

  3. 目录页面上选择启用 S3 表集成

    目录页面上的启用 S3 表集成选项。
  4. 选择一个具有所需权限的 IAM 角色,供 Lake Formation 代入,以便向分析查询引擎提供凭证。有关该角色访问数据所需的权限,请参阅先决条件部分的step3-permissions

    使用 IAM 角色启用 S3 集成屏幕。
  5. 选择支持外部引擎以完全表访问权限访问 Amazon S3 位置的数据选项。当您为第三方引擎启用完全表访问权限时,Lake Formation 将直接向第三方引擎返回凭证,而无需执行 IAM 会话标签验证。这意味着您无法对要访问的表应用 Lake Formation 精细访问控制。

  6. 请选择启用。S3 表的新目录已添加到目录列表中。启用 S3 表目录集成后,该服务会向 Lake Formation 注册 S3 表存储桶的数据位置。

  7. 选择目录以查看目录对象并向其他主体授予权限。

    S3 表目录

    要创建多级目录,请参阅《Amazon Simple Storage Service 用户指南》中的创建表存储桶部分。

在先决条件部分之后,创建一个允许 Lake Formation 访问您的表资源的 IAM 服务角色。

  1. 创建一个名为 Role-Trust-Policy.json 的文件,其中包含以下信任策略:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPolicy", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }
  2. 使用以下命令创建 IAM 服务角色:

    aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
  3. 创建一个名为 LF-GluePolicy.json 的文件,其中包含以下策略:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] }
  4. 使用以下命令将策略附加到角色:

    aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  5. 创建一个名为 input.json 的文件,其中包含以下内容:

    { "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" }
  6. 使用以下命令在 Lake Formation 中注册表存储桶:

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  7. 创建一个名为 catalog.json 的文件,其中包含以下目录:

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions": [], "CreateTableDefaultPermissions": [], "AllowFullTableExternalDataAccess": "True" } }
  8. 使用以下命令创建 s3tablescatalog 目录。创建此目录时,会 Amazon Glue Data Catalog 使用与表存储桶、命名空间和表对应的对象填充。

    aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json
  9. 使用以下命令验证是否已添加s3tablescatalog目录: Amazon Glue

    aws glue get-catalog --catalog-id s3tablescatalog