Node.js 在本地docker localhost:8000中使用dynamodb,并在localhost:4500上运行无服务器框架无服务器脱机应用程序

Node.js 在本地docker localhost:8000中使用dynamodb,并在localhost:4500上运行无服务器框架无服务器脱机应用程序,node.js,aws-lambda,serverless-framework,dynamo-local,Node.js,Aws Lambda,Serverless Framework,Dynamo Local,我希望向本地运行的无服务器框架节点应用程序添加状态。我遇到了官方的DynamoDb docker映像,我想使用无服务器框架,在localhost:8000上公开的docker上运行这个DynamoDb实例,而不使用sls安装DynamoDb版本 我已经尝试将其正常用于nodejs aws sdk,并将端点和区域配置为本地。新的用户表已经创建,可以通过aws cli访问数据库——端点localhost:8000,但无法通过nodejs aws sdk访问dynamodb实例 //server.js

我希望向本地运行的无服务器框架节点应用程序添加状态。我遇到了官方的DynamoDb docker映像,我想使用无服务器框架,在localhost:8000上公开的docker上运行这个DynamoDb实例,而不使用sls安装DynamoDb版本

我已经尝试将其正常用于nodejs aws sdk,并将端点和区域配置为本地。新的用户表已经创建,可以通过aws cli访问数据库——端点localhost:8000,但无法通过nodejs aws sdk访问dynamodb实例

//server.js

const AWS = require('aws-sdk');
AWS.config.update({
  region: 'localhost',
  endpoint: "http://127.0.0.1:8000"
});

const ddb = new AWS.DynamoDB.DocumentClient();

const params = {
    "TableName":tableName,
    "IndexName":"email-index",
    "KeyConditions":{
      "email":{
        "ComparisonOperator": "EQ",
        "AttributeValueList": [{"S":email}]
      }
    }
  };

ddb.query(params, (err,data) => {

    console.log('query', data);  // returns query null
}
//handler.js

const server = require('./server');
const http = require('serverless-http');

module.exports.client = http(server);
//serverless.yml

provider:
  name: aws
  runtime: nodejs10.16.0
  region: ca-central-1
  profile: default

iamRoleStatements:
- Effect: Allow
      Action:
        - dynamodb:DescribeTable
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:CreateTable
        - dynamodb:ListTables
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:ddblocal:000000000000:table/user"

plugins:
  - serverless-offline

functions:
  client:
    handler: handler.client
    events:
      - http: GET /
      - http: 'GET /{param+}'
      - http:
          path: /signin
          method: post
          cors: true
      - http:
          path: /signup
          method: post
          cors: true
我希望从docker local中的dynamodb获得响应,但aws sdk无法连接到它。上面的http事件转到express.js,它运行良好。

如果是本地的,请尝试更新

let dynamoDb = new AWS.DynamoDB.DocumentClient();
if (process.env.STAGE === 'dev') dynamoDb = new AWS.DynamoDB.DocumentClient({
    region: 'localhost',
    endpoint: 'http://localhost:8000',
    accessKeyId: 'DEFAULT_ACCESS_KEY',
    secretAccessKey: 'DEFAULT_SECRET'
});
如果是本地的,请尝试更新

let dynamoDb = new AWS.DynamoDB.DocumentClient();
if (process.env.STAGE === 'dev') dynamoDb = new AWS.DynamoDB.DocumentClient({
    region: 'localhost',
    endpoint: 'http://localhost:8000',
    accessKeyId: 'DEFAULT_ACCESS_KEY',
    secretAccessKey: 'DEFAULT_SECRET'
});