Amazon Quick Flow で生成したデータを S3 バケットに自動書き込みしてみた

Amazon Quick Flow で生成したデータを S3 バケットに自動書き込みしてみた

Amazon Quick Flow で予測データを S3 に自動保存したいというニーズから、OpenAPI カスタムコネクタを使った実装方法を試してみました。標準機能の制限を突破するアプローチを紹介します。
2026.07.19

いわさです。

前回の記事で、Amazon Quick の Flow と Automation を使って「データセット Q&A で予測生成 → S3 に書き込み」を自動化しようとしたところ、標準機能の組み合わせでは実現できないことがわかりました。

https://dev.classmethod.jp/articles/quick-flow-automation-datasetqa-to-s3/

Flow は外部 SaaS コネクタ(Google Drive、Slack 等)しかアクションで使えず、AWS サービスコネクタ(S3)は Automation のみ対応。
一方で Automation はデータセット Q&A が使えない、という状況でした。

ただ、アクションコネクタ互換性のテーブルを見ると、カスタムコネクタの「OpenAPI」は Flow でサポートされています。

https://docs.aws.amazon.com/quick/latest/userguide/action-connector-apis-supported-types.html

カスタムコネクタ Chat Agents Flows Automations
OpenAPI
REST API
MCP

つまり、S3 書き込み用の API を自前で用意して OpenAPI コネクタとして Quick に登録すれば、Flow 内で予測生成から S3 書き込みまで完結できるのでは?ということで試してみました。
なお、MCP サーバーも Flow で使えるので、そちらでも同じアプローチが取れそうです。
今回こちらを確認してみたので紹介します。

実際に確認してみる

Lambda 関数の作成

まず、CSV テキストを受け取って S3 に書き込む Lambda を作成します。

lambda_s3_upload.py
import boto3
import json

s3 = boto3.client('s3')

BUCKET = 'hoge0713iwasa'
KEY = 'demo/forecast/ticket_sales_forecast.csv'

def handler(event, context):
    body = event.get('body', '{}')

    try:
        payload = json.loads(body)
        csv_content = payload.get('csv_content', body)
    except (json.JSONDecodeError, TypeError):
        csv_content = body

    s3.put_object(
        Bucket=BUCKET,
        Key=KEY,
        Body=csv_content.encode('utf-8'),
        ContentType='text/csv; charset=utf-8'
    )

    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': json.dumps({'message': 'uploaded', 'bucket': BUCKET, 'key': KEY})
    }

IAM ロールは s3:PutObject のみ許可しています。

API Gateway の作成

REST API を作成し、POST /upload で Lambda を呼び出すように設定します。
認証は今回はデモ検証用なので設定なしにしています。

curl -s -X POST "https://zmg1gsvj38.execute-api.ap-northeast-1.amazonaws.com/prod/upload" \
  -H "Content-Type: application/json" \
  -d '{"csv_content": "event_date,day_of_week\n2026-07-17,金"}'
{"message": "uploaded", "bucket": "hoge0713iwasa", "key": "demo/forecast/ticket_sales_forecast.csv"}

API 側の準備は完了です。

OpenAPI スキーマの作成

Quick の OpenAPI コネクタに登録するスキーマを作成します。
検証の中で色々とトライアンドエラーがありまして、そこからわかったポイントは以下です。

  • components.securitySchemes を空でも定義する(ないとバリデーションエラーになる)
  • Content-Type は application/json にする(text/plain は非対応)
  • リクエストボディは csv_content プロパティに CSV テキストを入れる形式
openapi_s3_upload.json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Ticket Sales Forecast Upload API",
    "description": "Upload forecast CSV to S3 via API Gateway + Lambda",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://zmg1gsvj38.execute-api.ap-northeast-1.amazonaws.com/prod"
    }
  ],
  "components": {
    "securitySchemes": {}
  },
  "paths": {
    "/upload": {
      "post": {
        "operationId": "uploadForecastCsv",
        "summary": "Upload forecast CSV to S3",
        "description": "Receives CSV content as JSON and uploads it to S3",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "csv_content": {
                    "type": "string",
                    "description": "CSV text including header row and data rows"
                  }
                },
                "required": ["csv_content"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Upload successful",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" },
                    "bucket": { "type": "string" },
                    "key": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Quick に OpenAPI コネクタを登録

Quick コンソールの Connectors 画面で OpenAPI Specification コネクタを作成します。

FA4BE1FD-B556-40BB-888F-4D36D3E2AA3B.png

設定値はこちらです。

  • 名前: forecast-s3-upload
  • 接続タイプ: パブリックネットワーク
  • Auth configuration: None
  • ベース URL: https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod

Quick Flow の構築

Flow のステップ構成は以下のようにしました。

  1. チャットエージェント: カスタムエージェント(データセット Q&A)で予測 CSV を生成
  2. アクション: OpenAPI コネクタ(forecast-s3-upload)で S3 に書き込み

509A4860-35FD-432A-A124-7B39C63F7E9F_1_105_c.jpeg

アクションステップのコネクタ選択で、登録した OpenAPI コネクタが表示されるようになりました。

フローの実行

フローを実行すると、まずチャットエージェントが予測 CSV を生成します。

0BB07F9D-0635-4CFF-B8C3-AD0AEEA0EC67.png

続いてアクションステップに進むと、生成された CSV が csv_content フィールドに入った状態で確認画面が表示されます。

BE5688E0-1510-4C35-8AB9-B0A1FA44111B_1_105_c.jpeg

Submit を押すとアップロードが実行されます。
なお、アクション実行には Submit を押す必要がありますが、これは手動実行した場合の制限です。自動実行させる方法は後述します。

5D582B37-3CFC-4E1E-8A3F-3317265D06AF.png

結果の確認

S3 に予測 CSV が書き込まれたことを確認します。

FB33E061-4F80-48AF-905E-6BE239F04CC9.png

event_date,day_of_week,channel,tickets_sold,ticket_price,revenue,venue_capacity
2026-07-17,金,自社サイト,133,5500,731500,300
2026-07-17,金,プレイガイド,117,5000,585000,300
2026-07-17,金,当日券,14,6000,84000,300
2026-07-18,土,自社サイト,128,5500,704000,300
2026-07-18,土,プレイガイド,135,5000,675000,300
2026-07-18,土,当日券,16,6000,96000,300
2026-07-19,日,自社サイト,152,5500,836000,300
2026-07-19,日,プレイガイド,97,5000,485000,300
2026-07-19,日,当日券,14,6000,84000,300

Athena で実績テーブルと予測テーブルを UNION ALL してダッシュボードで確認すると、実績データの続きに予測データが表示されます。

206A32D9-4F33-45BC-93A5-E8A95B549B94.png

スケジュール実行について

Quick Flow のスケジュール機能を使えば、この一連の処理を定期実行できます。
トリガー設定時に「確認なしで実行」を ON にすると、アクションの Submit 確認をスキップして自動実行させることができます。(スキップさせないこともできる)

4D8675BC-8A5E-43D1-9C14-AD9A2449846F_4_5005_c.jpeg

Turn on Run with no confirmation to automatically submit action forms during scheduled runs.

https://docs.aws.amazon.com/quicksuite/latest/userguide/schedules-in-quick-flows.html

さいごに

本日は Amazon Quick Flow で生成した予測データを OpenAPI コネクタ経由で S3 バケットに自動書き込みしてみました。

Flow 標準では S3 への書き込みができないのですが、API Gateway + Lambda などでカスタム API を用意して OpenAPI コネクタとして登録すれば突破できることがわかりました。この方法なら応用すればなんでも出来そうですね。

今回の検証の範囲だと認証なしのパブリックAPIという形でした。必要に応じて認証などの方法も検討が必要ですね。

Quick だけで完結しないのは少し残念ですが、Flow のスケジュール実行と組み合わせれば「定期的にデータセットから予測を生成して S3 に書き出し → ダッシュボードに反映」というパイプラインが実現できます。
AWS サービスコネクタが Flow でも使えるようになると嬉しいんですけどね。アップデートに期待したいです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事