如果您想编写代码以使用AWS DynamoDB,有没有办法让它在您的本地开发环境中运行?或者您是否必须使用实际产品?
您是否必须在AWS上配置开发环境?这不是很烦人,因为你必须使用vim并且无法访问你喜欢的IDE吗?或者,每当你想看看你写的是否有效时,你必须将代码推送到它?
答案 0 :(得分:21)
http://aws.typepad.com/aws/2013/09/dynamodb-local-for-desktop-development.html http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.html
警告包括:
答案 1 :(得分:3)
有一个可以在本地运行的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's working!
open http://localhost:8000/shell
Docker镜像位于:
答案 2 :(得分:2)
是的,您可以运行它,我建议使用jcabi-dynamodb-maven-plugin
自动执行此过程(如果您使用的是Apache Maven)。
看看这篇文章:http://www.yegor256.com/2014/05/01/dynamodb-local-maven-plugin.html
答案 3 :(得分:2)
DynamoDB Local有几个生产奇偶校验缺陷,有一个替代的开源本地实现,试图匹配更多名为“dynalite”的实时API。可在https://github.com/mhart/dynalite获得。
答案 4 :(得分:2)
如果您可以从Maven存储库中提取并使用基于JVM的语言,则可以now run it in the same process:
<!--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();
}
}
答案 5 :(得分:2)
在MacOS上,您可以使用brew:
安装并运行它作为后台服务如果您没有,请下载Brew:
Brew是MacOS的包管理器
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
使用Brew安装DynamoDB Local:
brew install dynamodb-local
将DynamoDB作为本地服务运行:
这将确保在重新启动计算机时启动DynamoDB本地。
brew services start dynamodb-local
将DynamoDB Local作为一次性启动运行:
此方法将在本地运行DynamoDB一次。您需要在重新启动时重新运行它。
/usr/local/bin/dynamodb-local
然后,您可以在浏览器的shell中点击dynamoDB:
http://localhost:8000/shell/
您可以使用Javascript与DynamoDB进行交互。
查看此文章以获取有关Running a AWS DynamoDB instance locally
的更详细说明答案 6 :(得分:0)
有一些方法可以在不实际使用DynamoDB的情况下测试代码。
我个人使用Mockito模拟来模拟我的单元测试中的服务响应。
如果你想要一个'本地'服务器用于实验目的,除了单元测试之外,还有一些由社区维护的开源实现,例如Alternator for Java AWS列出了一些here:
答案 7 :(得分:0)
2018年8月Amazon announced新Docker image上安装了Amazon DynamoDB Local。它不需要下载和运行任何JAR,也不需要使用第三方特定于操作系统的二进制文件进行添加。
这就像启动Docker容器一样简单:
docker run -p 8000:8000 amazon/dynamodb-local
如上所述,您可以手动进行本地开发,也可以在CI管道中使用它。许多CI服务都提供了在管道中启动其他容器的功能,这些容器可以为测试提供依赖关系。