所以在生成 AWS SAM 模板 'web-backend' lambda 后,我的函数没有连接到我的 dynamodb docker 实例。
这是我正在使用的 JavaScript 代码:
const docClient = new dynamoDb.DocumentClient({region: 'localhost', endpoint: 'http://127.0.0.1:8000/'});
const data = await docClient.scan(params).promise();
并在我的终端中运行:
sam local start-api --docker-network lambda-local
&
docker run -d -p 8000:8000 --network=lambda-local amazon/dynamodb-local
点击生成的端点http://127.0.0.1:3000/
,终端会给出错误:
ERROR Invoke Error {"errorType":"NetworkingError","errorMessage":"connect ECONNREFUSED 127.0.0.1:8000","code":"NetworkingError","message":"connect ECONNREFUSED 127.0.0.1:8000","errno":"ECONNREFUSED","syscall":"connect","address":"127.0.0.1","port":8000,"region":"localhost","hostname":"localhost","retryable":true,"time":"2021-01-03T15:21:11.468Z","stack":["Error: connect ECONNREFUSED 127.0.0.1:8000"," at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)"]}
如果我尝试通过邮递员击中 dynamodb,我会得到:
{
"__type": "com.amazonaws.dynamodb.v20120810#MissingAuthenticationToken",
"message": "Request must contain either a valid (registered) AWS access key ID or X.509 certificate."
}
所以 dynamodb 服务器正在运行,因为我可以通过 noSQL 工作台连接到它,但我的假设是 sam 本地 api 的 docker 容器看不到 dynamodb 的 docker 容器?
任何想法将不胜感激!谢谢。