Amazon Quick Flow から呼び出す OpenAPI コネクタアクションに API キー認証を追加してみた

Amazon Quick Flow から呼び出す OpenAPI コネクタアクションに API キー認証を追加してみた

QuickのOpenAPIアクションは認証オプションがある。使おう
2026.11.04

いわさです。

以前、Amazon Quick の Flow から OpenAPI コネクタ経由で API Gateway + Lambda を呼び出す記事を書きました。

https://dev.classmethod.jp/articles/quick-flow-auto-s3/

このときは API Gateway を認証なしのパブリック API として作っていました。
作っていたというか、この時は Quick 側で OpenAPI コネクタを定義する際に「認証なし」しか選べなかったのです。

実はちゃんと準備すれば認証オプションを使うことができます。
その後セキュリティ強化する機会があったので、まずは API キーを使えないか試してみることにしました。紹介します。

実際にやってみる

まず検証用に、固定の JSON を返すだけの API を API Gateway で作りました。
GET /hello でレスポンスを返します。
認証はまだ設定していないので、この時点では API キーなしで呼び出し可能です。レスポンスはこんな感じ・

curl -s "https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/hello"
{
  "message": "hello from hoge-iwasa1101",
  "authenticated": false
}

そしてこの API を前回と同じように Quick の OpenAPI コネクタに登録するため、OpenAPI スキーマを作りました。

{
  "openapi": "3.0.3",
  "info": {
    "title": "hoge iwasa1101 API key demo",
    "description": "Returns a fixed test response.",
    "version": "1.0.0"
  },
  "servers": [
    { "url": "https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod" }
  ],
  "components": {
    "securitySchemes": {}
  },
  "paths": {
    "/hello": {
      "get": {
        "operationId": "getHello",
        "summary": "Get a fixed test response",
        "description": "Returns a fixed JSON message. No request body.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" },
                    "authenticated": { "type": "boolean" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

API が出来たので Amazon Quick 上でコネクターを設定しましょう。
Open API Specification コネクタ作成で先ほど作成した OpenAPI スキーマ定義をアップロードします。
ちなみに最初titleプロパティを「hoge-iwasa1101 API key demo`」で定義していたところ、Quick のコネクタにアップロードした時に以下のエラーが発生しました。

Missing or invalid value for field: 'title'. Must be in format '^[a-zA-Z0-9 ]{1,100}$'

title に使えるのは半角英数字とスペースだけで、ハイフンが入っているとエラーになります。
で、アップロードしたのですが次のように Auth 設定は None しか選べませんでした。あれ?そうなのか。

C8B19260-E15F-4324-962B-42182E6B3553.png

一旦こちらでコネクタを用意しフローから呼び出せるかまず確認しました。

BC77632F-5A8F-483D-BE58-AEBB2B9988FD_1_105_c.jpeg

はい。まずは認証なしでの API 呼び出しは成功しました。
この状態で API Gateway 側で API キー必須にしてみましょう。

01626FE3-DB41-478A-96C7-D260465009AA_1_105_c.jpeg

次のように呼び出しに失敗するようになりましたね。API キー指定してないから、当然ですね。

9BA6C8CD-53C3-431A-B787-749D1F016DC6.png

続いて API キーを設定できるようにしてみましょう。
ただし、先ほどのコネクターを編集しようと思ったのですが、次のように認証方法や Auth 設定は変更が出来ませんでした。

1119339E-2BA0-4272-9C0E-F7359257F58B.png

28CFD811-F7C6-4104-9BB5-109801F9834D.png

どうやら、作成済みコネクタの編集では今回の変更反映は出来ないようです。
ということで新しくコネクタを作成してフロー側を差し替えるようにしたいと思います。コネクタの OpenAPI Specification コネクタを選択して以下から新規作成できます。

6F31764F-0598-4431-BCCB-987654F2AF73.png

そしてコネクタ作成画面で認証方式を選べるようにするには、OpenAPI スキーマ側に認証の定義(securityScheme)が必要です。
公式ドキュメントに記載がありました。

No authentication — Default option when no security schemes are defined in the specification.

https://docs.aws.amazon.com/quick/latest/userguide/openapi-integration.html

OpenAPI コネクタがサポートする認証方式は、OAuth 2.0・API Key・認証なしの3つです。API Key はクエリパラメータかヘッダーで渡せます。  
なので最初にアップロードした securitySchemes が空のスキーマだと、Auth 設定のプルダウンには「None」しか出てこなかったんですね。

そこで、API キー認証を OpenAPI に定義しました。x-api-key ヘッダーで渡す形です。

{
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    }
  },
  "security": [
    { "ApiKeyAuth": [] }
  ]
}

このスキーマでアップロードし直すと、Auth 設定のプルダウンに「API Key」が出てくるようになりました。これだ!

3E010247-F254-4068-83A5-9661F6CBF62E.png

そしてここで「API Key」を選び API キーの入力欄に API Gateway で作成したキーの値を入れます。

このコネクタをフローのアクションに指定し直して実行すると、今度は 200 が返ってきました。

8F1C728A-368E-4E27-90D2-133A0C0CC28C.png

89EBE8C4-4D49-495F-905B-4BFFAAACF914.png

API キーを設定したコネクタからのみ呼び出せるようになりましたね!!

さいごに

本日は Amazon Quick Flow から呼び出す OpenAPI コネクタアクションに API キー認証を追加してみました。

API キーを設定して OpenAPI スキーマでsecuritySchemesを定義することで、キーを持つ Quick のコネクタからだけ呼び出せるようになりましたね。
他にも認証方法として OAuth 2.0 もサポートされているので認証・認可周りの制御にうまく使えそうです。

この記事をシェアする

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

関連記事