導入
SQS・SNS・EventBridgeでコンポーネントを疎結合につなげるようになったら、次は「外部からどう呼び出すか」「複数のステップをどう順序立てて実行するか」を考える番です。
説明
Amazon API Gateway は、Lambdaなどのバックエンドの前段に立つ、フルマネージドの APIの入り口 です。
- REST/HTTP/WebSocket APIを作成・公開できる
- スロットリング(リクエスト数の上限制御)でバックエンドを過負荷から守る
- 認証(IAM、Cognito、Lambdaオーソライザー)、キャッシュ、リクエスト検証もAPI Gateway側で完結できる
AWS Step Functions は、複数のAWSサービス呼び出し(Lambda関数など)を、順序・条件分岐・並列実行・リトライを含めて ワークフローとして状態管理 するサービスです。「ステップA成功→ステップB、失敗→ステップC」のような複雑な処理フローを、Lambda関数内にコードとして書き込む代わりに、ステートマシンとして視覚的に定義できます。
flowchart LR
U["利用者"] --> AG["API Gateway<br/>(スロットリング・認証)"]
AG --> SF["Step Functions<br/>(ワークフロー状態管理)"]
SF --> L1["Lambda: 在庫確認"]
SF --> L2["Lambda: 決済処理"]
SF --> L3["Lambda: 発送手配"]
L2 -.失敗時.-> L4["Lambda: 決済ロールバック"]
これらを組み合わせることで、サーバー管理不要な サーバーレス・イベント駆動アーキテクチャ の全体像ができあがります。
flowchart TD
Client["クライアント"] --> APIGW["API Gateway"]
APIGW --> Lambda1["Lambda"]
Lambda1 --> SNS["SNS/EventBridge"]
SNS --> SQS["SQS"]
SQS --> Lambda2["Lambda"]
Lambda1 --> SF["Step Functions<br/>(複雑な処理はここで調整)"]
このパターンの利点は、各コンポーネントが独立してスケールし、どこか1つが障害・遅延を起こしても、キューやリトライの仕組みで吸収できることです。
読んでみよう
「サーバー管理なしでAPIを公開したい」はAPI Gateway+Lambda、「複数ステップの処理を順序立てて管理し、失敗時のリトライや分岐も扱いたい」はStep Functionsと結びつけましょう。SAAでは「疎結合」「サーバーレス」「イベント駆動」という単語が同じ問題群でセットで登場します。