将 Data Catalog 连接到外部数据来源的先决条件 - AWS Lake Formation

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

将 Data Catalog 连接到外部数据来源的先决条件

要将 AWS Glue Data Catalog 连接到外部数据源、向 Lake Formation 注册连接并设置联合目录,您需要完成以下要求:

注意

我们建议 Lake Formation 数据湖管理员创建 AWS Glue 连接以连接到外部数据源,并创建联合目录。

  1. 创建 IAM 角色。
    • 创建具有部署创建外部数据源连接所需的资源(Lambda 函数、Amazon S3 泄漏存储桶、IAM 角色和 AWS Glue 连接)的必要权限的角色。

    • 创建一个具有访问 AWS Glue 连接属性(Lambda 函数和 Amazon S3 泄漏存储桶)所需的最低权限的角色。当您向 Lake Formation 注册连接时,将加入这个角色。

      要使用 Lake Formation 管理和保护数据湖中的数据,必须向 Lake Formati AWS Glue on 注册连接。这样,Lake Formation 就可以向 Amazon Athena 提供凭证来查询联合数据来源。

      该角色必须拥有对 Amazon S3 存储桶和 Lambda 函数的 SelectDescribe 权限。

      • s3:ListBucket

      • s3:GetObject

      • lambda: InvokeFunction

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/object/*", "arn:aws:s3:::amzn-s3-demo-bucket1/object" ] }, { "Sid": "lambdainvoke", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:example-lambda-function" }, { "Sid": "gluepolicy", "Effect": "Allow", "Action": "glue:*", "Resource": "*" } ] }
    • 将以下信任策略添加到在注册连接时使用的 IAM 角色:

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lakeformation.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    • 注册连接的数据湖管理员必须具有对该角色的 iam:PassRole 权限。

      以下是授予此权限的内联策略。<account-id>替换为有效的 AWS 账号,然后<role-name>替换为角色的名称。

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "PassRolePermissions", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/example-role-name>" ] } ] }
    • 要在 Data Catalog 中创建联合目录,请检查数据湖设置(aws lakeformation get-data-lake-settings),确保您使用的 IAM 角色是 Lake Formation 数据湖管理员。

      如果您不是数据湖管理员,则需要拥有 Lake Formation CREATE_CATALOG 权限才能创建目录。以下示例说明如何授予创建目录所需的权限。

      aws lakeformation grant-permissions \ --cli-input-json \ '{ "Principal": { "DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/non-admin" }, "Resource": { "Catalog": { } }, "Permissions": [ "CREATE_CATALOG", "DESCRIBE" ] }'
  2. 如果您使用客户管理的密 AWS KMS 钥对数据源中的数据进行加密,请在密钥中添加以下密钥策略。将账号替换为有效的 AWS 账号,并指定角色名称。默认情况下,数据将使用 KMS 密钥进行加密。Lake Formation 提供了创建自定义 KMS 密钥进行加密的选项。如果您使用客户管理型密钥,您必须向密钥添加特定的密钥策略。

    有关管理客户管理型密钥权限的更多信息,请参阅客户管理型密钥

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-1" } ] }