【トラブル】【AWS】AWS Glue のトラブル ~ job編 - [3] ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/10/25/232155
https://dk521123.hatenablog.com/entry/2020/10/12/152659

の続き。

新しくAWS Glue を作業していて、新たにトラブルシューティングを行ったのでメモ。
後、過去記事を分冊して整理した。

目次

【1】エラー「An error occured (404) when calling the HeadObject operation: Not Found」が表示
【2】エラー「404 The specified key does not exist.」が表示
【3】エラー「An error occurred (403) when calling the HeadObject operation: Forbidden」が表示```

【1】エラー「An error occured (404) when calling the HeadObject operation: Not Found」が表示

 GlueでWorkflowを実行したら、
Glue Job内で、エラー「Command failed with code 1」が表示されていた。
そのJobのログを見たところ、以下の「エラー内容」が表示されていた。

エラー内容

Traceback (most recent call last):
  File "/tmp/runscript.py", line 117, in <module>
    download_and_install(args.extra_py_files)
  ・・・略・・・
  File "/usr/local/lib/python3.6/site-packages/botocore/client.py", line 661, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (404) when calling the HeadObject operation: Not Found

原因

* エラーが発生しているGlue Jobにおいて、
 Python Libファイル(***.egg)を使用しているのだが
 そのファイルが対象パスになかったため。

解決案

* Python Libファイル(***.egg)を正しくデプロイ

【2】エラー「404 The specified key does not exist.」が表示

AWS 管理コンソールのGlueページにおいて、
Jobのチェックボックスにチェックを入れたら、
JSONフォーマットで、以下の「エラー内容」が表示された

エラー内容

{"service":"Amazon S3","statusCode":"404","errorCode","NoSuchKey",
"requestId","xxxxx","errorMessage":"The specified key does not exist.",
"type":"AwsServiceError"}

原因

* Jobが指定されているパスに、ファイルがないため

解決案

* パスを変更 or 指定パスにソースファイルを置く

【3】エラー「An error occurred (403) when calling the HeadObject operation: Forbidden」が表示

* Glue Job を実行した際に以下「エラー内容」が発生する
* なお、Job のログが全く表示されず

エラー内容

Traceback (most recent call last):
...
   temp_file_path = download_user_script(args.scriptLocation)  
...
botocore.exceptions.ClientError:
An error occurred (403) when calling the HeadObject operation: Forbidden

原因

* S3 のアクセス制御により、S3 パスに制限があった。
 => S3 のアクセス制御に関する詳細は、以下の関連記事を参照のこと。

発生例

* Glue Jobやその周辺のライブラリが「s3://your-s3-bucket/x1/」内に格納されていた場合
 以下の「アクセス制御例」の「s3://your-s3-bucket/x2/*」にしていると
 モジュールがダウンロードされずにエラーになるっぽい

https://dk521123.hatenablog.com/entry/2020/09/29/165636
アクセス制御例

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
     "arn:aws:s3:::your-s3-bucket",
         "arn:aws:s3:::your-s3-bucket/x2/*"
      ]
    }
  ]
}

解決案

* 原因を元に以下のいずれかで解決する。

 a) ロールの変更
 b) ロールがしている場所にソースを移す
 etc...

関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
boto3 AWS Glue API のトラブル ~ trigger全般 編 ~
https://dk521123.hatenablog.com/entry/2020/10/23/110821
boto3 AWS Glue API のトラブル ~ scheduled trigger編 ~
https://dk521123.hatenablog.com/entry/2020/01/16/205331
boto3 AWS Glue API のトラブル ~ job/crawler編 ~
https://dk521123.hatenablog.com/entry/2020/02/05/223307
AWS Glue のトラブル ~ job編 - [1] ~
https://dk521123.hatenablog.com/entry/2019/10/25/232155
AWS Glue のトラブル ~ job編 - [2] ~
https://dk521123.hatenablog.com/entry/2020/10/12/152659
AWS Glue のトラブル ~ job編 - [4] ~
https://dk521123.hatenablog.com/entry/2021/05/10/143328
AWS Glue のトラブル ~ crawler編 ~
https://dk521123.hatenablog.com/entry/2020/05/07/144132
AWS Glue ~ Boto3 / 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/14/000000