Можете ли вы запустить локальную копию AWS DynamoDB?
Если вы хотите написать код для использования AWS DynamoDB, есть ли способ запустить его в локальной среде разработки? Или вам нужно использовать фактический продукт?
Вам нужно создать среду разработки для AWS? Разве это не раздражает, потому что вам придется работать с vim и не иметь доступа к вашей любимой среде IDE? Или вам нужно нажимать на него код каждый раз, когда вы хотите узнать, работает ли то, что вы написали?
Ответы
Ответ 1
Yep - теперь вы можете.
http://aws.typepad.com/aws/2013/09/dynamodb-local-for-desktop-development.html
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.html
Предостережения включают:
- DynamoDB Local игнорирует ваши настроенные параметры пропускной способности.
- DynamoDB Local не обладает долговечностью или доступностью SLA и не рекомендуется для использования в продуктах.
Ответ 2
Да, вы можете запустить его, и я бы рекомендовал использовать jcabi-dynamodb-maven-plugin
для автоматизации этого процесса (если вы используете Apache Maven).
Посмотрите на это сообщение: http://www.yegor256.com/2014/05/01/dynamodb-local-maven-plugin.html
Ответ 3
В MacOS вы можете установить и запустить его в качестве фоновой службы, используя brew:
Загрузите Brew, если у вас его нет:
Brew - менеджер пакетов для MacOS
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
Установить DynamoDB Local с помощью brew:
brew install dynamodb-local
Запустить DynamoDB как локальную службу:
Это обеспечит запуск DynamoDB при перезагрузке вашего компьютера.
brew services start dynamodb-local
Запустить DynamoDB Local как однократный запуск:
Этот метод будет запускать DynamoDB локально один раз. Вам нужно будет повторно запустить это при перезагрузке.
/usr/local/bin/dynamodb-local
Затем вы можете нажать кнопку dynamoDB в оболочке из браузера:
http://localhost:8000/shell/
Вы можете взаимодействовать с вашим DynamoDB с помощью Javascript.
![DynamoDB Javascript shell в браузере]()
Просмотрите эту статью для более подробного объяснения Запуск экземпляра AWS DynamoDB локально
Ответ 4
Существует небольшая версия DynamoDB, которую можно запустить локально, см.
https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/
Мне было немного больно запомнить все этапы настройки, поэтому также был создан Docker Image, который его обертывает, что означает, что вы также можете запустить DynamoDB Local с помощью этой команды:
# Run DynamoDB
docker run -p 8000:8000 dwmkerr/dynamodb
# Open the shell to show it working!
open http://localhost:8000/shell
Изображение Docker доступно по адресу:
https://hub.docker.com/r/dwmkerr/dynamodb/
Ответ 5
У DynamoDB Local есть несколько недостатков, связанных с производительностью, существует альтернативная локальная реализация с открытым исходным кодом, которая пытается сопоставить живой API более называемый "dynalite", доступный по адресу https://github.com/mhart/dynalite.
Ответ 6
Если вы можете вытащить из репозитория Maven и использовать язык на основе JVM, вы можете запустить его в том же процессе:
<!--Dependency:-->
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>DynamoDBLocal</artifactId>
<version>1.10.5.1</version>
</dependency>
</dependencies>
<!--Custom repository:-->
<repositories>
<repository>
<id>dynamodb-local</id>
<name>DynamoDB Local Release Repository</name>
<url>http://dynamodb-local.s3-website-us-west-2.amazonaws.com/release</url>
</repository>
</repositories>
И вот пример из awslabs/aws-dynamodb-examples Репозиторий Github:
AmazonDynamoDB dynamodb = null;
try {
// Create an in-memory and in-process instance of DynamoDB Local that skips HTTP
dynamodb = DynamoDBEmbedded.create();
// use the DynamoDB API with DynamoDBEmbedded
listTables(dynamodb.listTables(), "DynamoDB Embedded");
} finally {
// Shutdown the thread pools in DynamoDB Local / Embedded
if(dynamodb != null) {
dynamodb.shutdown();
}
}
// Create an in-memory and in-process instance of DynamoDB Local that runs over HTTP
final String[] localArgs = { "-inMemory" };
DynamoDBProxyServer server = null;
try {
server = ServerRunner.createServerFromCommandLineArgs(localArgs);
server.start();
dynamodb = new AmazonDynamoDBClient();
dynamodb.setEndpoint("http://localhost:8000");
// use the DynamoDB API over HTTP
listTables(dynamodb.listTables(), "DynamoDB Local over HTTP");
} finally {
// Stop the DynamoDB Local endpoint
if(server != null) {
server.stop();
}
}
Ответ 7
В августе 2018 года Amazon анонсировал новый образ Docker с встроенным Amazon DynamoDB Local. Он не требует загрузки и запуска каких-либо JAR файлов, а также добавления с использованием сторонних специфичных для ОС двоичных файлов.
Это так же просто, как запуск контейнера Docker:
docker run -p 8000:8000 amazon/dynamodb-local
Вы можете сделать это вручную для локальной разработки, как описано выше, или использовать его в своем конвейере CI. Многие сервисы CI предоставляют возможность запуска дополнительных контейнеров во время конвейера, которые могут предоставить зависимости для ваших тестов.
Ответ 8
Есть, конечно, способы тестирования вашего кода, фактически не используя DynamoDB.
Я лично использую Mockito mocks для издевательства ответов от службы в моем unit test.
Если вам нужен "локальный" сервер для экспериментов за пределами модульных тестов, существуют некоторые версии с открытым исходным кодом, поддерживаемые сообществом, например "Генератор для Java" AWS перечисляет несколько здесь: