にわかサーバー屋さんの覚書

サーバー系を担当しているけど、設計などは日々勉強中のプログラマの覚書

AWS Lambdaで、DynamoDBをgetItemするときのパラメータの覚書

いやー、AWS API Gateway良いですね。


結構、APIサーバーを作成する作業が多かったのですが、
API Gatewatyならサーバーいらねー!ってことで、運用負担がスゲー減って最高。

ミドルウェアのバージョンやらなにやらも気にしないでいいので、
もう、すべてこいつでやっていきたいと思ってるくらい。

まぁ、まださわり始めたばかりなので、これからですが。

で、

AWS LambdaからDynamoDBにgetItemするときに、
パラメータの記述で結構ValidationExceptionを起こしてしまったので覚書。

Lambdaで、DynamoからgetItemするときに使えるものとして、

  • AWS SDK
  • DynamoDB Document SDK

がある。

で、その違いでLambdaからDynamoDBに渡すJSON形式に気をつけないといけない。

AWS SDKの場合

var aws = require('aws-sdk');
var dynamo = new aws.DynamoDB();

//キーに型を付ける
{
	"TableName": "user_info",
	"Key": {
		"Id": { "S": "STR000ABCD"},
		"code": { "N": "1"}
	}
}

DynamoDB Document SDKの場合

var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();

//キーに型を付けない
{
	"TableName": "user_info",
	"Key": {
	        "Id": "STR000ABCD",
	        "code": 1
	}
}

aws-sdkとdynamo-docとでは、ダブルクオーテーションで囲むとか囲まないとか、
型指定するとか、しないとか、そういった部分で違いがある。

いろいろ検索でしてたんですが、なんでサンプルが、キーを"で囲んでるやつ、囲んでないヤツ、
シングルクオーテーションなやつなど、いろいろあるんでしょうね。。。

やってみると、ダブルクオーテーションで囲まないと、なーんにもエラーで通らないんですけどね。不思議。


stackoverflow.com