Docker上的无服务器离线和DynamoDB本地

问题描述

我想使用DynamoDB本地docker在无服务器上进行培训。 但是,使用此代码,我得到了一个空表列表:

import { DynamoDB,Endpoint } from "aws-sdk";

export const handler = async (event,context,cb) => {
   const ddb = new DynamoDB();

   if (process.env["DYNAMO_LOCAL_ENDPT"]) {
     ddb.endpoint = new Endpoint(process.env["DYNAMO_LOCAL_ENDPT"]);
    // the local env variable = http://localhost:8000
   }

   const tables = await ddb.listTables().promise();

  const response = {
    statusCode: 200,body: JSON.stringify({
    message: "Hello World!",tables,}),};
  return response;
};

但是,如果我在命令上使用Powershell上的AWS CLI执行相同的操作,

aws dynamodb list-tables --endpoint-url http://localhost:8000

我在docker上的2个表得到正确的响应。

您能告诉我我的代码有什么问题吗?

解决方法

DynamoDB docker区域与您的AWS CLI中配置的区域相同。

即使您在本地工作,无服务器Yaml中的区域也必须相同(默认情况下为us-east-1)。