テスト用DynamoDB
テスト用にusersというテーブルを作り、一件データを入れておきます。
aws-sdkのインストール
DynamoDBにアクセスするのに必要なのでaws-sdkをインストールします。
$ npm install --save aws-sdk
サンプルコード
LambdaからDynamoDBにアクセスするために serverless.yml に iamRoleStatementss の設定が必要になります。
serverless.yml
service: dynamo-test
provider:
name: aws
runtime: nodejs10.x
stage: dev
region: ap-northeast-1
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource:
Fn::Join:
- ":"
- - "arn:aws:dynamodb"
- Ref: AWS::Region
- Ref: AWS::AccountId
- "table/users"
functions:
hello:
handler: handler.hello
events:
- http: GET /
handler.js
'use strict';
const AWS = require('aws-sdk');
AWS.config.update({
region: 'ap-northeast-1'
});
const docClient = new AWS.DynamoDB.DocumentClient();
const docClientGet = (params) => {
return new Promise((resolve, reject) => {
docClient.get(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
module.exports.hello = async (event) => {
const data = await docClientGet({
TableName: 'users',
Key: { 'id': 1 }
});
const user = data.Item;
return {
statusCode: 200,
body: JSON.stringify({
id: user.id,
name: user.name
})
};
};
デプロイ
$ serverless deploy
動作確認
エンドポイントにアクセスすると次のようなレスポンスが返ってくるのを確認できます。
{"id":1,"name":"John"}