misc.tech.notes

主に技術的な雑記的な

LamveryにSwaggerベースのちょっとリッチな機能付きAPI Gateway integrationを追加しました

経緯

ということでサクッとAPIが定義できるようにしました。

ここで説明しないインストール方法や使い方の詳しい情報はGitHubのREADMEやQiitaの記事でご確認ください。

github.com

qiita.com

使い方(コマンド)

lamvery api [-d] [-n] [-r] [-s <stage-name>] [-w]
  • -dは恒例のDry run!!
  • -nが後述の自動オプション付加の無効化
  • -rで削除
  • -sAPI Gatewayで言うステージ(dev,prod環境使い分けるとかに使う)
  • -wで新規作成時に設定ファイルにAPIを識別する番号を保存(更新する時に指定しなくて良いようにする)

設定

こんな感じで設定を書きます。

api_id: myipugal74
stage: dev
cors:
  origin: '*'
  methods:
  - GET
  - OPTION
  headers:
  - Content-Type
  - X-Amz-Date
  - Authorization
  - X-Api-Key
configuration:
  swagger: '2.0'
  info:
    title: Sample API
  schemes:
  - https
  paths:
    /:
      get:
        produces:
        - application/json
        parameters:
        - name: sample
          in: query
          required: false
          type: string
        responses:
          '200':
            description: 200 response
            schema:
              $ref: '#/definitions/Sample'
  definitions:
    Sample:
      type: object

ちなみにこれとほぼ同じ雛形は以下のコマンドで生成できます。

lamvery init

で、本来ならこれをAPI GatewayLambda backendによって動かすためには x-amazon-apigateway-integration っていう要素に色々突っ込まないといけないわけですが、その辺は同じくLamveryでデプロイしたFunctionに向くように自動でよしなにやってくれるという感じです。

差分表示

こんな感じでDiffっぽくSwagger定義の差分が見れます。Dry runにすれば事前に確認だけすることが可能。

f:id:FumblePerson:20160415150907p:plain

最後に

これぐらいサクッと書いてサクッとAPI公開できると「ああ、サーバレスっていいなあ」って思えそうな感じ。

ただ、認証の定義とかは未対応だし、自動オプション付加のやり方とかもうちょっとスマートに出来ないか悩み中で、もしアイデアあればいただけると嬉しいです。

-nx-amazon-apigateway-integrationの自動付加をしないオプション)をつければ単純に差分表示&Dry run対応のSwagger importerとしても使えるので、良かったら使ってみてご意見ください。

明日、ぺちかん北海道なのに俺、何やってんだ。。。