Olá Pessoal,
Estou trazendo os posts do blog antigo, como está meio na correria vai na mão mesmo.
Vou falar um pouquinho sobre o DynamoDB, um DB versátil que se encaixa nos padrões Documentos e Chave-Valor. Para quem não gosta muito de Cloud, a AWS premite que ele seja exetucado localmente.
Brincadeiras a parte, você pode tê-o em seu desktop, em uma instance EC2, em um docker ou onde quiser, para que faça testes locais antes de fazer deploy de suas Apps. O procedimento é simples e vamos fazer juntos. O prereq é que você tenha uma forma de acessá-lo (awscli no meu caso) e o Java 6.x ou mais recente instalado.
Então vamos lá. Primeiro vamos baixar e instalar nosso Java.
$ sudo su - # yum install -y wget # wget --no-check-certificate -c \ --header "Cookie: oraclelicense=accept-securebackup-cookie" \ http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm ... # ls -l total 171156 -rw-r--r-- 1 root root 175262413 Apr 3 18:05 jdk-8u171-linux-x64.rpm # rpm -Uvh jdk-8u171-linux-x64.rpm Preparing... ################################# [100%] Updating / installing... 1:jdk1.8-2000:1.8.0_171-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar...
Com o java instalado, vamos criar uma pasta para o DynamoDB, fazer seu download e descompactá-lo.
# mkdir DynamoDB # cd DynamoDB # wget https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz # tar -xf dynamodb_local_latest.tar.gz # ls -l total 191332 -rw-r--r-- 1 root root 3746717 Apr 11 23:03 DynamoDBLocal.jar -rw-r--r-- 1 root root 16884788 Apr 12 07:10 dynamodb_local_latest.tar.gz drwxr-xr-x 2 root root 4096 Jun 14 21:06 DynamoDBLocal_lib -rw-r--r-- 1 root root 8644 Apr 11 23:03 LICENSE.txt -rw-r--r-- 1 root root 878 Apr 11 23:03 README.txt drwxr-xr-x 2 root root 4096 Jun 14 21:06 third_party_licenses
Feito isso, já temos quase tudo pronto. Basta iniciar o DynamoDB, que por default fará bind na porta 8000 e não te devolverá o prompt.
Outro ponto importante é que você precisa escolher se deseja persistir seus dados (default, no diretório atual) ou mantê-los em memória. Se desejar alterar o caminho onde seus dados serão salvos, é necessário informar “-dbPath <path>”. Se preferir não persisti-los em disco, basta informar -inMemory. Você não poderá informar simultaneamente dbPath e inMemory.
# java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb Port: 8000 InMemory: false DbPath: null SharedDb: true shouldDelayTransientStatuses: false CorsParams: *
Outra coisa necessária é que você precisa configurar credentials, mesmo que fake. Então vamos lá:
# aws configure AWS Access Key ID [None]: 1 AWS Secret Access Key [None]: 1 Default region name [None]: us-east-1 Default output format [None]:
Agora sim, pronto para o uso. Temos que incluir a cláusula “–endpoint-url http://localhost:8000” apontando para o SERVER:PORT onde ele está rodando.
Listando o temos até agora (nada):
# aws dynamodb list-tables --endpoint-url http://localhost:8000
Criando uma tabela:
# aws dynamodb create-table --table-name MusicCollection \ --attribute-definitions AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --endpoint-url http://localhost:8000
Para inserir um item, vamos antes criar um json com o seguinte conteúdo:
# cat item.json { "Artist": {"S": "Aerosmith"}, "SongTitle": {"S": "Janie's Got A Gun"}, "AlbumTitle": {"S": "Big Ones"} }
# aws dynamodb put-item --table-name MusicCollection \ --item file://item.json --return-consumed-capacity TOTAL \ --endpoint-url http://localhost:8000
Sem output, agora vamos ver como ficou o item, criando um outro JSON com os atributos da chave:
# cat key.json { "Artist": {"S": "Aerosmith"}, "SongTitle": {"S": "Janie's Got A Gun"} }
# aws dynamodb get-item --table-name MusicCollection \ --key file://key.json \ --endpoint-url http://localhost:8000
Aproveitando o mesmo documento da chave, podemos deletar o item.
# aws dynamodb delete-item --table-name MusicCollection \ --key file://key.json \ --endpoint-url http://localhost:8000
Também não retorna nenhum output. E enfim, vamos deletar a tabela:
# aws dynamodb delete-table --table-name MusicCollection \ --endpoint-url http://localhost:8000
Para finalizar, no diretório onde escolheu persistir os dados haverá um datafile:
# ls -l *.db -rw-r--r-- 1 root root 14K Jun 14 21:53 shared-local-instance.db
Acho que era isso, um breve passeio pelo DynamoDB caseiro. Qualquer dúvida simples, só escrever.
Até mais.