【问题标题】:Serverless offline and DynamoDB local on dockerDocker 上的无服务器离线和本地 DynamoDB
【发布时间】:2020-10-24 08:12:51
【问题描述】:

我想使用 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 张桌子得到了正确的响应。

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

【问题讨论】:

  • 我认为当您在 docker 中测试时,http://localhost:8000 将引用 docker 中的 localhost,而不是您的主机。当您使用 aws cli 时,您在主机操作系统中使用 localhost,而不是在 docker 容器中。
  • 我不使用 docker CLI,而是使用 powershell 上的 AWS CLI
  • 那么你如何运行你的 lambda 代码呢?此外,您是否验证了使用 AWS CLI 和运行函数时区域相同?
  • 我用无服务器离线插件运行它

标签: amazon-web-services docker amazon-dynamodb serverless-framework serverless-offline


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2022-11-03
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多