在 Lake Formation 中使用服务相关角色
AWS Lake Formation 使用 AWS Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种独特类型的 IAM 角色,它与 Lake Formation 直接相关。服务相关角色是由 Lake Formation 预定义的,包含该服务代表您调用其他 AWS 服务所需的所有权限。
服务相关角色可让您更轻松地设置 Lake Formation,因为您不必创建角色并手动添加必要的权限。Lake Formation 定义其服务相关角色的权限,除非另有定义,否则只有 Lake Formation 可以代入该角色。定义的权限包括信任策略和权限策略,以及不能附加到任何其他 IAM 实体的权限策略。
此服务相关角色仅信任以下服务来代入该角色:
-
lakeformation.amazonaws.com
当您使用账户 A 中的服务相关角色注册账户 B 所拥有的 Amazon S3 位置时,账户 B 中的 Amazon S3 存储桶策略(基于资源的策略)必须向账户 A 中的服务相关角色授予访问权限。
注意
服务控制策略(SCP)不影响服务相关角色。
有关更多信息,请参阅《AWS Organizations 用户指南》中的服务控制策略(SCP)。
Lake Formation 的服务相关角色权限
Lake Formation 使用名为 AWSServiceRoleForLakeFormationDataAccess
的服务相关角色。此角色提供了一组 Amazon Simple Storage Service (Amazon S3) 权限,使 Lake Formation 集成服务(如 Amazon Athena)能够访问注册位置。注册数据湖位置时,您必须提供对该位置具有所需 Amazon S3 读/写权限的角色。您可以使用此服务相关角色,而不是创建具有所需 Amazon S3 权限的角色。
首次将服务相关角色命名为用于注册路径的角色时,将代表您创建服务相关角色和新的 IAM 策略。Lake Formation 将路径添加到内联策略,并将其附加到服务相关角色。当您向服务相关角色注册后续路径时,Lake Formation 会将该路径添加到现有策略中。
以数据湖管理员身份登录后,注册数据湖位置。然后,在 IAM 控制台中,搜索角色 AWSServiceRoleForLakeFormationDataAccess
并查看其附加的策略。
例如,在您注册位置 s3://my-kinesis-test/logs
后,Lake Formation 会创建以下内联策略并将其附加到 AWSServiceRoleForLakeFormationDataAccess
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccessPermissionsForS3", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::
my-kinesis-test/logs/*
" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3ListBucket", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::my-kinesis-test
" ] } ] }
为 Lake Formation 创建服务相关角色
您无需手动创建服务相关角色。当您通过AWS Management Console、AWS CLI 或 AWS API 向 Lake Formation 注册 Amazon S3 位置时,Lake Formation 会为您创建服务相关角色。
重要
如果您在其他使用此角色支持的功能的服务中完成某个操作,此服务相关角色可以出现在您的账户中。要了解更多信息,请参阅我的 IAM 账户中的新角色。
如果您删除该服务相关角色,然后需要再次创建,您可以使用相同流程在账户中重新创建此角色。当您向 Lake Formation 注册 Amazon S3 位置时,Lake Formation 会再次为您创建服务相关角色。
您也可以使用 IAM 控制台为 Lake Formation 使用案例创建服务相关角色。在 AWS CLI 或 AWS API 中,使用 lakeformation.amazonaws.com
服务名称创建服务相关角色。有关更多信息,请参阅《IAM 用户指南》中的创建服务相关角色。如果您删除了此服务相关角色,可以使用同样的过程再次创建角色。
编辑 Lake Formation 的服务相关角色
Lake Formation 不允许您编辑 AWSServiceRoleForLakeFormationDataAccess
服务相关角色。创建服务相关角色后,您将无法更改角色的名称,因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息,请参阅《IAM 用户指南》中的编辑服务相关角色。
删除 Lake Formation 的服务相关角色
如果不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是,必须先清除服务相关角色的资源,然后才能手动删除它。
注意
如果在您试图删除资源时 Lake Formation 服务正在使用该角色,则删除操作可能会失败。如果发生这种情况,请等待几分钟后重试。
删除 Lake Formation 使用的 Lake Formation 资源
-
如果您使用服务相关角色向 Lake Formation 注册了 Amazon S3 位置,则在删除服务相关角色之前,需要注销该位置,然后使用自定义角色重新注册。
使用 IAM 手动删除服务相关角色
使用 IAM 控制台,即 AWS CLI 或 AWS API 来删除 AWSServiceRoleForLakeFormationDataAccess
服务相关角色。有关更多信息,请参见 IAM 用户指南中的删除服务相关角色。