翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Glue ストリーミングのメンテナンスウィンドウ
AWS Glue は定期的にメンテナンスアクティビティを実行します。これらのメンテナンスウィンドウ中に、 AWS Glue はストリーミングジョブを再起動する必要があります。メンテナンスウィンドウを指定することで、ジョブを再起動するタイミングを制御できます。このセクションでは、メンテナンスウィンドウをセットアップできる場所と、考慮すべき特定の動作の概要を説明します。
メンテナンスウィンドウの設定
AWS Glue Studio または APIsを使用してメンテナンスウィンドウを設定できます。
AWS Glue Studio でのメンテナンスウィンドウの設定
AWS Glue ストリーミングジョブのジョブ詳細ページでメンテナンスウィンドウを指定できます。GMT で日時を指定できます。 AWS Glue は指定された時間枠内にジョブを再起動します。
![AWS Glue Studio でのメンテナンスウィンドウの指定](images/streaming-maintenance-windows-1.png)
API でのメンテナンスウィンドウの設定
代わりに、ジョブの作成 API でメンテナンスウィンドウを設定できます。API を使用してメンテナンスウィンドウを設定する例を次に示します。
aws glue create-job —name jobName —role roleArnForTheJob —command Name=gluestreaming,ScriptLocation=s3-path-to-the-script --maintenance-window="Sun:10"
コマンドの例は次のとおりです。
aws glue create-job —name testMaintenance —role arn:aws:iam::012345678901:role/Glue_DefaultRole —command Name=gluestreaming,ScriptLocation=s3://glue-example-test/example.py —maintenance-window="Sun:10
メンテナンスウィンドウの動作
AWS Glue は、ジョブを再起動するタイミングを決定するために、一連のステップを実行します。
新しいストリーミングジョブが開始されると、 AWS Glue まずジョブ実行に関連付けられたタイムアウトがあるかどうかをチェックします。タイムアウトを使用すると、ジョブの終了時刻を設定できます。タイムアウトが 7 日未満の場合、ジョブは再起動されません。
タイムアウトが 7 日を超える場合、 はメンテナンスウィンドウがジョブに設定されている AWS Glue かどうかを確認します。そのウィンドウが取得され、そのウィンドウがジョブ実行に割り当てられると、 は指定されたメンテナンスウィンドウから 3 時間以内にジョブ AWS Glue を再開します。例えば、月曜日の GMT 午前 10 時にメンテナンスウィンドウを設定すると、ジョブは GMT 午前 10 時から GMT 午後 1 時までの間に再開されます。
メンテナンスウィンドウが設定されていない場合、 は再起動時間をジョブ実行開始時刻の 7 日前 AWS Glue に自動的に設定します。例えば、ジョブを 7/1/2024 午前 12 時に開始し、メンテナンスウィンドウを指定しなかった場合、ジョブは 7/8/2024 午前 12 時に再起動するように設定されます。
注記
既にストリーミングジョブを実行している場合、この変更は 2024 年 7 月 1 日以降に影響します。6 月 30 日までメンテナンスウィンドウを設定する時間があります。7 月 1 日以降、開始したストリーミングジョブは、このドキュメントに従って再起動されます。追加のサポートが必要な場合は、 AWS サポートにお問い合わせください。
特に進行中のマイクロバッチが処理されない場合、ジョブを再起動できない AWS Glue ことがあります。このような場合、ジョブは中断されません。これらのインスタンス AWS Glue では、 は 14 日後にジョブを再起動します。この場合、メンテナンスウィンドウは適用されません。
ジョブのモニタリング
AWS Glue Studio Monitoring ページでジョブをモニタリングできます。
ストリーミングジョブの次回の再起動予定時刻を確認するには、モニタリングページの ジョブ実行 テーブルに 列を表示します。
テーブルの右上にある歯車アイコンをクリックします。
下にスクロールして、予想される再起動時間列をオンにします。UTC およびローカル時間オプションの両方を使用できます。
その後、テーブルの列を表示できます。
元のジョブのステータスは「EXPIRED」になり、新しいジョブインスタンスのステータスは「RUNNING」になります。再起動された新しいジョブ実行には、最初のジョブ実行 ID の連結としてジョブ実行 ID と、再起動数を表すプレフィックス「restart_」が付けられます。例えば、最初のジョブ実行 ID が の場合jr_1234
、再起動されたジョブ実行には最初の再起動jr1234_restart_1
の ID が含まれます。2 回目の再起動は 2 jr1234_restart_2
回目の再起動と同じです。
再試行は、再起動による影響を受けません。自動再試行により実行が失敗し、新しい実行が開始された場合、再起動のカウンターは 1 から再び開始されます。例えば、 で実行が失敗した場合jr_1234_attempt_3_restart_5
、自動再試行は ID で新しい実行を開始します。この試行が 7 日後に再開jr_id1_attempt_4
されると、新しい実行 ID は になりますjr_id1_attempt_4_restart_1
。
データ損失処理
メンテナンスの再起動中、 AWS Glue ストリーミングは、前のジョブ実行と再起動されたジョブ実行の間のデータの整合性と一貫性を確保するプロセスに従います。 AWS Glue は、ジョブの再起動間のデータの整合性と一貫性を保証するものではないことに注意してください。ストリーミングジョブ内で重複するデータを処理するために、アーキテクチャ上の考慮事項をお勧めします。
メンテナンスの再起動条件の検出: AWS Glue Streaming は、7 日後にメンテナンスウィンドウに達した場合や、14 日後にハード再起動が必要な場合など、メンテナンスの再起動をトリガーする必要があるタイミングを示す条件をモニタリングします。
正常な終了の呼び出し: メンテナンスの再起動条件が満たされると、 AWS Glue Streaming は現在実行中のジョブに対して正常な終了プロセスを開始します。このプロセスには次のステップが含まれます。
新しいデータの取り込みの停止: ストリーミングジョブは、入力ソース (Kafka トピック、Kinesis ストリーム、ファイルなど) からの新しいデータの消費を停止します。
保留中のデータの処理: ジョブは、内部バッファまたはキューに既に存在するデータを引き続き処理します。
オフセットとチェックポイントのコミット: ジョブは、最新のオフセットまたはチェックポイントを外部システム (Kafka、Kinesis、Amazon S3 など) にコミットして、再起動されたジョブが前のジョブが中断した場所から確実に取得できるようにします。
ジョブの再起動: 正常な終了プロセスが完了すると、 AWS Glue Streaming は保持された状態とチェックポイントを使用してジョブを再起動します。再起動されたジョブは、最後にコミットされたオフセットまたはチェックポイントから処理を取得し、データが失われたり重複したりしないようにします。
データ処理の再開: 再開されたジョブは、前のジョブが中断した時点からデータ処理を再開します。最後にコミットされたオフセットまたはチェックポイントから入力ソースからの新しいデータの取り込みを継続し、定義された ETL ロジックに従ってデータを処理します。