View a markdown version of this page

将 Amazon S3 表类数据存储服务与 AWS 分析服务集成 - Amazon Simple Storage Service

将 Amazon S3 表类数据存储服务与 AWS 分析服务集成

本主题介绍将 Amazon S3 表存储桶与 AWS 分析服务集成的先决条件和过程。有关集成工作原理的概述,请参阅 S3 表类数据存储服务集成概述

注意

此集成使用 AWS Glue Data Catalog,可能会产生 AWS Glue 请求和存储成本。有关更多信息,请参阅 AWS Glue 定价

在 S3 表类数据存储服务上运行查询需支付额外费用。有关更多信息,请参阅您使用的查询引擎的定价信息。

集成的先决条件

要将表存储桶与 AWS 分析服务集成,需要满足以下先决条件:

重要

创建表时,请确保在表名称和表定义中全部使用小写字母。例如,请确保列名称全部为小写。如果表名称或表定义包含大写字母,则 AWS Lake Formation 或 AWS Glue Data Catalog 不支持该表。在这种情况下,Amazon Athena 等 AWS 分析服务将无法看到您的表,即使表存储桶与 AWS 分析服务集成,也不例外。

如果表定义包含大写字母,则在 Athena 中运行 SELECT 查询时会收到以下错误消息:“GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names.”

将表存储桶与 AWS 分析服务集成

默认情况下,您可以使用 IAM 访问控制将表存储桶与数据目录和 AWS 分析服务集成,也可以选择使用 Lake Formation 访问控制。

使用 IAM 访问控制进行集成时,您需要 IAM 权限才能访问 Amazon S3 表存储桶和表、数据目录对象以及您正在使用的查询引擎。如果您选择使用 Lake Formation 进行集成,则 IAM 访问控制和 Lake Formation 授权将同时决定对数据目录资源的访问权限。请参阅 AWS Lake Formation 开发人员指南,了解有关 Lake Formation 集成的更多信息。

以下各节介绍如何使用 Amazon S3 管理控制台或 AWS CLI 来配置与 IAM 访问控制的集成。

  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择表存储桶

  3. 选择创建表存储桶

    此时将打开创建表存储桶页面。

  4. 输入表存储桶名称,并确保选中启用集成复选框。

  5. 选择创建表存储桶。Amazon S3 将尝试自动在该区域中集成您的表存储桶。

使用 AWS CLI 将表存储桶与 IAM 访问控制集成

以下步骤展示了如何使用 AWS CLI 来集成表存储桶。要使用这些步骤,请将 user input placeholders 替换为您自己的信息。

  1. 创建表存储桶。

    aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket
  2. 创建一个名为 catalog.json 的文件,其中包含以下目录:

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": ["ALL"] } ], "CreateTableDefaultPermissions":[ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": ["ALL"] } ], "AllowFullTableExternalDataAccess": "True" } }

    使用以下命令创建 s3tablescatalog 目录。创建此目录后,将使用与表存储桶、命名空间和表对应的对象填充 AWS Glue Data Catalog。

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

    aws glue get-catalog --catalog-id s3tablescatalog

AWS 分析服务集成流程已更新,以默认使用 IAM 权限。如果您已经设置了集成,则可以继续使用当前的集成。但是,如果您想将现有集成改为使用 IAM 权限,请参阅 AWS Lake Formation开发人员指南。您也可以重做集成,以删除 AWS Glue Data Catalog 和 AWS Lake Formation 中的现有设置,然后重新运行集成。这将移除所有现有的 Lake Formation 授权和对于 s3tablescatalog 的关联访问权限。

  1. 打开 AWS Lake Formation 控制台(网址为 https://console.aws.amazon.com/lakeformation/),并以数据湖管理员身份登录。有关如何创建数据湖管理员的更多信息,请参阅《AWS Lake Formation Developer Guide》中的 Create a data lake administrator

  2. 通过执行以下操作删除 s3tablescatalog 目录:

    • 在左侧导航窗格中,选择目录

    • 目录列表中,选择 s3tablescatalog 目录旁边的选项按钮。在操作 菜单上,选择删除

  3. 通过执行以下操作注销 s3tablescatalog 目录的数据位置:

    • 在左侧导航窗格中,转到管理部分,然后选择数据湖位置

    • 例如,选择 s3tablescatalog 数据湖位置(例如 s3://tables:region:account-id:bucket/*)旁边的选项按钮。

    • 操作菜单上,选择移除

    • 在出现的确认对话框中,选择移除

  4. 现在,您已经删除了 s3tablescatalog 目录和数据湖位置,可以按照以下步骤,使用更新的集成流程将表存储桶与 AWS 分析服务集成

注意

如果您想在集成的 AWS 分析服务中使用通过 SSE-KMS 加密的表,则您使用的角色需要拥有使用您的 AWS KMS 密钥进行加密操作的权限。有关更多信息,请参阅 向 IAM 主体授予在集成的 AWS 分析服务中使用加密表的权限