Amazonは Dynmodb製品のローカルシミュレーター を提供していますが、 例はPHPのみ です。
これらの例では、パラメーター「base_url」を渡して、ローカルDynamodbを使用していることを指定していますが、Nodeでこのエラーが返されます。
{ [UnrecognizedClientException: The security token included in the request is invalid.]
message: 'The security token included in the request is invalid.',
code: 'UnrecognizedClientException',
name: 'UnrecognizedClientException',
statusCode: 400,
retryable: false }
NodeでDynamodb_localを動作させるにはどうすればよいですか?
この ブログ投稿 に従ってDynamoDB Localをセットアップする必要があります。その後、このコードを使用するだけです。
var AWS= require('aws-sdk'),
dyn= new AWS.DynamoDB({ endpoint: new AWS.Endpoint('http://localhost:8000') });
dyn.listTables(function (err, data)
{
console.log('listTables',err,data);
});
Nodeの場合、以下のようにしてください:
const AWS = require('aws-sdk');
const AWSaccessKeyId = 'not-important';
const AWSsecretAccessKey = 'not-important';
const AWSregion = 'local';
const AWSendpoint = 'http://localhost:8000' // This is required
AWS.config.update({
accessKeyId: AWSaccessKeyId,
secretAccessKey: AWSsecretAccessKey,
region: AWSregion,
endpoint: AWSendpoint
});
DynamodDBがポート8000で実行されていることを確認します。
私がそれを行う方法は次のとおりです。同じコードがローカルまたはAWS内で機能します。
Env var DYNAMO_LOCAL_ENDPT="http://localhost:8000"
の存在を単に活用する
import { DynamoDB, Endpoint } from 'aws-sdk';
const ddb = new DynamoDB({ apiVersion: '2012-08-10' });
if (process.env['DYNAMO_LOCAL_ENDPT']) {
ddb.endpoint = new Endpoint(process.env['DYNAMO_LOCAL_ENDPT']);
}