Подтвердить что ты не робот

Можете ли вы запустить локальную копию AWS DynamoDB?

Если вы хотите написать код для использования AWS DynamoDB, есть ли способ запустить его в локальной среде разработки? Или вам нужно использовать фактический продукт?

Вам нужно создать среду разработки для AWS? Разве это не раздражает, потому что вам придется работать с vim и не иметь доступа к вашей любимой среде IDE? Или вам нужно нажимать на него код каждый раз, когда вы хотите узнать, работает ли то, что вы написали?

4b9b3361

Ответ 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 и не рекомендуется для использования в продуктах.

Ответ 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 перечисляет несколько здесь: