Node.jsでAmazon API Gatewayのクライアント書いた

https://github.com/r7kamura/amazon-api-gateway-client

Amazon API GatewayREST API (紛らわしい) を操作するためのクライアントライブラリを書いた。書いたというよりか書き始めたぐらいの感じで、まだ一部のエンドポイントにしか対応していない。とりあえずこういう風に使える。

var Client = require('amazon-api-gateway-client').Client;
var client = new Client({
  accessKeyId: '...',
  region: '...',
  secretAccessKey: '...'
});

// 新しくRestapi (API Gateway上で複数のエンドポイントをまとめる管理単位のこと) をつくる
client.createRestapi({ name: 'MyRestapi' }).then(function (restapi) {
  // Restapiクラスのインスタンスが受け取れるので色々やる
});

最近つくったstackable-fetcherのmiddleware stackの仕組みを積極的に使っていこうとしていて、Content-Typeがapplication/jsonのときにresponse bodyを勝手にdecodeしてくれるmiddlewareや、リクエストの内容を見てAmazon Signature version 4で認証してくれるmiddleware、リクエストとレスポンスのログをデバッグ用に出力してくれるmiddlewareなどをつくって開発に使った。Rubyを知っている人はFaradayみたいなやつです。stackable-fetcherは whatwgのFetch API を実装した node-fetch をHTTPクライアントのベースに利用していて、これがリクエスト時やレスポンスボディの読み込み時にPromiseを返す設計になっているので、処理の前後に何か差し込むmiddlewareの仕組みとわりと相性が良い。