Note per l'utilizzo locale di DynamoDB
A eccezione dell'endpoint, le applicazioni eseguite con la versione scaricabile di Amazon DynamoDB dovrebbero funzionare anche con il servizio Web DynamoDB. Tuttavia, quando si utilizza DynamoDB in locale, è necessario tenere presente quanto riportato di seguito:
-
Se si utilizza l'opzione
-sharedDb, DynamoDB crea un file di database unico denominato shared-local-instance.db. Tutti i programmi che si connettono a DynamoDB hanno accesso a questo file. Se elimini il file, tutti i dati in esso archiviati andranno persi. -
Se si omette
-sharedDb, il file di database viene denominato myaccesskeyid_region.db, con l'ID chiave di accesso AWS e la regione AWS così come appaiono nella configurazione dell'applicazione. Se elimini il file, tutti i dati in esso archiviati andranno persi. -
Se si utilizza l'opzione
-inMemory, DynamoDB non scrive alcun file di database. Tutti i dati verranno invece scritti in memoria e non verranno salvati all'arresto di DynamoDB. -
Se si utilizza l’opzione
-inMemory, è richiesta anche l'opzione-sharedDb. -
Se si utilizza l'opzione
-optimizeDbBeforeStartup, è necessario specificare anche il parametro-dbPath, in modo che DynamoDB sia in grado di individuare il file di database. -
Gli SDK AWS per DynamoDB richiedono che la configurazione dell'applicazione specifichi un valore della chiave di accesso e un valore della regione AWS. A meno che non stia utilizzando l'opzione
-sharedDbo-inMemory, DynamoDB usa questi valori per denominare il file di database locale. Questi valori non devono essere valori AWS validi per l'esecuzione in locale. Tuttavia, potresti trovare utile utilizzare valori validi in modo da poter eseguire il codice nel cloud successivamente, modificando solo l'endpoint in uso. -
La versione locale di DynamoDB restituisce sempre un valore null per
billingModeSummary. -
DynamoDB local
AWS_ACCESS_KEY_IDpuò contenere solo lettere (A–Z, a–z) e numeri (0-9). -
DynamoDB locale non supporta il recupero point-in-time (PITR).
Argomenti
Opzioni della riga di comando
Con la versione scaricabile di DynamoDB è possibile utilizzare le opzioni della riga di comando seguenti:
-
-corsvalue: abilita il supporto per la condivisione delle risorse tra origini (CORS) per JavaScript. È necessario fornire un elenco di domini specifici "consentiti" separati da virgole. L'impostazione predefinita di-corsè un asterisco (*), che permette l'accesso pubblico. -
-dbPathvalue: la directory in cui DynamoDB scrive il file di database. Se non specifichi questa opzione, il file verrà scritto nella directory corrente. Non puoi specificare sia-dbPathche-inMemorycontemporaneamente. -
-delayTransientStatuses: fa sì che DynamoDB introduca ritardi per determinate operazioni. DynamoDB (versione scaricabile) è in grado di eseguire alcune attività quasi istantaneamente, come le operazioni di creazione/aggiornamento/eliminazione su tabelle e indici. Tuttavia, il servizio DynamoDB richiede più tempo per queste attività. L'impostazione di questo parametro consente a DynamoDB in esecuzione sul computer di simulare più da vicino il comportamento del servizio Web DynamoDB. Attualmente, questo parametro causa ritardi solo per i Global Secondary Indexes in stato CREATING o DELETING. -
-help: stampa un riepilogo di utilizzo e le opzioni. -
-inMemory: DynamoDB viene eseguito in memoria invece di utilizzare un file di database. Quando si arresta DynamoDB, i dati non verranno salvati. Non puoi specificare sia-dbPathche-inMemorycontemporaneamente. -
-optimizeDbBeforeStartup: ottimizza le tabelle di database sottostanti prima di avviare DynamoDB sul computer. Inoltre, quando utilizzi questo parametro, è necessario specificare-dbPath. -
-portvalue: il numero di porta utilizzato da DynamoDB per comunicare con l'applicazione. Se non viene specificata questa opzione, la porta predefinita è8000.Nota
DynamoDB utilizza la porta 8000 per impostazione predefinita. Se la porta 8000 non è disponibile, il comando genera un'eccezione. Puoi utilizzare l'opzione
-portper specificare un numero di porta diverso. Per un elenco completo delle opzioni di runtime di DynamoDB, tra cui-port, digitare il comando seguente:java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help -
-sharedDb: se si specifica-sharedDb, DynamoDB utilizza un singolo file di database anziché file separati per ogni credenziale e regione. -
-disableTelemetry: quando specificato, DynamoDB locale non invierà alcuna telemetria. -
-version: stampa la versione di DynamoDB locale.
Impostazione dell'endpoint locale
Per impostazione predefinita, gli SDK AWS e gli strumenti utilizzano endpoint per il servizio Web Amazon DynamoDB. Per utilizzare gli SDK e gli strumenti con la versione scaricabile di DynamoDB, è necessario specificare l'endpoint locale:
http://localhost:8000
AWS Command Line Interface
Per interagire con la versione scaricabile di DynamoDB è possibile utilizzare AWS Command Line Interface (AWS CLI).
Per accedere a DynamoDB eseguito in locale, utilizza il parametro --endpoint-url. Di seguito è riportato un esempio di utilizzo della AWS CLI per creare un elenco delle tabelle in DynamoDB sul computer.
aws dynamodb list-tables--endpoint-url http://localhost:8000
Nota
La AWS CLI non è in grado di usare la versione scaricabile di DynamoDB come endpoint predefinito. Di conseguenza devi specificare --endpoint-url per ogni comando AWS CLI.
AWS SDK
Il modo in cui viene specificato un endpoint dipende dal linguaggio di programmazione e dall'SDK AWS in uso. Nelle seguenti sezioni viene descritto come procedere:
-
Java: Configurazione dell'endpoint e della regione AWS (la versione locale di DynamoDB supporta AWS SDK per Java V1 e V2)
-
CodeSamples.Java.RegionAndEndpoint .NET: Configurazione dell'endpoint e della regione AWS
Differenze tra DynamoDB scaricabile e il servizio Web DynamoDB
La versione scaricabile di DynamoDB è destinata solo a scopi di sviluppo e test. Per contro, il servizio Web DynamoDB è un servizio gestito con caratteristiche di scalabilità, disponibilità e durabilità che lo rendono ideale per l'uso in produzione.
Le differenze tra la versione scaricabile di DynamoDB e il servizio Web sono le seguenti:
-
Regioni AWS e Account AWS distinti non sono supportati a livello di client.
-
Le impostazioni di velocità effettiva assegnata vengono ignorate nella versione scaricabile di DynamoDB, sebbene siano richieste dall'operazione
CreateTable. InCreateTable, puoi specificare i numeri che preferisci di throughput di lettura e scrittura assegnato, sebbene questi numeri non vengano utilizzati. Puoi chiamareUpdateTabletutte le volte al giorno che desideri. Tuttavia, le modifiche ai valori di throughput assegnato vengono ignorate. -
Le operazioni
Scanvengono eseguite in sequenza. Le scansioni in parallelo non sono supportate. I parametriSegmenteTotalSegmentsdell'operazioneScanvengono ignorati. -
La velocità delle operazioni di lettura e scrittura sui dati della tabella è limitata solo dalla velocità del computer. Le operazioni
CreateTable,UpdateTableeDeleteTablehanno luogo immediatamente e lo stato della tabella è sempre ACTIVE. Le operazioniUpdateTableche modificano solo le impostazioni di throughput di cui è stato effettuato il provisioning sulle tabelle o sui Global Secondary Indexes si verificano immediatamente. Se un'operazioneUpdateTablecrea o elimina alcuni indici secondari globali, tali indici passeranno attraverso gli stati normali (come CREATING e DELETING, rispettivamente) prima di raggiungere lo stato ACTIVE. La tabella rimane in stato ACTIVE (Attivo) durante questa fase. -
Le operazioni di lettura hanno consistenza finale. Tuttavia, a causa della velocità dell’esecuzione di DynamoDB locale sul computer, la maggior parte delle letture risulta a elevata consistenza.
-
I parametri di raccolta di item e le dimensioni di raccolta di item non vengono monitorati. Nelle risposte delle operazioni, vengono restituiti valori null anziché parametri di raccolta di item.
-
In DynamoDB, il limite di dati restituiti per ogni set di risultati è 1 MB. Sia il servizio Web DynamoDB che la versione scaricabile impongono questo limite. Tuttavia, durante l'esecuzione di una query su un indice, il servizio DynamoDB calcola solo la dimensione della chiave e degli attributi proiettati. Per contro, la versione scaricabile di DynamoDB calcola la dimensione dell'intero elemento.
-
Se si utilizzano i flussi DynamoDB, la velocità di creazione degli shard potrebbe variare. Nel servizio Web DynamoDB, il comportamento della creazione di shard è in parte influenzato dall'attività di partizionamento della tabella. Quando si esegue DynamoDB in locale, non si verifica un partizionamento di tabella. Nei due casi, gli shard sono temporanei, per cui l'applicazione non deve dipendere dal comportamento degli shard.
-
DynamoDB scaricabile non genera
TransactionConflictExceptionsper le API transazionali. Ti consigliamo di utilizzare un framework fittizio Java per simulareTransactionConflictExceptionsnel gestore DynamoDB per testare la modalità di risposta dell'applicazione alle transazioni in conflitto. -
Nel servizio web DynamoDB, indipendentemente dal fatto che vi si acceda tramite la console o AWS CLI, i nomi delle tabelle sono sensibili alle maiuscole. Una tabella denominata
Authorse una denominataauthorspossono esistere entrambe come tabelle separate. Nella versione scaricabile, i nomi di tabella rispettano la distinzione tra maiuscole e minuscole e il tentativo di creare queste due tabelle genera un errore. -
L’assegnazione di tag non è supportata nella versione scaricabile di DynamoDB.
-
La versione scaricabile di DynamoDB ignora il parametro Limit in ExecuteStatement.