40

亚马逊为他们的 Dynamodb 产品提供了一个本地模拟器,示例仅在 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 }

如何让 Dynamodb_local 在 Node 中工作?

4

4 回答 4

55

您应该按照这篇文设置您的 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);
});
于 2013-11-09T11:19:38.947 回答
6

对于节点,请执行以下操作:

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 上运行。

于 2018-04-05T21:26:01.287 回答
2

这是我的做法,相同的代码在本地或 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']);
}
于 2019-07-31T15:26:58.553 回答
0

如果您将 Nodejs 与 Typescript 一起使用,则此代码可能不起作用。因为没有属性调用端点。

AWS.config.update({
  accessKeyId: AWSaccessKeyId,
  secretAccessKey: AWSsecretAccessKey,  
  region: AWSregion,
  endpoint: AWSendpoint 
});

你可以使用任何一个,

dyn= new AWS.DynamoDB({ endpoint: new AWS.Endpoint('http://localhost:8000') });

或者

AWS.config.dynamodb = {
  endpoint: new Endpoint('http://localhost:8000'),
  region: 'us-east-1'
}
于 2022-01-31T09:44:55.163 回答