AWS DynamoDB
Tags: aws, cloud, devops, security
Published: 2023-05-19 14:27:52

**Anotações sobre o AWS DynamoDB para ajudar na preparação das certificações AWS.**

Até o momento as anotações são para as certificações abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/se0sqtegn424nami6rz8.png)

- [Link oficial](https://aws.amazon.com/pt/dynamodb/)

---

##**Anotações gerais**

- Banco de dados NoSQL
- Permite que um banco de dados tenha um esquema flexível e ofereça suporte a modelos de dados de documentos
- key/value database
- **Por padrão todas as bases são criptografadas**
- Replication em 3 AZs
- Serverless
- Não suportam um esquema pré-definido
- Oferecem atomicidade
- Modelo de dados flexíveis e latência de milissegundos de um digito
- Para jogo on-line
- Fortimente Consistente

---
##**Global Table**

- Acesso a tabelas em múltiplas regions com low latency
- Tabelas globais
- Replicação ativa/ativa

---
##**DynamoDB Accelerator(DAX)**

- Aprimora o desempenho de leitura, leitura pesada
- 10x mais performance
- Uso exclusivo para DynamoDB
- Cache para DynamoDB

---
##**Criptografia em repouso do DynamoDB**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/EncryptionAtRest.html)

- Todos os dados de usuário armazenados no Amazon DynamoDB são totalmente criptografados em repouso
- Dynamodb client use AWS KMS/CloudHSM

Ao criar uma nova tabela, você pode escolher uma das seguintes AWS KMS keys para criptografar a tabela:

- **AWS owned key:** tipo de criptografia padrão. A chave pertence ao DynamoDB (sem custo adicional).
- **AWS managed key** – A chave é armazenada na sua conta e é gerenciada pelo AWS KMS (se aplicam cobranças do AWS KMS).
- **Customer managed key** – A chave é armazenada na sua conta e é você que a cria, detém e gerencia. Você tem controle total sobre a chave do KMS (são aplicadas cobranças do AWS KMS).


---
##**Amazon DynamoDB Encryption Client**
[Documentação oficial](https://docs.aws.amazon.com/dynamodb-encryption-client/latest/devguide/client-server-side.html)

- É uma biblioteca de software que ajuda a proteger os dados da tabela antes de enviá-los ao Amazon DynamoDB. 
- Criptografar seus dados confidenciais em trânsito e em repouso ajuda a garantir que seus dados de texto simples não estejam disponíveis para terceiros, incluindo a AWS.



---
##**Acesso privado através VPC Gateway Endpoint**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/vpc/latest/privatelink/gateway-endpoints.html)

_Os Gateway endpoints fornecem conectividade confiável para Amazon S3 e DynamoDB sem exigir um Internet Gateway ou um NAT para sua VPC._

---
##**Gerenciar tabelas criptografadas no DynamoDB**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/encryption.tutorial.html)

- Para criptografar -> `--sse-specification Enabled=true`

**Exemplo tabela criptografada**

```
aws dynamodb create-table \
  --table-name Music \
  --attribute-definitions \
      AttributeName=Artist,AttributeType=S \
      AttributeName=SongTitle,AttributeType=S \
  --key-schema \
      AttributeName=Artist,KeyType=HASH \
      AttributeName=SongTitle,KeyType=RANGE \
  --provisioned-throughput \
      ReadCapacityUnits=10,WriteCapacityUnits=5 \
  --sse-specification Enabled=true,SSEType=KMS 
```

---
##**Referências**
- [Tutorial Dojo - Amazon DynamoDB](https://tutorialsdojo.com/amazon-dynamodb/)