Observações sobre o uso do DynamoDB local
Com exceção do endpoint, as aplicações que são executadas com a versão para download do Amazon DynamoDB também devem funcionar com o serviço da Web do DynamoDB. No entanto, ao usar o DynamoDB localmente, você deve estar ciente do seguinte:
-
Se você usar a opção
-sharedDb, o DynamoDB criará um único arquivo de banco de dados chamado shared-local-instance.db. Todos os programas que se conectam ao DynamoDB acessam este arquivo. Se você excluir o arquivo, perderá todos os dados armazenados nele. -
Se você omitir
-sharedDb, o arquivo do banco de dados se chamará myaccesskeyid_region.db, com o ID de chave de acesso AWS e região da AWS da forma como são exibidos na configuração da aplicação. Se você excluir o arquivo, perderá todos os dados armazenados nele. -
Se você usar a opção
-inMemory, o DynamoDB não gravará nenhum arquivo de banco de dados. Em vez disso, todos os dados são gravados na memória, e eles não são salvos quando o DynamoDB é terminado. -
Se você usar
-inMemory, a opção-sharedDbtambém será necessária. -
Se você usar a opção
-optimizeDbBeforeStartup, também deverá especificar o parâmetro-dbPathpara que o DynamoDB possa encontrar seu arquivo de banco de dados. -
Os AWS SDKs para DynamoDB exigem que a configuração da sua aplicação especifique um valor de chave de acesso e um valor de região da AWS. A menos que você esteja usando a opção
-sharedDbou-inMemory, o DynamoDB usará esses valores para nomear o arquivo de banco de dados local. Esses não precisam ser valores válidos da AWS para executar localmente. No entanto, pode ser conveniente usar valores válidos, de modo que você possa executar o código na nuvem mais tarde alterando o endpoint que você está usando. -
O DynamoDB local sempre retorna nulo para
billingModeSummary. -
O DynamoDB local
AWS_ACCESS_KEY_IDpode conter somente letras (A-Z, a-z) e números (0-9). -
O DynamoDB local não comporta recuperação para um ponto no tempo (PITR).
Tópicos
Opções de linha de comando
Você pode usar uma das seguintes opções de linha de comando com a versão para download do DynamoDB:
-
-corsvalue: habilita o suporte ao CORS (compartilhamento de recursos entre origens) para JavaScript. Você deve fornecer uma lista de “permissões” de domínios específicos separados por vírgulas. A configuração padrão de-corsé um asterisco (*), que permite acesso público. -
-dbPathvalue: o diretório em que o DynamoDB grava seu arquivo de banco de dados. Se você não especificar essa opção, o arquivo será gravado no diretório atual. Não é possível especificar-dbPathe-inMemoryao mesmo tempo. -
-delayTransientStatuses: faz com que o DynamoDB introduza atrasos em determinadas operações. O DynamoDB (versão para download) pode executar algumas tarefas quase instantaneamente, como criar/atualizar/excluir operações em tabelas e índices. No entanto, o serviço DynamoDB requer mais tempo para essas tarefas. A definição desse parâmetro ajuda o DynamoDB em execução em seu computador a simular o comportamento do serviço da Web DynamoDB de maneira mais precisa. (No momento, esse parâmetro apresenta atrasos apenas para índices secundários globais que estão no status CREATING ou DELETING.) -
-help: imprime um resumo de uso e opções. -
-inMemory: o DynamoDB é executado na memória, em vez de usar um arquivo de banco de dados. Quando você interrompe o DynamoDB, nenhum dos dados é salvo. Não é possível especificar-dbPathe-inMemoryao mesmo tempo. -
-optimizeDbBeforeStartup: otimiza as tabelas de banco de dados subjacentes antes de iniciar o DynamoDB no seu computador. Você também deve especificar-dbPathao usar este parâmetro. -
-portvalue: o número da porta que o DynamoDB usa para se comunicar com sua aplicação. Se você não especificar essa opção, a porta padrão será8000.nota
O DynamoDB usa a porta 8000 por padrão. Se a porta 8000 estiver indisponível, este comando lançará uma exceção. Você pode usar a opção
-portpara especificar um número de porta diferente. Para obter uma lista completa das opções de tempo de execução do DynamoDB, incluindo-port, digite este comando:java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -help -
-sharedDb: se você especificar-sharedDb, o DynamoDB usará um único arquivo de banco de dados, em vez de usar arquivos separados para cada credencial e região. -
-disableTelemetry: quando especificada, o DynamoDB local não enviará nenhuma telemetria. -
-version: imprime a versão do DynamoDB local.
Definir o endpoint local
Por padrão, os AWS SDKs e as ferramentas usam endpoints para o serviço da Web Amazon DynamoDB. Para usar os SDKs e as ferramentas com as versões para download do DynamoDB, especifique o endpoint local:
http://localhost:8000
AWS Command Line Interface
Você pode usar a AWS Command Line Interface (AWS CLI) para interagir com o DynamoDB para download.
Para acessar o DynamoDB em execução localmente, use o parâmetro --endpoint-url. Veja a seguir um exemplo de uso da AWS CLI para listar as tabelas do DynamoDB em seu computador.
aws dynamodb list-tables--endpoint-url http://localhost:8000
nota
A AWS CLI não pode usar a versão para download do DynamoDB como um endpoint padrão. Portanto, você deve especificar --endpoint-url com cada comando na AWS CLI.
SDKs da AWS
A maneira como você especifica um endpoint depende da linguagem de programação e do AWS SDK que você está usando. As seções a seguir descrevem como fazer isso:
-
Java: configurar a região e o endpoint da AWS (DynamoDB local oferece suporte ao AWS SDK para Java V1 e V2)
-
CodeSamples.Java.RegionAndEndpoint .NET: configurar a região e o endpoint da AWS
Diferenças entre o DynamoDB para download e o serviço da Web DynamoDB
A versão para download do DynamoDB deve ser usada somente para testes e desenvolvimento. Em comparação, o serviço da Web DynamoDB é um serviço gerenciado com recursos de escalabilidade, disponibilidade e durabilidade que o tornam ideal para uso no ambiente de produção.
A versão para download do DynamoDB difere do serviço da Web das seguintes formas:
-
Regiões da AWS e Contas da AWS distintas não são aceitas em nível de cliente.
-
As configurações de throughput provisionado são ignoradas no DynamoDB para download, embora a operação
CreateTableas exija. EmCreateTable, você pode especificar quaisquer números desejados para o throughput de leitura e gravação provisionado, mesmo que esses números não sejam usados. Você pode chamarUpdateTablequantas vezes quiser por dia. No entanto, todas as alterações nos valores do throughput provisionado são ignoradas. -
As operações
Scansão executadas sequencialmente. Verificações paralelas não são aceitas. Os parâmetrosSegmenteTotalSegmentsda operaçãoScansão ignorados. -
A velocidade das operações de leitura e gravação nos dados da tabela é limitada apenas pela velocidade do computador. As operações
CreateTable,UpdateTableeDeleteTableocorrem imediatamente, e o estado da tabela é sempre ACTIVE. As operaçõesUpdateTableque alteram apenas as configurações de throughput provisionado em tabelas ou índices secundários globais ocorrem imediatamente. Se uma operaçãoUpdateTablecriar ou excluir qualquer índice secundário global, esses índices farão uma transição pelos estados normais (como CREATING e DELETING, respectivamente) antes de passarem para um estado ACTIVE. A tabela permanece no estado ACTIVE durante esse tempo. -
As operações de leitura são eventualmente consistentes. No entanto, devido à velocidade do DynamoDB em execução no local no computador, a maioria das leituras parecerão ser fortemente consistentes.
-
As métricas de coleção de itens e os tamanhos de coleção de itens não são controlados. Nas respostas de operação, nulos são retornados em vez de métricas de coleção de itens.
-
No DynamoDB, há um limite de 1 MB em dados retornados por conjunto de resultados. Tanto o serviço da Web DynamoDB quanto a versão para download impõem esse limite. No entanto, ao consultar um índice, o serviço DynamoDB calcula apenas o tamanho da chave e dos atributos projetados. Por outro lado, a versão para download do DynamoDB calcula o tamanho do item inteiro.
-
Se você estiver usando o DynamoDB Streams, a taxa na qual fragmentos são criados poderá ser diferente. No serviço da Web DynamoDB, o comportamento de criação de fragmentos é parcialmente influenciado pela atividade da partição da tabela. Quando o DynamoDB é executado localmente, não há particionamento de tabelas. Em qualquer um dos casos, os fragmentos são efêmeros, portanto, seu aplicativo não deve ser dependente do comportamento do fragmento.
-
TransactionConflictExceptionsnão são lançadas pelo DynamoDB para download para APIs transacionais. Recomendamos o uso de um framework de imitação Java para simularTransactionConflictExceptionsno manipulador do DynamoDB para testar como o aplicativo responde a transações em conflito. -
No serviço web do DynamoDB, quer seja acessado pelo console ou pela AWS CLI, os nomes das tabelas diferenciam maiúsculas de minúsculas. Uma tabela chamada
Authorse outra chamadaauthorspodem existir como tabelas separadas. Na versão que pode ser obtida por download, os nomes de tabelas não diferenciam maiúsculas de minúsculas, e a criação dessas duas tabelas resulta em erro. -
A marcação não é aceita na versão para download do DynamoDB.
-
A versão para download do DynamoDB ignora o parâmetro Limit em ExecuteStatement.