在 Amazon Glue Data Catalog 中创建 Amazon Redshift 托管目录 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Amazon Glue Data Catalog 中创建 Amazon Redshift 托管目录

您现在可能没有可用的 Amazon Redshift 创建器集群或 Amazon Redshift 数据共享,但想使用 Amazon Glue Data Catalog 来创建和管理 Amazon Redshift 表。首先,您可以使用 glue:CreateCatalog API 创建 Amazon Glue 托管目录,也可以将目录类型设置为 Managed 并将 Catalog source 设置为 Redshift,然后通过 Amazon Lake Formation 控制台来创建托管目录。该步骤执行以下操作:

  • 在 Data Catalog 中创建一个目录

  • 将目录注册为 Lake Formation 数据位置

  • 创建 Amazon Redshift 托管无服务器工作组

  • 使用数据共享对象链接 Amazon Redshift Serverless 工作组和 Data Catalog

创建托管目录并设置权限(控制台)
  1. 通过 https://console.aws.amazon.com/lakeformation/ 打开 Lake Formation 控制台。

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

  3. 选择创建目录选项。

  4. 设置目录详细信息页面上,输入以下信息:

    • 名称:您的托管目录的唯一名称。名称不能更改,且必须为小写。名称最多可包含 255 个字符,并且在账户内必须是唯一的。

    • 类型:为目录类型选择 Managed catalog

    • 存储:为存储选择 Redshift

    • 描述:输入从数据来源创建的目录的描述。

  5. 您可以使用在 Amazon EC2 上的 Amazon EMR 上运行的 Apache Spark 应用程序来访问 Amazon Glue Data Catalog 中的 Amazon Redshift 数据库。

    为了使 Apache Spark 能够读取和写入 Amazon Redshift 托管存储,Amazon Glue 创建一个托管式 Amazon Redshift 集群,该集群具有在不影响 Amazon Redshift 数据仓库工作负载的情况下执行读写操作所需的计算和存储资源。您还需要为 IAM 角色提供与 Amazon S3 存储桶进行数据传输所需的权限。有关数据传输角色所需的权限,请参阅 在 Amazon Glue Data Catalog 中管理 Amazon Redshift 命名空间的先决条件 小节中的步骤 5。

  6. 默认情况下,Amazon Redshift 集群中的数据使用 Amazon 托管式密钥进行加密。Lake Formation 提供了创建自定义 KMS 密钥进行加密的选项。如果您使用客户管理型密钥,您必须向密钥添加特定的密钥策略。

  7. 如果您使用客户管理型密钥对 Amazon Redshift 托管存储中的数据进行加密,请选择自定义加密设置。要使用自定义密钥,必须向 KMS 密钥添加额外的自定义托管式密钥策略。有关更多信息,请参阅在 Amazon Glue Data Catalog 中管理 Amazon Redshift 命名空间的先决条件

  8. 加密选项:如果要使用自定义密钥来加密目录,请选择自定义加密设置选项。要使用自定义密钥,必须向 KMS 密钥添加额外的自定义托管式密钥策略。

  9. 选择下一步向其他主体授予权限。

  10. 授予权限页面上,请选择添加权限

  11. 添加权限屏幕上,选择主体和要授予的权限类型。

    包含主体类型和授予选项的目录权限页面。
    • 主体部分中,选择主体类型,然后指定要授予权限的主体。

      • IAM 用户和角色:从 IAM 用户和角色列表中选择一个或多个用户或角色。

      • SAML 用户和组:对于 SAML 以及 Amazon Quick Suite 用户和组,请为通过 SAML 联合的用户或组输入一个或多个 Amazon 资源名称(ARN),或为 Amazon Quick Suite 用户或组输入 ARN。在每个 ARN 后按 Enter

        有关如何构造 ARN 的信息,请参阅 Amazon CLI 授予和撤销 Amazon CLI 命令。

    • 权限部分中,选择权限和可授予的权限。

      目录权限下,选择要授予的一项或多项权限。

      选择超级用户以授予对目录中所有资源的不受限管理权限。

      可授予的权限下,选择授权接收者可以向其 Amazon 账户中的其他主体授予的权限。当您从外部账户向 IAM 主体授予权限时,不支持此选项。

  12. 选择下一步检查信息并创建目录。目录列表会显示新的托管目录。

创建联合目录(CLI)
  • 以下示例演示了如何创建联合目录。

    aws glue create-catalog --cli-input-json file://input.json { "Name": "CatalogName", "CatalogInput": { "Description": "Redshift published Catalog", "CreateDatabaseDefaultPermissions" : [], "CreateTableDefaultPermissions": [], "CatalogProperties": { "DataLakeAccessProperties" : { "DataLakeAccess" : "true", "DataTransferRole" : "DTR arn", "KMSKey": "kms key arn", // Optional "CatalogType": "aws:redshift" } } } }

    Glue get-catalog 响应

    aws glue get-catalog \ --catalog-id account-id:catalog-name \ --region us-east-1 Response: { "Catalog": { "Name": "CatalogName", "Description": "Glue Catalog for Redshift z-etl use case", "CreateDatabaseDefaultPermissions" : [], "CreateTableDefaultPermissions": [], "CatalogProperties": { "DataLakeAccessProperties" : { "DataLakeAccess": "true", "DataTransferRole": "DTR arn", "KMSKey": "kms key arn", "ManagedWorkgroupName": "MWG name", "ManagedWorkgroupStatus": "MWG status", "RedshiftDatabaseName": "RS db name", "NamespaceArn": "namespace key arn", "CatalogType": "aws:redshift" } } }