テックカリキュラム

EventBridge / Step Functions による業務自動化

EventBridge / Step Functions による業務自動化

はじめに

手動オペレーションを自動化することで、ミスの削減・コスト削減・対応速度の向上が実現できます。AWSでは、EventBridgeStep Functionsを活用することで、複雑な業務処理を柔軟にかつ安全に自動化できます。

本章では、以下の3つの観点から、AWSによる業務自動化の実装方法を実践的に解説します:

  • S3アップロード → 通知 → Lambda実行といったイベント駆動設計
  • Step Functionsによる処理の分岐、エラーハンドリング、リトライ
  • 非同期処理の状態監視とデバッグのベストプラクティス

1. イベント駆動設計(S3アップロード → 通知 → Lambda連携)

基本構成

業務フローを「イベント中心」に組み立てることで、システムの拡張性・保守性が向上します。以下は典型的な構成例です:

  • ユーザーがS3バケットにファイルをアップロード
  • EventBridgeがアップロードイベントを受信
  • Lambda関数が起動し、ファイル処理を実行
  • 完了後、SNS通知やDB登録を行う

EventBridgeルール設定(CLI例)

# S3 PUTイベントをLambdaに転送 aws events put-rule \ --name S3UploadRule \ --event-pattern '{ "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": { "name": ["my-upload-bucket"] } } }' 
# Lambdaをターゲットに追加 aws events put-targets \ --rule S3UploadRule \ --targets '[{"Id":"LambdaInvoke","Arn":"arn:aws:lambda:ap-northeast-1:123456789012:function:ProcessFile"}]' 

このように構成することで、「ファイルアップロードをトリガーにした自動処理」がシンプルに実現できます。


2. Step Functionsによる分岐とリトライ制御

Step Functionsの強み

Step Functionsは、複雑な業務ロジックを視覚的かつ宣言的に定義できるステートマシンベースのワークフロー管理サービスです。特に以下の点で優れています:

  • 各ステップでの条件分岐(Choice)
  • エラー処理、リトライ、タイムアウト制御
  • Lambda、ECS、SNS、DynamoDBなど多数のサービスと統合可能

JSON形式でのステートマシン定義例

{ "StartAt": "ファイル解析", "States": { "ファイル解析": { "Type": "Task", "Resource": "arn:aws:lambda:ap-northeast-1:123456789012:function:AnalyzeFile", "Next": "処理分岐", "Retry": [ { "ErrorEquals": ["Lambda.ServiceException"], "IntervalSeconds": 5, "MaxAttempts": 2, "BackoffRate": 2.0 } ] }, "処理分岐": { "Type": "Choice", "Choices": [ { "Variable": "$.type", "StringEquals": "image", "Next": "画像処理" }, { "Variable": "$.type", "StringEquals": "pdf", "Next": "PDF処理" } ], "Default": "エラー終了" }, "画像処理": { "Type": "Task", "Resource": "arn:aws:lambda:...:ProcessImage", "End": true }, "PDF処理": { "Type": "Task", "Resource": "arn:aws:lambda:...:ProcessPDF", "End": true }, "エラー終了": { "Type": "Fail", "Error": "UnsupportedType", "Cause": "未対応のファイル形式" } } } 

ポイント

  • エラー時のリトライやFailステートにより頑健な処理設計が可能
  • 各ステップのログがCloudWatch Logsに記録され、トレース可能

3. 非同期処理の監視とデバッグ

状態管理とモニタリング

非同期処理では、「いつ」「どの処理が」「どこで失敗したか」を明確にすることが極めて重要です。AWSでは以下のツールを活用します:

  • Step Functionsの実行履歴:各ステップの入力・出力・実行時間が可視化
  • CloudWatch Logs Insights:Lambdaのログクエリ分析
  • X-Ray(トレーシング):Lambda + Step Functions連携でフロー全体を可視化

CloudWatch Logs Insights クエリ例

# エラー発生時のLambdaログを抽出 fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20 

Step Functions の運用ベストプラクティス

  • ステートごとに名前を付けて意味を持たせる
  • Fail状態を適切に定義し、通知と連携
  • CloudWatchメトリクスで「失敗回数」や「平均実行時間」を監視

まとめ

EventBridgeとStep Functionsを活用することで、AWS上で柔軟かつスケーラブルな業務自動化フローを構築できます。

  • EventBridgeはS3やその他イベントソースとLambda等をつなぐハブ役
  • Step Functionsは複雑なロジック(分岐、リトライ、失敗制御)を定義可能なステートマシンで管理
  • CloudWatchとX-Rayによる監視・デバッグ体制で非同期処理の信頼性を確保