lambda

LambdaでDynamoDB操作

More than 1 year has passed since last update.

備忘録ようです。

DynamoDB

  1. DynamoDBでテーブル作成
  2. 項目 >> 項目の作成 で何か適当に値をつけてあげる
  3. 概要の下の方の「Amazon リソースネーム(ARN」をコピー

Lmabda

  1. 関数の作成
  2. 名前とかは適当にして、カスタムロールは「カスタムロールの新規作成」を選択して適当な名前のを作成

IAM

  1. IAM >> ロール にいってさっき作成したロールを選択する
  2. 「インラインポリシーの追加」を選択
  3. 「選択」を選択
  4. AWSサービスは「Amazon DynamoDB」を選択し、アクションの選択は「scan」「updateitem」にチェックをいれ、AWSリソースネームにさっきコピーした 「Amazon リソースネーム(ARN」をペースト
  5. あとは次にどんどん行くだけ。

Lambdaサンプルコード

var AWS = require("aws-sdk");
var dynamo = new AWS.DynamoDB.DocumentClient();

exports.handler = function(event, context) {
    var param = {
        TableName : "Test",
        FilterExpression : "key1 = :val",
        ExpressionAttributeValues : {":val" : "aaa"}
    };
    dynamo.scan(param, function(err, data) {
        if (err) {
            console.log("エラー = " + err);
            context.fail(err); // エラー時
        } else {
            console.log("成功 = " + data);
            context.succeed(data); // 正常時
        }
    });
};
var AWS = require("aws-sdk");
var dynamo = new AWS.DynamoDB.DocumentClient();

exports.handler = function(event, context) {
    var params = {
        TableName: 'Test',
        Key: {
            "key1": "aaa" // Hashキー
        },
        AttributeUpdates: {
            "key2": {
                'Action': 'PUT',       // 置き換え
                'Value': "moji" // 文字列
            }
        }
    };
    dynamo.update(params, function (err, data) {
        if (err) {
            console.log("失敗" + err);
        } else {
            console.log("成功");
        }
    });
};