web-dev-qa-db-ja.com

どういうわけか、AWS DynamoDBのローカルコピーを実行できますか?

AWS DynamoDBを使用するコードを記述したい場合、ローカル開発環境で実行する方法はありますか?それとも実際の製品を使用する必要がありますか?

AWSで開発環境をプロビジョニングする必要がありますか? vimを使用する必要があり、お気に入りのIDEにアクセスできないため、これは煩わしいことではありませんか?または、書いたものが機能しているかどうかを確認するたびに、コードをプッシュする必要がありますか?

17
Yasser1984

うん-あなたは今できる。

http://aws.typepad.com/aws/2013/09/dynamodb-local-for-desktop-development.htmlhttp://docs.aws.Amazon.com/ amazondynamodb/latest/developerguide/Tools.html

警告は次のとおりです。

  • DynamoDB Localは、プロビジョニングされたスループット設定を無視します
  • DynamoDBLocalには耐久性や可用性がありませんSLAであり、本番環境での使用はお勧めしません
21
snarkyboojum

ローカルで実行できるDynamoDBの軽量バージョンがあります。以下を参照してください。

https://aws.Amazon.com/blogs/aws/dynamodb-local-for-desktop-development/

すべてのセットアップ手順を覚えておくのは少し面倒だと思ったので、それをラップするDockerイメージも作成しました。つまり、次のコマンドでDynamoDBLocalを実行することもできます。

# Run DynamoDB
docker run -p 8000:8000 dwmkerr/dynamodb

# Open the Shell to show it's working!
open http://localhost:8000/Shell

Dockerイメージは次の場所で入手できます。

https://hub.docker.com/r/dwmkerr/dynamodb/

3
Dave Kerr

はい、実行できます。使用することをお勧めします jcabi-dynamodb-maven-plugin このプロセスを自動化します(Apache Mavenを使用している場合)。

この投稿を見てください: http://www.yegor256.com/2014/05/01/dynamodb-local-maven-plugin.html

3
yegor256

MacOSでは、brewを使用してバックグラウンドサービスとしてインストールして実行できます。

Brewをお持ちでない場合はダウンロードしてください:

BrewはMacOSのパッケージマネージャーです

Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

Brewを使用してDynamoDBローカルをインストールします:

brew install dynamodb-local

DynamoDBをローカルサービスとして実行します:

これにより、マシンを再起動したときにDynamoDBローカルが確実に起動します。

brew services start dynamodb-local

DynamoDB Localを1回限りのスタートアップとして実行します:

このメソッドは、DynamoDBローカルを1回実行します。再起動時にこれを再実行する必要があります。

/usr/local/bin/dynamodb-local

次に、ブラウザーからシェルでdynamoDBをヒットできます:

http://localhost:8000/Shell/

Javascriptを使用してDynamoDBと対話できます。

DynamoDB Javascript Shell in browser

AWS DynamoDBインスタンスをローカルで実行する の詳細については、この記事を参照してください

2
anataliocs

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();
    }
}
1
mkobit

DynamoDB Localにはいくつかのプロダクションパリティの欠陥があり、 https://github.com/mhart/dynalite で入手可能な「dynalite」と呼ばれるライブAPIと一致させようとする代替のオープンソースローカル実装があります。

1
Adam Johnson

DynamoDBを実際に使用せずにコードをテストする方法は確かにあります。

私は個人的にMockitoモックを使用して、単体テストでサービスからの応答をモックします。

単体テスト以外の実験目的で「ローカル」サーバーが必要な場合は、コミュニティによって維持されているいくつかのオープンソース実装があります。たとえば、 Alternator for Java AWSはいくつかをリストしています ここ

0
prestomation

2018年8月 Amazonが発表 新しい Dockerイメージ Amazon DynamoDBLocalがオンボードになっています。 JARをダウンロードして実行したり、サードパーティのOS固有のバイナリを使用して追加したりする必要はありません。

Dockerコンテナを起動するのと同じくらい簡単です。

docker run -p 8000:8000 Amazon/dynamodb-local

上記のように、ローカル開発のために手動で行うことも、CIパイプラインで使用することもできます。多くのCIサービスは、パイプライン中に追加のコンテナーを開始する機能を提供し、テストの依存関係を提供できます。

0
madhead