尽管我配置了所需的权限,但我的 AWS Glue 任务因缺乏 AWS Identity and Access Management (IAM) 权限错误而失败。
解决方法
在 AWS Glue 中,您的操作可能会因缺少权限错误而失败,原因如下:
- 您正在使用的 IAM 用户或角色没有所需的权限。
- IAM 用户是 AWS Organizations 中某个组织的一部分,该组织具有限制特定操作的服务控制策略(SCP)
- 使用的子网具有虚拟私有云(VPC)端点,其策略允许或拒绝某些操作。
正在使用的 IAM 用户或角色没有所需的权限
参阅以下缺少权限错误的示例:
"Failed to create job gluestudio-service.us-east-1.amazonaws.com] with exception "errorMessage":"User: arn:aws:sts::<AccountID>:assumed-role/<ConsoleAssumedRole>/<user> is not authorized to perform: iam:PassRole on resource: arn:aws:iam::<AccountID>:role/<GlueRoleName>"
可以将这个错误分解为三个因素:
- 调用操作的用户/IAM 角色 - arn:aws:iam::111111111111111:role/service-role/AWSGlue-xxxxxx
- 操作 - iam:PassRole
- 正在执行操作的资源 - arn:aws:iam::xxxxxxxxxxxxxxxx:role/AWSGlue
检查正在使用的用户或 IAM 角色是否对资源执行了所需的操作。
1. 打开 IAM 控制台。
2. 搜索您正在使用的用户或 IAM 角色,然后查看与其关联的策略。在前面的示例中,角色是 arn: aws: iam:: xxxxxxxxx: user/yyyyyyyyy。
3. 添加类似于以下内容的内联策略,允许对资源执行所需的操作:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FirstStatement",
"Effect": "Allow",
"Action": ["Action"],
"Resource": "<ARN of resource>"
}
]
}
注:用您先前从错误消息中确定的特定活动和资源替换此示例中的 Action(操作)和 ARN of resource(资源的 ARN)。
使用前面的示例,您的策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PassRolePermissions",
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::<AccountID>:role/<GlueRoleName>"
],
"Condition": {
"StringLike": {
"iam:PassedToService": [
"glue.amazonaws.com"
]
}
}
}
]
}
组织的 SCP 正在阻止对资源进行操作
您可能会收到类似于以下内容的错误:
"createJob: AccessDeniedException: User: arn:aws:sts::111111111111111:assumed-role/xxxxxxxxxx is not authorized to perform: glue:CreateJob on resource: arn:aws:glue:region:22222222222222:job/glue-job with an explicit deny in a service control policy"
之所以引发此错误,是因为您的 IAM 用户是已建立 SCP 的组织的成员。SCP 阻止您执行特定操作。要检查与您的 SCP 关联的权限,请按照以下步骤操作:
1. 打开 IAM 控制台。
2. 选择 Organization Activity(组织活动),然后选择 Attached SCP(附加 SCP)选项卡。
3. 查看附加到您的 IAM 用户的 SCP。确保您拥有对正在使用的资源完成所需操作所需的权限。
使用的子网有一个 VPC 端点,其策略允许或拒绝某些操作
您可能会收到类似于以下内容的错误:
"User: arn:aws:sts::1111111111:assumed-role/xxxxxxxxx/yyyyyyyyyyy is not authorized to perform: glue:CreateJob because no VPC endpoint policy allows the glue:CreateJob action (Service: Glue, Status Code: 400, Request ID:111111111111111)"
要解决此问题,请执行以下步骤:
1. 打开 Amazon Virtual Private Cloud (Amazon VPC) 控制台。
2. 选择端点,然后选择连接到您用来完成操作的子网的 VPC 端点。
3. 在 Actions(操作)下方,选择 Manage Policy(管理策略)。
4. 使用对所需资源的所需操作更新 VPC 端点策略。
在此示例中,您更新了添加操作 glue:CreateJob 所需的 VPC 端点策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": "*",
"Effect": "Allow",
"Action": [
"glue:CreateJob"
],
"Resource": "*"
}
]
}
相关信息
为 AWS Glue 创建 IAM 角色