AWS Glue の抽出、変換、ロード (ETL) ジョブが成功、失敗、タイムアウト、または停止したときに通知を受け取りたいと考えています。
簡単な説明
AWS Glue ジョブの状態が変更されたときに通知を受け取るには、次の手順を実行します。
- Amazon Simple Notification Service (Amazon SNS) トピックを作成します。SNS トピックは、サブスクライブしているエンドポイントまたはクライアントにメッセージを送信します。
- 監視する AWS Glue ジョブの状態の変化ごとに Amazon EventBridge イベントルールを作成します。
解決策
**注:**ジョブの状態が変更されると、AWS Glue はイベントを生成します。詳細については、「AWS Glue ジョブの実行ステータス」を参照してください。
Amazon SNS トピックを作成してサブスクライブする
1. Amazon SNS コンソールを開きます。
2. ナビゲーションペインで、[トピック] を選択します。
3. [トピックの作成] を選択します。
4. [タイプ] では [標準] を選択します。
5. [トピック名] を入力します。[表示名] フィールドはオプションです。
6. [トピックの作成] を選択します。
7. ナビゲーションペインで、[サブスクリプション] を選択します。
8. [サブスクリプションの作成] を選択します。
9. [詳細] で、以下のフィールドに入力します。
[トピック ARN] では、作成したトピックの ARN を選択します。
[プロトコル] には、[E メール] を選択します。
[エンドポイント] には、通知の送信先となるメールアドレスを入力します。
10. [サブスクリプションの作成] を選択します。
サブスクリプション確認メールを受信したら、[サブスクリプションを確認] を選択します。作成した SNS トピックを書き留めておきます。EventBridge ルールを作成するときは、このトピックを使用してください。
EventBridge イベントルールを作成する
1. EventBridge コンソールを開きます。
2. ナビゲーションペインで、[ルール]、[ルールの作成] の順に選択します。
3. ルールの名前を入力します。イベントバスとルールタイプはデフォルトの設定のままにして、[次へ] を選択します。
4. [作成方法] では、[カスタムパターン (JSON エディタ)] を選択します。
5. [イベントパターン] ボックスに、AWS Glue の状態変更イベントをキャプチャするために以下のイベントパターンの例を入力します。
{
"detail-type": [
"Glue Job State Change",
"Glue Job Run Status"
],
"source": [
"aws.glue"
],
"detail": {
"state": [
"FAILED",
"SUCCEEDED",
"TIMEOUT",
"STOPPED",
"RUNNING",
"STARTING",
"STOPPING"
]
}
}
**ヒント:**特定の状態変更の通知を受け取りたくない場合は、対応するパラメーター (RUNNINGなど) をイベントパターンから削除します。
6. [次へ] を選択します。
7. [ターゲットタイプ] には、[AWS サービス] を選択します。
8. [ターゲットを選択] から [SNS トピック] を選択します。
9. [トピック] には、作成した SNS トピックの名前を選択します。
10. [次へ] を選択します。
11. (オプション) ルールのタグを入力し、[次へ] を選択します。
12. [ルールの作成] を選択します。
詳細については、「イベントパターンの作成」と「Amazon CloudWatch イベントによる AWS Glue の自動化」を参照してください。
設定をテストする
イベントルールと SNS トピックをテストするには、AWS Glue ジョブを実行します。ジョブがイベントルールで指定した状態に変わったときに、E メール通知が届くことを確認します。
**重要:**ルールが実行されていない場合は、イベントパターンが正しいことを確認してください。
例
失敗したジョブ実行イベントをキャプチャし、SNS トピックにイベントを送信できます。以下は、失敗した Glue ジョブのイベントの例です。
{
"version": "0",
"id": "abcdef01-1234-5678-9abc-def012345678",
"detail-type": "Glue Job State Change",
"source": "aws.glue",
"account": "123456789012",
"time": "2017-09-07T06:02:03Z",
"region": "us-west-2",
"resources": [],
"detail": {
"jobName": "MyJob",
"severity": "ERROR",
"state": "FAILED",
"jobRunId": "jr_0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"message": "JobName:MyJob and JobRunId:jr_0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef failed to run with exception Role arn:aws:iam::123456789012:role/Glue_Role should be given assume role permissions for Glue Service."
}
}
AWS Glue の失敗したジョブをすべて解析するには、前述の手順を完了します。
関連情報
AWS Glue ジョブが再試行に失敗したときに、AWS Lambda 関数を使用して SNS アラートを受信するにはどうすればよいですか?
クローラーの実行が完了したときに AWS Glue ジョブを自動的に開始するにはどうしたらよいですか?
AWS サービスからのイベント