本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
生成列统计数据的先决条件
要生成或更新列统计数据,统计数据生成任务将代表您代入一个 Amazon Identity and Access Management(IAM)角色。根据向该角色授予的权限,列统计数据生成任务可以读取 Amazon S3 数据存储中的数据。
注意
要为由 Lake Formation 管理的表生成统计数据,用于生成统计数据的 IAM 角色需要具有完全的表访问权限。
配置列统计数据生成任务时,Amazon Glue 允许您创建包含 AWSGlueServiceRole
Amazon 托管式策略以及指定数据源所需内联策略的角色。您也可以创建一个角色并附加以下策略中列出的权限,然后将该角色添加到列统计数据生成任务。
创建 IAM 角色以生成列统计数据
-
要创建 IAM 角色,请参阅 为 Amazon Glue 创建 IAM 角色。
-
要更新现有的角色,进入 IAM 控制台后,请转到生成列统计数据进程正在使用的 IAM 角色。
-
在添加权限选项卡中,选择附加策略。在新打开的浏览器窗口中,选择
AWSGlueServiceRole
Amazon 托管式策略。 -
您还需要包含从 Amazon S3 数据位置读取数据所需的权限。
在添加权限部分中,选择创建策略。在新打开的浏览器窗口中,创建将用于您的角色的新策略。
-
在创建策略页面中,选择 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>
" ] } ] } (可选)如果您使用 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 FormationALTER
和DESCRIBE
权限。用于注册 Amazon S3 存储桶的角色需要具有对该表的 Lake FormationINSERT
和DELETE
权限。如果该 Amazon S3 数据位置尚未注册到 Lake Formation,并且该 IAM 角色不具有对表的
IAM_ALLOWED_PRINCIPALS
组权限,则该角色需要具有对该表的 Lake FormationALTER
、DESCRIBE
、INSERT
和DELETE
权限。-
(可选)对于写入加密 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"] } } } ] } -
用于运行列统计信息的角色必须拥有该角色的
iam:PassRole
权限。{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::
111122223333
:role/<columnstats-role-name>
" ] }] } -
在您创建 IAM 角色以生成列统计数据时,该角色还必须具有以下的信任策略,以确保服务能够代入该角色。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "TrustPolicy", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole", } ] }