15

如果您想編寫代碼以使用AWS DynamoDB,有什麼方法讓它在您的本地開發環境中運行?或者你是否必須使用實際的產品?您能以某種方式運行AWS DynamoDB的本地副本嗎?

您是否必須在AWS上配置開發環境?是不是很煩人,因爲你不得不使用vim而不能訪問你最喜歡的IDE?或者每次你想看看你寫的是否正在工作時,你都必須將代碼推送到它。

回答

21

是的 - 現在就可以。

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

注意事項包括:

  • DynamoDB本地忽略您配置的吞吐量設置
  • DynamoDB本地不具備持久性或可用性SLA,不建議在生產中使用
+0

這是我的組織龐大的消息,但我們使用博託不幸的是,不支持連接到本地實例。希望他們能儘快實施。 http://goo.gl/VPXgEU – feathj

+0

這是超級越野車,只是爲了警告人們。 –

0

在實際使用DynamoDB的情況下測試代碼當然有一些方法。

我個人使用Mockito mock來模擬我單元測試中的服務響應。

如果你想爲實驗目的的「本地」服務器超越單元測試存在由社區維護的一些開源實現,如Alternator for Java AWS列出了一些here

1

DynamoDB當地擁有數條生產平價的缺陷,有可能嘗試匹配實時API更被稱爲「邦奇」提供https://github.com/mhart/dynalite替代開源本​​地執行。

+0

嗨,如果你已經使用dynalite,你能告訴我如何在dynalite上創建一個新表格。 – Somil

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

在MacOS上,您可以使用brew安裝並運行它作爲後臺服務:

下載Brew如果您沒有i T:

BREW是適用於MacOS

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

安裝DynamoDB本地使用的Brew的軟件包管理器:

brew install dynamodb-local 

運行DynamoDB作爲本地服務:

這將確保DynamoDB本地在您重新啓動機器時啓動。

brew services start dynamodb-local 

運行DynamoDB本地的一次性啓動:

這種方法將運行DynamoDB本地一次。您將需要重新啓動時重新運行此操作。

/usr/local/bin/dynamodb-local 

然後,您可以從您的瀏覽器炮彈擊中dynamoDB:

http://localhost:8000/shell/ 

您可以使用JavaScript您的DynamoDB交互。

DynamoDB Javascript shell in browser

查看這篇文章的Running a AWS DynamoDB instance locally

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 

泊塢窗圖像,請訪問:

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

相關問題