当前位置: 首页 > 知识库问答 >
问题:

在本地docker localhost:8000中使用dynamodb,并在localhost:4500上运行无服务器框架无服务器脱机应用程序

麻超
2023-03-14

我希望将状态添加到本地运行的无服务器框架节点应用程序。我遇到了官方的DynamoDb docker映像,我想使用无服务器框架,这个在docker上运行的Dynamodb实例在localhost:8000公开,而不使用sls安装的Dynamodb版本。

我已经尝试将其正常用于nodejs aws sdk,并将endpoint和区域配置为本地。新的用户表已经创建,可以通过aws cli访问数据库——endpointlocalhost: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);

//serverless.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本地的Dynamodb得到响应,但AWS-sdk无法连接到它。上述超文本传输协议事件express.js运行良好。

共有1个答案

柳韬
2023-03-14

如果是本地的,请尝试更新

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'
});
 类似资料:
  • 本文向大家介绍如何在服务器可用时使Ember.js应用脱机并与服务器同步?,包括了如何在服务器可用时使Ember.js应用脱机并与服务器同步?的使用技巧和注意事项,需要的朋友参考一下 使用ember-localstorage适配器。 示例 您需要定义要用于客户端存储的适配器-

  • 我对计划中的应用程序的设计有一点问题,特别是数据库引擎和无服务器/非无服务器。目标是一个通过RESTAPI与数据库对话的Web应用程序。RESTAPI本身实际上只是CRUD操作,因此在我看来,无服务器aproach(AWS Lambda)非常适合。因此,最有效的数据库可能是DynamoDB(NoSQL)。 我熟悉RDBMS,对NoSQL数据库知之甚少。 应用程序的模式尚未完成,应该可以在以后进行扩

  • 问题内容: 我正在调试一些必须在我的虚拟机上运行的python脚本。而且,我更喜欢在本地(虚拟机外部)编辑脚本。因此,我发现每次都将脚本修改为虚拟机 很繁琐。谁能提出一些有效的方法? 特别是,我想知道是否可以在远程PVM上执行python脚本。像这样: 问题答案: 可以使用ssh。Python接受连字符(-)作为执行标准输入的参数, 运行 python –help 以获得更多信息。

  • 问题内容: 当我运行Spring MVC应用程序时,出现此异常,服务器无法启动。 请帮助我解决此问题。 异常StackTrace: 问题答案: 由于互联网连接不良,jar文件可能已损坏。尝试删除文件夹的内容。然后右键单击您的项目,选择“Maven” ,“ 更新项目” ,然后选中“ 强制更新快照/版本” 。如果您确定只有一个Jar文件有问题,则只需删除其文件夹。

  • 有没有办法从无服务器上启用X射线。Lambda函数的yml?我已在文件中添加了X射线权限: 但高级跟踪仍需要在AWS控制台中手动启用。

  • 问题内容: 我将Selenium与Java(1.8)中的Chromedriver结合使用来进行一些自动的网络爬网: 我正在尝试迁移到Ubuntu 16.04服务器。在服务器上,我安装了Ubuntu chromedriver版本2.37,chrome版本65。根据chromedriver文档,这些版本兼容。我已经更改了指定chromedriver在Ubuntu中的位置的代码: 在运行程序之前,我先启