LambdaからDynamoDB Localにアクセスする方法

@iwasaki 220views 更新:2016年4月22日

開発時のコストを下げるため、DynamoDBではなくDynamoDB Localで開発するケースは結構あるかと思います。

ただそうなると難しくなってくるのがLambda連携。

そんな問題を解決するためにlambda-localを作ってくれた方がいるので、これを使うとよさそうです。

リポジトリはこちら

https://github.com/ashiina/lambda-local

詳しい設定手順はこちらのブログが参考になります。

http://takamints.hatenablog.jp/entry/2016/02/25/query-aws-dynamodb-by-aws-lambda-function

http://hacknote.jp/archives/18779/

に書いた方法で、アクセス先のDynamoDBをあわせるには、

export AWS_ACCESS_KEY_ID='yourKeyId'

をJavaからアクセスした際のものと共通にしておくこと、以下のようにして、regionおよびendpointを調整しておくことが重要になります。

process.env.TZ = "Asia/Tokyo";
var aws = require('aws-sdk');
aws.config.update({
    region: 'ap-northeast-1'
});

var dynamodb = new aws.DynamoDB({apiVersion: '2012-08-10',region: 'us-east-1',endpoint: "http://localhost:8000"});
var sqs = new aws.SQS({apiVersion: '2012-11-05', region: 'ap-northeast-1'});

exports.handler = function (event, context) {
    console.log(dynamodb); 
     dynamodb.listTables().eachPage(function(err, data) {
    if (err) {
        console.log(err); // an error occurred
    } else if (data) {
        console.log(data);
    }
});
};

DynamoDBだけLocalを見に行くようにしてSQSは普通のエンドポイントを見に行くようにするとかの設定も可能です。

これでローカルだけでDynamoDBとLambdaの動く環境が用意できるようになります!

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません