gpt4 book ai didi

node.js - 在本地 docker localhost :8000 with serverless-framework serverless-offline application running on localhost:4500 中使用 dynamodb

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:36 27 4
gpt4 key购买 nike

我希望向本地运行的无服务器框架 Node 应用程序添加状态。我遇到了官方的 DynamoDb docker 镜像,我想使用无服务器框架以及在 localhost:8000 公开的 docker 上运行的 dynamodb 实例,而不使用 sls install dynamodb 版本。

我尝试过将它与nodejs aws-sdk 一起正常使用,并将端点和区域配置为本地。新的用户表已创建,并且可以通过 aws-cli --endpoint 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);

//无服务器.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'
});

关于node.js - 在本地 docker localhost :8000 with serverless-framework serverless-offline application running on localhost:4500 中使用 dynamodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56975689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com