LoginSignup
2
3

More than 5 years have passed since last update.

API GatewayからDynamoDBの読み書きを行う

Posted at

はじめに

AWSのAPI Gatewayから前回作ったLambda関数を起動することによりDynamoDBを読み書きする方法です。Lambdaでは書き込み専用、読み込み専用として別々の関数を作りましたが、今回は一つのAPI Gateway中にGET機能とPOST機能を持たせます。

・ API Gatewayの管理画面にアクセスします。
・ RESTプロトコルを選択します。
・ 適当なAPI名をつけます。
・ エンドポイントタイプはリージョンを選択します。
・ APIの作成を押すとメソッド画面が開きます。

GETコマンドの設定

・ アクションからリソースの作成を選択します。
・ リソース名に[comments]と入力しリソースの作成を押します。
・ アクションからメソッドの作成を選びます。
・ GETを選んでチェックマークを押します。
・ GETセットアップにて、統合タイプはLambda関数、関数名には読み込み用のLambda関数名を入力して保存します。
・「 API GatewayにLambda関数を呼び出す権限を与えようとしています」のメッセージが出るのでOKを押します。
・ メソッドのリクエストをクリックします。
・ URLクエリ文字列パラメーターを開きます。
・ クエリ文字列の追加をクリックし名前にDBのプライマリーキーである[track]と入力してチェックマークを押します。(全データを呼び出すことになる)
・ メソッドの実行をクリックして前の画面に戻ります。
・ 統合リクエストをクリックします。
・ マッピングテンプレートを選択して開きます。
・ テンプレートが定義されていない場合(推奨)を選んでマッピングプレートの追加をクリックします。
・ [Context-Type]に[application/json]と入力し、右のチェックを押します。
・ [application/json]をクリックし以下をコピーし保存します。

#set($inputRoot = $input.path('$'))
{
  "track": "$input.params('track')"
}

・ メソッドの実行をクリックして前の画面に戻リます。
・ これでGET時にLambda関数を介してDynamoDBへQueryを実行できるようになります。
・ テストを押します。
・ クエリ文字列に[track=Test]と入力してテストボタンを押します。
・ 画面右側にDynamoDBの値が出力されれば成功です。
・ メソッドの実行をクリックして前の画面に戻ります。

POSTコマンドの設定

・ アクションからメソッドの作成を選びます。
・ POSTを選び右側のチェックを押します。
・ POSTセットアップにて、統合タイプはLambda関数、関数名には読み込み用のLambda関数名を入力して保存します。
・ 「API GatewayにLambda関数を呼び出す権限を与えようとしています」のメッセージが出るのでOKを押します。
・ 統合リクエストをクリックします。
・ マッピングテンプレートを選択して開きます。
・ テンプレートが定義されていない場合(推奨)を選んでマッピングプレートの追加をクリックします。
・ [Context-Type]に[application/json]と入力し、右のチェックを押します。
・ [application/json]をクリックし以下をコピーし保存します。

$input.json('$’)

・ メソッドの実行をクリックして前の画面に戻ります。
・ テストを押します。
・ リクエスト本文に以下を記入します。

{
    "track": "Test",
    "comment": "Hello API GW",
    "name": "zzzz"
}

・ テストを押します。
・ レスポンスに{}と表示されれば成功です。
・ DynamoDBの管理画面でデータが追加されていることを確認します。

以上でREST APIが完成です。

デプロイとテスト

・ アクションからAPIのデプロイを選択します。
・ デプロイされるステージで新しいステージを選び、ステージ名に[demo]と入力しDeployボタンを押します。
・ 画面にURLが表示されるのでコピーします。
・ ブラウザのアドレスバーにペーストし、最後に[/comments?track=Test]を追記します。
・ GETの結果としてQuery結果が表示されます。POSTについては手作業でのテストは行えません。POSTMAN(www.getpostman.com)などでテストを行う必要があります。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3