前回は、Amazon DynamoDB でテーブルを作成しました。

今回は、AWS Lambda と Amazon DynamoDB を連携します。

まずは、AWS Lambda サービスにアクセスします。

bookCreate(POST)をクリックします。

コードソースに移動します。

aws-sdk を呼び出します。

const AWS = require("aws-sdk")

DynamoDB の API データを取得します。

region は、東京である(ap-northeast-1)を選択します。

apiVersion は、AWS ClassList のサイトで確認します。

最新は、(2012-08-10)となっているので、こちらを選択します。

const dynamodb = new AWS.DynamoDB({
  region: "ap-northeast-1",
  apiVersion: "2012-08-10",
})

次は、params を作成します。

Item は、前回 DynamoDB で作成したテーブル名を使用します。

全て String 型なので、S を入力します。

また、TableName を入力しましょう。

exports.handler = async (event, content, callback) => {
  const params = {
    Item: {
      Book_id: {
        S: "ascve",
      },
      Title: {
        S: "風と共に去りぬ",
      },
      Author: {
        S: "マーガレット・ミッチェル",
      },
    },
    TableName: "Books",
  }
}

putItem を使って、DynamoDB に送信します。

エラーの場合は、エラーをコールバックします。

exports.handler = async (event, content, callback) => {
  const params = {
    Item: {
      Book_id: {
        S: "ascve",
      },
      Title: {
        S: "風と共に去りぬ",
      },
      Author: {
        S: "マーガレット・ミッチェル",
      },
    },
    TableName: "Books",
  }
  await dynamodb.putItem(params).promise()
}

次に、アクセスの権限を与えます。

IAM サービスにアクセスします。

左メニューバーの『ロール』をクリックします。

image2

bookCreate のロールをクリックします。

『ポリシーをアタッチします』をクリックします。

image3

『AmazonDynamoDBFullAccess』をチェックします。

image4

『ポリシーのアタッチ』をクリックします。

image5

Amazon API Gateway サービスにアクセスし、テストしてみます。

POST のテストをクリックすると、

image6

image7

レスポンス本文は、何も返って来ていません。

DynamoDB サービスにアクセスして、テーブルが作成されているか確認します。

image8

先程、Lambda で設定した params が追加されました。

次回は、Amazon API Gateway で送信したデータをを Amazon DynamoDB に保存します。

ブログ一覧