Использование клиента БД Dynamo в моем собственном веб-крюке ask-sdk - PullRequest
1 голос
/ 09 июня 2019

Я использовал свой собственный webhook с использованием ask-sdk и развернут в моем экземпляре ec2.Теперь я хочу использовать DynamoDB в качестве DynamoDbPersistenceAdapter, но я не получаю никакой информации о том, как это сделать.

DynamoDbPersistenceAdapter потребуются ключи AWS и имя таблицы, а также некоторые подробности для динамо-базы данных, но где инициализировать?Я нашел код, но ничего такого нет:

persistenceAdapter = new DynamoDbPersistenceAdapter({ 
        tableName: 'global_attr_table',
        createTable: true,
        partitionKeyGenerator: keyGenerator
    });

1 Ответ

1 голос
/ 17 июня 2019

Возможно, это можно решить, добавив переменные среды и настроив профиль CLI AWS:

Вот как вы настраиваете профиль CLI AWS: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html

После настройки профиля с информацией о доступе к AWS вы можете экспортировать переменные среды в командной строке или в сценарии оболочки

$> export AWS_PROFILE=YourNewAWSCLIProfileName
$> export AWS_REGION=us-east-1
$> export AWS_DEFAULT_REGION=us-east-1

и вы можете проверить, установлены ли эти переменные, набрав

$> echo $AWS_PROFILE
$> echo $AWS_REGION
$> echo $AWS_DEFAULT_REGION

Это то, что я использую. Если по какой-то причине это не сработает, вы можете узнать, как можно добавить клиент DynamoDB:

Попытка решить другую проблему, поэтому позвольте мне решить вашу, когда я буду проходить через мою: В: node_modules / ask-sdk / dist / skill / factory / StandardSkillFactory.js есть ссылка на что-то похожее на то, что у вас есть выше

new ask_sdk_dynamodb_persistence_adapter_1.DynamoDbPersistenceAdapter({
     tableName: thisTableName,
     createTable: thisAutoCreateTable,
     partitionKeyGenerator: thisPartitionKeyGenerator,
     dynamoDBClient: thisDynamoDbClient,
})

Полагаю, вам нужно создать экземпляр DynamoDbClient, на который я нашел ссылку в документации по AWS SDK.

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/dynamodb-example-document-client.html

Вы должны установить свой собственный сервис: В: node_modules / aws-sdk / lib / dynamicodb / document_client.js

  /**
   * Creates a DynamoDB document client with a set of configuration options.
   *
   * @option options params [map] An optional map of parameters to bind to every
   *   request sent by this service object.
   * @option options service [AWS.DynamoDB] An optional pre-configured instance
   *  of the AWS.DynamoDB service object to use for requests. The object may
   *  bound parameters used by the document client.
   * @option options convertEmptyValues [Boolean] set to true if you would like
   *  the document client to convert empty values (0-length strings, binary
   *  buffers, and sets) to be converted to NULL types when persisting to
   *  DynamoDB.
   * @see AWS.DynamoDB.constructor
   *
   */
  constructor: function DocumentClient(options) {
    var self = this;
    self.options = options || {};
    self.configure(self.options);
  },

  /**
   * @api private
   */
  configure: function configure(options) {
    var self = this;
    self.service = options.service;
    self.bindServiceObject(options);
    self.attrValue = options.attrValue =
      self.service.api.operations.putItem.input.members.Item.value.shape;
  },

  /**
   * @api private
   */
  bindServiceObject: function bindServiceObject(options) {
    var self = this;
    options = options || {};

    if (!self.service) {
      self.service = new AWS.DynamoDB(options);
    } else {
      var config = AWS.util.copy(self.service.config);
      self.service = new self.service.constructor.__super__(config);
      self.service.config.params =
        AWS.util.merge(self.service.config.params || {}, options.params);
    }
  },

Я не уверен, как могут выглядеть эти параметры.

...