AWSサーバレスアーキテクチャーNo4:Lambda + API Gateway

AWSのホームページの初心者ハンズオンにある「サーバーレスアーキテクチャで翻訳 Web API を構築する 」の内容を自分のAWSアカウントでやってみました。

前回投稿の API-Gateway を実装した続きで、4パート目です。
ざっくりと基本構成を図で表してみて、この中で DynamoDB を省いた構成です。

Lambda + API Gateway 設定の手順

入力した日本語を英語に翻訳するAPIを作成する

  • /translate リソースを作成し、GET メソッドを作成する
  • 統合タイプとして Lambda 関数を選択する
  • プロキシ統合を設定し、Input / Output をパススルーする
  • メソッドリクエストでクエリパラメータの設定
  • Lambda 関数を修正する
  • Lambda 関数をテストする
  • API をデプロイする
  • API を叩いてみる(結果は返ってくるか)

No3で行った環境を直していきます。それでは設定していきましょう!

検索窓「API」から「API Gateway」をクリック

先ほど作成したAPIのリンクをクリック
Mock で実装した sampleメソッド は「リソースの削除」する
「削除」をクリック
「アクション」→「リソースの作成」をクリック

リソース名を「translate」と入力

「リソースの作成」をクリック

リソース名「translate」を選択し、「メソッドの作成」をクリック
Lambda関数に「translate-function」の入力を始めると入力補助されるので、クリックして設定する。

統合タイプとして Lambda 関数を選択し、 「translate-function」 を指定。

「Lambda プロキシ統合の使用」にチェック

「保存」をクリック

「OK」をクリック
「メソッドリクエスト」をクリック

▶ URLクエリ文字列パラメータ
を展開し、

「クエリ文字列の追加」をクリック

「input_text」を入力して、
✔ をクリック

「メソッドの実行」をクリック

「必須」をチェック

translate_functionリンクをクリック
translate_functionを修正していくが、「api gateway 統合レスポンス」で検索
Lambdaプロキシ統合の出力形式がわかる。
Lambdaプロキシ統合の出力形式に合わせて、コードを変更
「テスト」タブで入力補助で、「apigateway-aws-proxy」を設定
上イメージのように修正して「変更を保存」をクリック

「コード」タブで「APCall」をクリック→「Test」

出力「Hello」と、
「 “isBase64Encoded”: false,」
「”headers”: {}」
を確認できる。

「アクション」→「APIのデプロイ」

先ほどの「dev」のままで「デプロイ」をクリック

「URLの呼び出し」リンクをクリック

エラーとなるが、クエリ・ストリングが指定されていないのが原因なので

/dev/translate?input_text=こんばんは

と指定すると「Good evening」とレスポンスされる。

今回は、 Lambda + API Gateway :日本語を英語に翻訳するAPI の構成でした。

次回は、翻訳履歴を蓄積するDynamoDBをセットアップします。