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のデプロイ」
「URLの呼び出し」リンクをクリック

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

/dev/translate?input_text=こんばんは
と指定すると「Good evening」とレスポンスされる。
今回は、 Lambda + API Gateway :日本語を英語に翻訳するAPI の構成でした。
次回は、翻訳履歴を蓄積するDynamoDBをセットアップします。