Использование dynamicodb в локальном докере localhost: 8000 с автономным автономным приложением, работающим на сервере, работающим на localhost: 4500 - PullRequest
0 голосов
/ 10 июля 2019

Я ищу, чтобы добавить состояние в приложение узла безсерверной инфраструктуры, работающее локально.Я наткнулся на официальный образ докера DynamoDb, я хотел бы использовать безсерверный фреймворк с этим экземпляром DynamodB, работающим на докере, выставленном на localhost: 8000 без использования версии SLS для установки DynamodB.

Я пытался использовать его с обычнымnodejs aws-sdk с конечной точкой и регионом, настроенными на локальный.Новая таблица пользователей уже создана, и база данных доступна через aws-cli --endpoint localhost: 8000, но не может получить доступ к экземпляру Dynamodb через nodejs aws-sdk

// 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

Я ожидал получить ответ от dynamicodb в Docker Local, но aws-sdk не можетподключиться к нему.Вышеуказанные http события идут в express.js, который хорошо работает.

...