Amazon API Gatewayのみでプレーンテキストを返す

Amazon API Gatewayの使い方としてはlambdaや他のサービスへとリクエストを転送するのが標準的だと思います。
よってGETで静的なページを呼び出すためにもlambdaでコーディングしたり保存してあるファイルを持ってきたりすれば当然できるのですが、API Gatewayのみで作れるだろうかと思い調べていたところ、少し時間がかかったのでここに整理しておきます。

ここではシンプルにtext/plainでプレーンテキストを返すことを想定しています。
htmlを返したい場合は適宜必要な箇所を変更ください。

手順

  1. APIを作成する
  2. Methodを作成する
  3. Integration Responseに望みのテキストを入力する
  4. Method ResponseでContent Typeを変更する
  5. アプリケーションをDeployする

1,2,5はAPI Gatewayで何をするにせよ共通の手順です。

Step1 APIを作成する

AWSコンソールからAPI Gatewayの画面へと入ります。
API Gatewayを初めて利用するときは『Get Started』が表示されますのでこのボタンを押します。
そしてまず右上の『Create API』ボタンを押してから

  • REST APIのBuildを選択
  • protocolを『REST』を選択
  • 『new API』チェックを選択
  • API nameを適当に(ここではtest-apiとしましょう)
  • とりあえずEndpoint TypeはRegionalのまま

で新しいAPIが作成されました。

Step2 Resource/Methodを作成する

“/”リソースを選択したまま、その上にあるActionsボタンを押すと表示されるドロップダウンメニューから『Create Resource』を選択するとリソースを作成できます。
ここではリソース名はhelloworldとしましょう。

次に作成したhelloworldリソースを選択し、再度Actionsボタンを押して『Create Method』からメソッドを作成します。
今回は単純にGETメソッドからプレーンテキストを返すことにしたいので、プルダウンメニューからGETを選択し、右側の✓ボタンを押して確定します。
するとメソッドの初期設定画面が表示されてIntegration typeの設定を要求されますので、Mockを選択して保存してください。

Mockはテスト用に入出力を直接指示する機能ですが、今回のように単純なコンテンツを直接設定するのにも使うことができます。

Step3 Integration Responseに望みのテキストを入力する

上の操作をするとリソース/helloworldのGETメソッドについてのMethod Executionの画面が表示されていると思います。
ここに4つあるボックスのうち右下の「Integration Response」はAPIにリクエストを送った人が得ることができるレスポンスを設定できますので、このリンクを選択します。

右下にあるのがIntegration Response

Integration Responseではレスポンスのステータスコードごとの出力を設定します。
デフォルトではレスポンスコード200だけが存在しているはずです。
これを選択してMapping Templatesを追加、text/plain から出力したい値を入力し、保存します。
また application/json は削除してください。

Step4 Method Responseで出力タイプを設定する

Step3でtext/plainの出力内容を設定したので、あとは実際にtext/plainが出力されるようにMethod Responseで設定するだけです。
Method Executionの画面から左下のMethod Responseを選択し、Response Body for 200の出力をtext/plainに変更してください。

Step5 Deployする

以上で設定はおしまいです。
リソースの/helloworldのGETを選択してActionsボタンからDeploy APIを実行します。

するとInvoke URLが発行されますのでブラウザで開いて確認すれば、先程入力した値が表示されたはずです。

参考

Create a REST API with a Mock Integration in Amazon API Gateway

コメントを残す

メールアドレスが公開されることはありません。