■ はじめに
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
Glue Jobを起動した際にエラー「LANCH ERROR | java.net.URISyntaxException」が発生
https://dk521123.hatenablog.com/entry/2022/11/18/163207
AWS Glue ~ Boto3 / 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/14/000000