生成列统计数据的先决条件 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

生成列统计数据的先决条件

要生成或更新列统计数据,统计数据生成任务将代表您代入一个 Amazon Identity and Access Management(IAM)角色。根据向该角色授予的权限,列统计数据生成任务可以读取 Amazon S3 数据存储中的数据。

注意

要为由 Lake Formation 管理的表生成统计数据,用于生成统计数据的 IAM 角色需要具有完全的表访问权限。

配置列统计数据生成任务时,Amazon Glue 允许您创建包含 AWSGlueServiceRole Amazon 托管式策略以及指定数据源所需内联策略的角色。您也可以创建一个角色并附加以下策略中列出的权限,然后将该角色添加到列统计数据生成任务。

创建 IAM 角色以生成列统计数据
  1. 要创建 IAM 角色,请参阅 为 Amazon Glue 创建 IAM 角色

  2. 要更新现有的角色,进入 IAM 控制台后,请转到生成列统计数据进程正在使用的 IAM 角色。

  3. 添加权限选项卡中,选择附加策略。在新打开的浏览器窗口中,选择 AWSGlueServiceRole Amazon 托管式策略。

  4. 您还需要包含从 Amazon S3 数据位置读取数据所需的权限。

    添加权限部分中,选择创建策略。在新打开的浏览器窗口中,创建将用于您的角色的新策略。

  5. 创建策略页面中,选择 JSON 选项卡。将以下 JSON 代码复制到策略编辑器字段中。

    注意

    请将以下策略中的 account ID 替换为有效的 Amazon Web Services 账户,将 region 替换为表所在的区域,并将 bucket-name 替换为 Amazon S3 存储桶的名称。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "S3BucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>/*", "arn:aws:s3:::<bucket-name>" ] } ] }
  6. (可选)如果您使用 Lake Formation 权限来提供对数据的访问权限,则该 IAM 角色需要具有 lakeformation:GetDataAccess 权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccess", "Effect": "Allow", "Action": "lakeformation:GetDataAccess", "Resource": [ "*" ] } ] }

    如果该 Amazon S3 数据位置已注册到 Lake Formation,并且列统计数据生成任务所代入的 IAM 角色不具有对表的 IAM_ALLOWED_PRINCIPALS 组权限,则该角色需要具有对该表的 Lake Formation ALTERDESCRIBE 权限。用于注册 Amazon S3 存储桶的角色需要具有对该表的 Lake Formation INSERTDELETE 权限。

    如果该 Amazon S3 数据位置尚未注册到 Lake Formation,并且该 IAM 角色不具有对表的 IAM_ALLOWED_PRINCIPALS 组权限,则该角色需要具有对该表的 Lake Formation ALTERDESCRIBEINSERTDELETE 权限。

  7. (可选)对于写入加密 Amazon CloudWatch Logs 的列统计数据生成任务,密钥政策中需要包含以下权限。

    { "Version": "2012-10-17", "Statement": [{ "Sid": "CWLogsKmsPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:AssociateKmsKey" ], "Resource": [ "arn:aws:logs:<region>:111122223333:log-group:/aws-glue:*" ] }, { "Sid": "KmsPermissions", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:Encrypt" ], "Resource": [ "arn:aws:kms:<region>:111122223333:key/"arn of key used for ETL cloudwatch encryption" ], "Condition": { "StringEquals": { "kms:ViaService": ["glue.<region>.amazonaws.com"] } } } ] }
  8. 用于运行列统计信息的角色必须拥有该角色的 iam:PassRole 权限。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/<columnstats-role-name>" ] }] }
  9. 在您创建 IAM 角色以生成列统计数据时,该角色还必须具有以下的信任策略,以确保服务能够代入该角色。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "TrustPolicy", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole", } ] }