277-AWS SAP AWS 「理論・実践・一問道場」AWS Step Functions

 

理論

AWS Step Functionsとエラーハンドリング

AWS Step Functionsは、複数のAWSサービスを統合し、ワークフローを構築するためのサービスです。これを使って、順次実行される複数のタスク(例:AWS Lambda関数)を管理できます。しかし、実行中にエラーが発生することがあり、これに対処するために効果的なエラーハンドリングの設計が重要です。

エラーハンドリングの重要性

  1. 再試行(Retry): Step Functionsでは、タスクが失敗した場合に再試行を行う設定が可能です。再試行回数や間隔を調整することで、ネットワークの問題や一時的なサービス障害に対応できます。
  1. キャッチ(Catch): タスクが失敗した際に、どのように処理を続けるかを指定するためのフィールドです。Catchを使用することで、エラーが発生した場合に特定のタスク(例:通知の送信)に遷移させることができます。これにより、エラーが発生した際に必要なアクション(通知やリトライ)を自動化できます。
  1. SNSによる通知: 失敗時に通知を送るために、AWS SNS(Simple Notification Service)を利用することが一般的です。SNSトピックを作成し、エラーが発生した場合にそのトピックにメッセージを送ることができます。これにより、管理者やチームメンバーが即座に失敗を認識でき、迅速に対応が可能になります。

ベストプラクティス

  1. エラーハンドリングを統一する: すべてのタスクで一貫したエラーハンドリングを設定することが重要です。失敗した場合に通知が送信されるように、CatchRetryフィールドを設定します。
  1. 通知を活用する: エラーが発生した場合、SNSを使って通知を送信し、管理者や関係者に即座に知らせるようにします。これにより、再訓練やワークフローが失敗したことに気づくのが遅れることを防げます。
  1. エラータイプを適切に設定する: ErrorEqualsフィールドに指定するエラータイプ(例えば、States.ALL)を適切に設定して、すべてのエラーに対して対応できるようにします。States.Runtimeはランタイムエラーに特化しているため、すべてのエラーを対象にする場合はStates.ALLを使用する方が汎用的です。

結論

AWS Step Functionsを使用する際には、エラー発生時に適切に対応できるように設計することが重要です。失敗通知をSNSで送るように設定し、ワークフローの停止を未然に防ぐためのエラーハンドリング(Catch)や再試行(Retry)を適切に活用することで、システムの健全性を保つことができます。

実践

一問道場

質問 #277
トピック 1
ある会社が、AWS Step Functionsを使用して機械学習モデルの夜間再訓練を自動化しています。このワークフローは、複数のAWS Lambdaステップで構成されています。各ステップはさまざまな理由で失敗する可能性があり、いずれの失敗も全体のワークフローの失敗を引き起こします。
レビューの結果、再訓練が何晩も連続して失敗していたことが判明しましたが、会社はその失敗に気づいていませんでした。ソリューションアーキテクトは、再訓練プロセス内でのすべてのタイプの失敗に対して通知が送信されるようにワークフローを改善する必要があります。
この要件を満たすためにソリューションアーキテクトが取るべき手順の組み合わせはどれですか?(3つ選んでください。)
A. Amazon Simple Notification Service (Amazon SNS) トピックを作成し、チームのメールリストをターゲットにした「Email」タイプのサブスクリプションを作成する。
B. 「Email」という名前のタスクを作成し、入力引数をSNSトピックに転送する。
C. 「ErrorEquals":["States.ALL"]」および「Next":"Email"というステートメントを持つ、すべてのTask、Map、およびParallelステートにCatchフィールドを追加する。
D. Amazon Simple Email Service (Amazon SES) に新しいメールアドレスを追加し、そのメールアドレスを確認する。
E. 「Email」という名前のタスクを作成し、入力引数をSESメールアドレスに転送する。
F. 「ErrorEquals":["States.Runtime"]」および「Next":"Email"というステートメントを持つ、すべてのTask、Map、およびParallelステートにCatchフィールドを追加する。

解説

この問題では、AWS Step Functionsを使用して機械学習モデルの夜間再訓練を自動化しているワークフローに対して、失敗通知を送信する方法を考える必要があります。ソリューションアーキテクトは、再訓練プロセス内で発生する可能性のあるすべての失敗に対して通知を送信する必要があります。

各選択肢の解説:

A. Amazon SNSトピックを作成し、チームのメールリストをターゲットにした「Email」タイプのサブスクリプションを作成する。

  • 正解: Amazon SNSを使って通知を送信する方法は、AWS Step Functionsで失敗した場合に通知を送るための標準的な手段です。SNSトピックを作成し、それに「Email」サブスクリプションを設定することで、ワークフロー内でエラーが発生した際に、メールで通知を受け取ることができます。

B. 「Email」という名前のタスクを作成し、入力引数をSNSトピックに転送する。

  • 正解: 「Email」という名前のタスクを作成して、失敗時に入力引数(エラー内容やステータス)をSNSトピックに転送することで、エラーの詳細を通知できます。このタスクは、エラーが発生した際に実行され、SNSトピックにメッセージを送信します。

C. 「ErrorEquals":["States.ALL"]」および「Next":"Email"というステートメントを持つ、すべてのTask、Map、およびParallelステートにCatchフィールドを追加する。

  • 正解: Catchフィールドは、AWS Step Functionsのステートが失敗した場合に、どのステートに遷移するかを指定するために使用されます。「ErrorEquals":["States.ALL"]」はすべてのエラーにマッチするため、エラーが発生した際に「Email」タスクに遷移するように設定することができます。この設定により、すべてのエラーに対して通知が送信されます。

D. Amazon SESに新しいメールアドレスを追加し、そのメールアドレスを確認する。

  • 誤り: Amazon SES(Simple Email Service)はメールの送信に使われますが、SNSによる通知の送信には使用しません。SNSで通知を送信するには、SESではなくSNSの設定が必要です。SESは送信メールの設定に関するもので、通知のためには関係ありません。

E. 「Email」という名前のタスクを作成し、入力引数をSESメールアドレスに転送する。

  • 誤り: SESを直接使用して通知を送るのは適切ではありません。AWS Step Functionsでは、SNSを使用して通知を送る方が一般的です。SESは通知を送信するための適切な選択肢ではありません。

F. 「ErrorEquals":["States.Runtime"]」および「Next":"Email"というステートメントを持つ、すべてのTask、Map、およびParallelステートにCatchフィールドを追加する。

  • 誤り: 「States.Runtime」エラーはランタイムエラーに特化していますが、すべてのエラータイプをカバーするわけではありません。「States.ALL」の方が包括的にすべてのエラーを捕まえるため、通知を送るためには「States.ALL」が適しています。

結論:

正しい手順は、SNS通知を設定し、失敗時に「Email」タスクを呼び出し、すべてのエラーをキャッチして通知する設定を行うことです。
したがって、正解は A, B, C です。
278-AWS SAP AWS 「理論・実践・一問道場」アウトバウンドResolver276-AWS SAP AWS 「理論・実践・一問道場」SQS可視性タイムアウト
Loading...
minami
minami
みなみの成長 🐝
Announcement

🎉 ブログへようこそ 🎉

名前: みなみ一人会社
性別:
国籍: China 🇨🇳
政治スタンス: 民主主義支持者
完全独学で基本情報技術者をはじめ、32個の資格を仕事をしながら取得。
現在はIT会社で技術担当として働きながら、ブログ執筆や学習支援にも取り組んでいます。
独学で合格できる学習法や勉強法、試験対策を発信中!

📚 発信内容

  • 💻 IT・システム開発
  • 🏠 不動産 × 宅建士
  • 🎓 MBA 学習記録