Step Functions + API Gateway + Lambda + S3 で注文処理のサーバーレスワークフローを作る

API Gateway(HTTP API)で受けた注文リクエストを Step Functions でオーケストレーションし、複数の Lambda で処理して結果を S3 に保存する。

中級55Azure 実環境

ラボ概要

このラボでは、サーバーを 1 台も立てずに、注文 (order) を受け付けて検証・加工し、結果を S3 に保存するサーバーレスワークフローを構築します。入口は API Gateway の HTTP API、処理の制御は AWS Step Functions の Express ワークフロー、実際の処理は 3 つの Lambda 関数、出力先は Amazon S3 です。

リクエストの流れは「API Gateway(POST /orders)→ Step Functions が同期実行(StartSyncExecution)→ ValidateOrder(入力検証)→ EnrichOrder(金額計算・タイムスタンプ付与)→ SaveOrder(S3 へ保存)」となります。各 Lambda の出力が次の Lambda の入力へと受け渡されていく様子を、手を動かして理解します。

学習目標

  • 複数の Lambda 関数を AWS Step Functions(Express)で順番にオーケストレーションできる
  • ある Task の出力が次の Task の入力になる、ステートマシンのデータの流れを理解できる
  • Lambda 実行ロールに最小限の S3 権限(s3:PutObject)だけを付与できる
  • 環境変数を使って Lambda からバケット名などの設定を外出しできる
  • API Gateway(HTTP API)を AWS サービス統合で Step Functions の StartSyncExecution に接続できる
  • API・ワークフロー・S3 を一気通貫で動作確認できる。同期呼び出し(StartSyncExecution)の応答は「実行結果のエンベロープ」であり、ワークフローの出力は応答 JSON の output フィールドに文字列化された JSON として入っていることを理解する

前提

  • フェデレーテッドコンソールに cloud_user ロールでサインイン済みであること。
  • すべての操作を アジアパシフィック (東京) ap-northeast-1 リージョンで行うこと(IAM などグローバルサービスを除く)。画面右上のリージョン表示が「東京」であることを確認してください。
  • JSON と簡単な Python(boto3)を読める程度の知識があると理解がスムーズです。
  • サンドボックスのガードレールにより、本ラボは EC2/RDS を使わないサーバーレス構成のみで完結します。

ラボの構成

  1. 1結果保存用の S3 バケットを作成する
  2. 2ValidateOrder Lambda(入力検証)を作成する
  3. 3EnrichOrder Lambda(金額計算・タイムスタンプ付与)を作成する
  4. 4SaveOrder Lambda(S3 へ保存)を作成する
  5. 5Step Functions ステートマシン(Express)を作成する
  6. 6ステートマシン単体で動作確認する
  7. 7API Gateway(HTTP API)を作成して Step Functions に接続する
  8. 8API 経由で動作確認する(CloudShell)
  9. 9動作確認
  10. 10完了チェックリスト
  11. 11後片付け

詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。

構成図

構成図

参考リソース

参考リンク

このラボが対応する試験の模擬問題集

本番形式の問題で理解度を確認できます。各試験とも先頭 15 問は無料です。

DVA-C02AWS Developer – Associate練習テスト 4 回・全 200SAA-C03AWS Solutions Architect – Associate練習テスト 4 回・全 200