15

Se si desidera scrivere codice per utilizzare AWS DynamoDB, esiste un modo per eseguirlo nel proprio ambiente di sviluppo locale? O devi usare il prodotto reale?È possibile eseguire in qualche modo una copia locale di AWS DynamoDB?

È necessario eseguire il provisioning di un ambiente di sviluppo su AWS? Non è fastidioso perché dovresti lavorare con Vim e non avere accesso al tuo IDE preferito? O devi premere il codice ogni volta che vuoi vedere se quello che hai scritto funziona?

risposta

21

Yep - è ora possibile.

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

Avvertenze includono:

  • DynamoDB locale ignora le impostazioni di throughput provisioning
  • DynamoDB locale non ha una durata o la disponibilità SLA e non è raccomandato per l'uso in produzione
+0

Questa è una grande notizia per la mia organizzazione, ma stiamo usando Boto che purtroppo, non supporta la connessione all'istanza locale. Spero che lo implementeranno presto. http://goo.gl/VPXgEU – feathj

+0

È super buggy, solo per avvisare le persone. –

0

Esistono certamente modi per testare il codice senza utilizzare effettivamente DynamoDB.

Personalmente utilizzo Mockito per deridere le risposte dal servizio nel mio test di unità.

Se si desidera che un server di 'locale' per scopi di sperimentazione al di là di unità di test ci sono alcune implementazioni open source mantenuti dalla comunità, per esempio Alternator for Java AWS elenca alcuni here:

1

DynamoDB locale ha diversi difetti di produzione-parità, v'è un'implementazione locale alternativa open source che cerca di far corrispondere l'API vivere più chiamato 'Dynalite' disponibile presso https://github.com/mhart/dynalite.

+0

Ciao, se hai usato la dinalite, puoi dirmi come posso creare una nuova tabella su dinalite. – Somil

2

se si può tirare da un repository Maven e si utilizza un linguaggio basato JVM, è possibile 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> 

E qui è un esempio tratto dal repository 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

Su MacOS puoi installarlo ed eseguirlo come servizio in background usando brew:

Scarica Brew se non hai i t:

Brew è un gestore di pacchetti per MacOS

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

Installa DynamoDB locale utilizzando Brew:

brew install dynamodb-local 

Run DynamoDB come un servizio locale:

Questo assicurerà che DynamoDB locale si avvii quando si riavvia il computer.

brew services start dynamodb-local 

Run DynamoDB locale come una startup di una volta:

Questo metodo verrà eseguito DynamoDB uno ora locale. Sarà necessario rieseguire questo al riavvio.

/usr/local/bin/dynamodb-local 

Poi si può colpire DynamoDB in un guscio dal browser:

http://localhost:8000/shell/ 

è possibile interagire con il vostro DynamoDB utilizzando Javascript.

DynamoDB Javascript shell in browser

Vedi questo articolo per una spiegazione più dettagliata del Running a AWS DynamoDB instance locally

3

Esiste una versione leggera di DynamoDB che può essere eseguito a livello locale, vedi:

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

ho trovato un po 'di dolore per ricordare tutti i passaggi di installazione, quindi anche creato un'immagine Docker che lo avvolge, il che significa che puoi anche eseguire DynamoDB Local con questo comando:

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

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

L'immagine Docker è disponibile all'indirizzo:

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

Problemi correlati