必要なアクセス許可を設定しているのに、AWS Identity and Access Management (IAM) アクセス許可がないというエラーが表示され、AWS Glue ジョブが失敗します。
解決方法
AWS Glue では、次の理由によりアクションがアクセス許可不足エラーで失敗することがあります。
- 使用している IAM ユーザーまたはロールには、必要なアクセス許可がない。
- IAM ユーザーは、特定のアクションを制限するサービスコントロールポリシー (SCP) を制定している AWS Organizations の組織の一員です
- 使用するサブネットには、一部のアクションを許可または拒否するポリシーを持つ仮想プライベートクラウド (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>」
このエラーは次の 3 つの要因に分類できます。
- アクションを呼び出すユーザー/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/yyyyyyyyyyy です。
3. リソースで必要なアクションを許可する次のようなインラインポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FirstStatement",
"Effect": "Allow",
"Action": ["Action"],
"Resource": "<ARN of resource>"
}
]
}
注: この例の Action と 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. [Endpoints] (エンドポイント) を選択し、使用しているサブネットにアタッチされている 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 ロールを作成する