プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Amazon API GatewayのMock機能を使ってみる

 前回のJAWSUG千葉ネタですが、Amazon API GatewayのMock機能を使ってみようというお話です。時代は、2-Tierアーキテクチャやサーバレス・アーキテクチャだと勇ましいですが、足元をみるとレガシーから脱却できずに苦労しているという現実もあると思います。そんな時に、API Gatewayのモック機能を使って、部分的にでも文明の利器を感じるのは良いのではないでしょうか?

Amazon API GatewayのMock機能とは?



 最初期のAPI Gatewayには4つの機能がありました。Lambda連携とAWS Proxy,Http Proxyの3つです。4つ目の機能として追加されたのが、Mock機能です。最初の3つの機能は、API Gatewayを通じて別のリソースを呼び出す機能です。これに対して、Mock機能はAPI Gateway自身が直接的に値を返す機能です。名前の通り、バックエンドのサービスが出来る前に代わりに仮の値を返すサービスです。バックエンドのサービスが出来上がる前に、開発環境として利用するのが良いのではないでしょうか?

Amazon API GatewayのMock機能の使い所



 Mock機能は、どのように使えば良いのでしょうか?例えば、モバイルアプリの開発に使うのが良いのではと思っています。最近のモバイルアプリは、当たり前のようにサーバ側のシステムと連携します。その際の連携方法としては、JSON等の形式で連携することが多いです。まぁよくあることだと思いますが、スマホのアプリ側を作り出している時は、それに対応するためのサーバ側のAPIを同時に作ることが多いです。そして、開発途上でモバイル側のアプリの動作をみる場合は、当然ながらサーバ側のAPIが必要になります。API側の完成を悠長に待つことは出来ないので、スタブが必要となります。
 私が関わってる開発の現場では、S3のWebホスティング機能を利用しJSONファイルをアップしてスタブとして利用していました。こんな感じですね。

f:id:dkfj:20150916221838p:plain

これはこれで簡単便利なのですが、幾つか残念なところがあります。

  • 返り値を変更する為には、わざわざファイルをアップロードするのが面倒くさい
  • レスポンスコードやヘッダーの変更ができない

 そこで登場するのが、Mock機能です。
こんな感じに変わります。

f:id:dkfj:20150916222155p:plain

 見た目は余り変わりませんね。
でも、思った以上にメリットがあります。

  • AWSのマネジメントコンソール上で、返り値の変更をできる
  • レスポンスコードやヘッダーの変更が簡単

 特に後者がありがたいです。異常系テストで、アクセス拒否やサーバエラーが発生した時の挙動を簡単に再現出来るのは便利です。

Amazon API GatewayのMock機能の設定



 では、どうやって設定するのでしょうか?一度覚えてしまうと簡単ですが、まぁ最初は解りづらいこと間違いなしです。中の人いわくSwagger使えとのことです。といっても、最初からサードパーティのツールから入るのも取っ付きにくいので、AWSマネジメントコンソールの設定例をあげておきます。

まずは一連の流れを動画で見てください。

www.youtube.com


つぎに個々の動きについて、細かく切り出してみます。

1. APIの作成
f:id:dkfj:20150916223546p:plain
2. リソース(Resource)の作成
f:id:dkfj:20150916223556p:plain
3. メソッド(Method)の作成 1
f:id:dkfj:20150916224138p:plain
4. メソッド(Method)の作成 2
f:id:dkfj:20150916223611p:plain
5. メソッド(Method)の作成 3
f:id:dkfj:20150916223627p:plain
6. メソッド(Method)の作成 4
f:id:dkfj:20150916223638p:plain
7. メソッド(Method)の作成 5
f:id:dkfj:20150916223651p:plain
8. メソッド(Method)の作成 6
f:id:dkfj:20150916223718p:plain
9. テスト 1
f:id:dkfj:20150916225318p:plain
10. テスト 2
f:id:dkfj:20150916225350p:plain
11. デプロイ 1
f:id:dkfj:20150916223127p:plain
12. デプロイ 2
f:id:dkfj:20150916223729p:plain


 まぁ何というか面倒くさいですね。

感想



 まぁ賛否両論どちらかといえば非難轟々のUIですが、コーディングレスで管理コンソールだけでも試せるということは、敷居が低いという面で良いと思います。恐らく管理画面は、どんどん変わると思うので次はSwaggerの使い方の紹介でもしようと思います。

追記:
この辺りのことを、『Amazon Web Services クラウドネイティブ・アプリケーション開発技法』という本でコッテリ解説しています

_
See Also:
JAWSUG千葉で、API Gatewayの話をしてきました。

参照:
Amazon API GatewayでMockを定義してみる - Qiita

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

Amazon Web Services パターン別構築・運用ガイド  一番大切な知識と技術が身につく

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,小西秀和,佐藤瞬
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2015/03/25
  • メディア: Kindle版
  • この商品を含むブログを見る

Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく

Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく

  • 作者: 佐々木拓郎,佐藤瞬,石川修,高柳怜士,佐藤雄也,岸本勇貴
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2016/04/20
  • メディア: Kindle版
  • この商品を含むブログを見る