Правильный способ использования нового DocumentClient () - PullRequest
0 голосов
/ 06 июля 2018

Иногда я вижу следующую ошибку в моем экземпляре ec2, который интенсивно использует DynamoDB

{ message: 'Could not load credentials from any providers',
code: 'CredentialsError',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '169.254.169.254',
port: 80,
time: 2018-07-05T10:02:37.690Z,
originalError: 
{ code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '169.254.169.254',
port: 80,
message: 'connect ECONNREFUSED 169.254.169.254:80' } } }

То, как я использую AWS SDK для подключения и получения данных из DynamoDB, похоже на следующее

'use strict'
const BluebirdPromise = require('bluebird')
AWS.config.setPromisesDependency(BluebirdPromise)
const DocumentClient = AWS.DynamoDB.DocumentClient

class DynamoOne {

  get({
    key
  }) {
    return new DocumentClient().get({ // creating new instance every time i want to get Item
        Key: key,
        TableName: 'TABLE_NAME',
        ConsistentRead: consistent,
      })
      .promise()
      .catch(e => console.trace(key, e))
  }
}

new DynamoOne.get({
  id: 1
}).then((item) => {
  console.log(1, item)
})

Это правильный способ его использования?или я должен создать new DocumentClient() один раз и использовать его снова, как показано в следующем коде

'use strict'
const BluebirdPromise = require('bluebird')
AWS.config.setPromisesDependency(BluebirdPromise)
const DocumentClient = new AWS.DynamoDB.DocumentClient() // creating new instance once

class DynamoTwo {

  get({
    key
  }) {
    return DocumentClient.get({ // reuse DocumentClient
        Key: key,
        TableName: 'TABLE_NAME',
        ConsistentRead: consistent,
      })
      .promise()
      .catch(e => console.trace(key, e))
  }

}


new DynamoTwo.get({
  id: 1
}).then((item) => {
  console.log(1, item)
})

Какой код является правильным DynamoOne или DynamoTwo?

1 Ответ

0 голосов
/ 08 июля 2018

После исследования и запрос в репозитории github aws Я обнаружил, что правильный способ - использовать DynamoTwo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...