Запустите и подключитесь к Dynamodb Local в контейнере.

Мы используем Dynamodb Local для проведения интеграционного тестирования. Он запускается внутри контейнера, и внутри этого контейнера нам нужно подключиться к Dynamodb локально. Вот как инициализируется DocumentClient:

const doc = new AWS.DynamoDB.DocumentClient({
  region: 'localhost',
  endpoint: 'http://localhost:5000/'
});

Однако, когда я пытаюсь подключиться, попробуйте пакетную запись, например doc.batchWrite(buildSetData).promise(), обещание никогда не выполняется. Для тех, кому интересно, пакетная запись выполняется на JavaScript, и .promise() только что вернул обещание JS.

Однако, когда я запускаю свою установку локально (вне док-контейнера), все работает отлично.

TLDR: почему я не могу подключиться к DynamoDb Local внутри своего контейнера.


person Barry Steyn    schedule 06.06.2019    source источник


Ответы (1)


Проблема была связана с тем, что в среде докеров не было учетных данных. Я предположил, что dynamodb-local не понадобятся учетные данные AWS, и хотя он не подключается к AWS, dynamodb-local все еще нуждается в них (на самом деле, они могут быть даже бессмысленными учетными данными, пока ключи присутствуют) .

TLDR: если у кого-то еще есть эта проблема, просто определите следующие ключи в вашей среде докера:

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
person Barry Steyn    schedule 07.06.2019