- 新しい順
- 投票が多い順
- コメントが多い順
AWS CLIなどからStepFunctionsで指定しているパラメータを使用してStartJobRunを実行することは可能ですか?
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/glue/start-job-run.html
AWS CLIだと以下のような形になります。
「--arguments」オプションは実際のオブジェクトキーなどを入れてみてください。
aws glue start-job-run --job-name "〇〇" --arguments { ... }
また、StepFunctionsの定義で指定しているArgumentsの値を実際の値に変更して動くかなども見ていただくとよいかもしれません。
"Arguments": {
"--object_key.$": "$.detail.object.key"
}
このエラーは、AWS Step FunctionsがAWS Glueジョブを起動しようとしたが、指定されたジョブが見つからなかったことを示しています。以下の点を確認してみてください:
-
ジョブ名の正確性: ステートマシンのJSONで指定しているジョブ名("JobName": "〇〇")が、実際のAWS Glueジョブの名前と完全に一致していることを確認してください。大文字小文字や空白も含めて正確に一致する必要があります。
-
IAM権限: Step Functionsの実行ロールに、AWS Glueジョブを起動するための十分な権限があることを確認してください。"glue:StartJobRun"だけでなく、"glue:GetJob"の権限も必要かもしれません。以下のようなポリシーを試してみてください:
{ "Effect": "Allow", "Action": [ "glue:StartJobRun", "glue:GetJob", "glue:GetJobRun", "glue:BatchStopJobRun" ], "Resource": "*" }
-
VPCエンドポイント: AWS GlueのVPCエンドポイントも作成されていることを確認してください。Step Functionsのエンドポイントだけでなく、Glue用のエンドポイントも必要です。
-
リージョンの一致: Step FunctionsとAWS Glueジョブが同じAWSリージョンにあることを確認してください。
-
Glueジョブの状態: AWS Glueコンソールで、ジョブが正しく設定され、有効になっていることを確認してください。
-
ログの確認: AWS Glueのログを確認し、ジョブ起動時に他のエラーが発生していないか確認してください。
これらの点を確認しても問題が解決しない場合は、AWS サポートに連絡して詳細な調査を依頼することをお勧めします。
Sources
Start an AWS Glue job with Step Functions - AWS Step Functions
Troubleshooting errors Spark errors - AWS Glue
Gaming Analytics: Leveraging AWS Glue and Amazon Redshift Spectrum for Player Insights | AWS for Games Blog
1.ジョブ名はコピペしており間違いがないです。 2.IAMに権限を追加してみましたが、エラーになります。 3.記載し忘れていましたが、Glueエンドポイントも追加してあります。 4.リージョンは同一です 5.ジョブ自体はコンソール上だと実行できるので問題ないかと思います 6.ログが出ていないです。その前のstepfunctionで躓いているので。
関連するコンテンツ
- AWS公式更新しました 3ヶ月前
- AWS公式更新しました 8ヶ月前
CLIも試しました。しかし、同様に(EntityNotFoundException)が出てしまいます。 試したコードは以下です。今回gluejobを修正してobjectkeyのパラメータを無くしてjobnameだけにしてみましたが、依然としてエラーになります。
またstepfunctionsでも同様に、objectkeyパラメータなしに修正してから実行してみましたが、同様のエラーです。
ちなみにですが、connectionを使っていないGluejobをステートマシンで指定してみると、正常に実行されました。
マネジメントコンソールから実行する際は問題無いということなので、CloudTrailのイベント履歴をご確認いただいてマネジメントコンソールから実行したstart-job-runとStepFunctionsで実行したstart-job-runの内容を比較してみてください。 StepFunctionsで実行したときとの差分を確認して何か違いがあればその部分をStepFunctionsの実行に含めるようにしてみてください。
cloudtrailを見てみると、glueコンソールの実行ではジョブ名の最後にスペースが入っていることに気付き、sfnの方でスペースを入れてジョブ名を指定したところ無事実行できました。しかし、glueコンソールの画面上でジョブ名をcopyするときにはスペースの部分が認識されていなかったので、cloudtrailでのデバッグ方法を知らなかった私は、小林さんのご助言がなければ解決できていないところでした。この度は本当にありがとうございました。