【发布时间】: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