AWS Data Storage Flashcards
Data Storage Services
S3 + Glacier
DynamoDB
ElastiCache
Amazon S3 Use cases
Backup and storage * Disaster Recovery * Archive * Hybrid Cloud storage * Application hosting * Media hosting * Data lakes & big data analytics * Software delivery * Static website
S3 Max. Object Size is
5 TB (5000GB)
Amazon S3 – Security
User-Based, Resource-Based, Encryption
S3 - Policy in User-Based
IAM Policies
S3 - Resource-Based
- Bucket Policies – bucket wide rules from the S3 console - allows cross
account - Object Access Control List (ACL) – finer grain (can be disabled)
- Bucket Access Control List (ACL) – less common (can be disabled)
S3 Storage Classes
- Amazon S3 Standard - General Purpose
- Amazon S3 Standard-Infrequent Access (IA)
- Amazon S3 One Zone-Infrequent Access
- Amazon S3 Glacier Instant Retrieval
- Amazon S3 Glacier Flexible Retrieval
- Amazon S3 Glacier Deep Archive
- Amazon S3 Intelligent Tiering
Describe S3 User-Based
- IAM Policies – which API calls should be allowed for a specific user from IAM
Describe S3 Resource-Based
- Bucket Policies – bucket wide rules from the S3 console - allows cross
account - Object Access Control List (ACL) – finer grain (can be disabled)
- Bucket Access Control List (ACL) – less common (can be disabled)
How to use objects in S3 type encryption
encrypt objects in Amazon S3 using encryption keys
S3 - JSON-based policies
- Resources: buckets and objects
- Effect: Allow / Deny
- Actions: Set of APIs to Allow or Deny
- Principal: The account or user to apply
the policy to
Use S3 bucket for policy to:
- Grant public access to the bucket
- Force objects to be encrypted at upload
- Grant access to another account (Cross
Account)
S3 - Replication CRR is:
Cross-Region Replication
Same-Region Replication is:
SRR
S3 use cases CRR
compliance, lower latency access, replication across accounts
S3 use cases SRR
log aggregation, live replication between production and test accounts
S3 Storage Classes – Infrequent Access
- For data that is less frequently accessed, but requires rapid access when needed
- Lower cost than S3 Standard
- para dados acessados com menos frequência mas requerem acesso rápido quando necessário, custo mais baixo do que classe Standard
Amazon S3 Standard-Infrequent Access (S3 Standard-IA) - availability and use cases
- 99.9% Availability
- Use cases: Disaster Recovery, backups
Amazon S3 One Zone-Infrequent Access (S3 One Zone-IA) - availabilty percent
99.5%
Amazon S3 One Zone-Infrequent Access (S3 One Zone-IA) - Use cases:
Storing secondary backup copies of on-premises data, or data you can recreate
Amazon S3 Glacier Storage Classes:
- Amazon S3 Glacier Instant Retrieval
- Amazon S3 Glacier Flexible Retrieval
- Amazon S3 Glacier Deep Archive – for long term storage:
Resources Amazon S3 Glacier Instant Retrieval
- Millisecond retrieval, great for data accessed once a quarter
- Minimum storage duration of 90 days
Resources Amazon S3 Glacier Flexible Retrieval (formerly Amazon S3 Glacier):
- Expedited (1 to 5 minutes), Standard (3 to 5 hours), Bulk (5 to 12 hours) – free
- Minimum storage duration of 90 days
Resources Amazon S3 Glacier Deep Archive – for long term storage:
- Standard (12 hours), Bulk (48 hours)
- Minimum storage duration of 180 days
S3 Intelligent-Tiering resources:
- Small monthly monitoring and auto-tiering fee
- Moves objects automatically between Access Tiers based on usage
- There are no retrieval charges in S3 Intelligent-Tiering
S3 – Lifecycle Rules types:
Transition Actions, Expiration actions
Lifecycle Rules - Transition Actions moves form:
- Move objects to Standard IA class 60 days after creation
- Move to Glacier for archiving after 6 months
Lifecycle Rules - Expiration Actions moves form:
- Access log files can be set to delete after a 365 days
- Can be used to delete old versions of files (if versioning is enabled)
- Can be used to delete incomplete Multi-Part uploads
S3 Event Notifications use case
generate thumbnails of images uploaded to S3
S3 – Baseline Performance latency
100 - 200 ms
Classes Amazon S3 – Object Encryption SSE
- Server-Side Encryption with Amazon S3-Managed Keys (SSE-S3)
- Server-Side Encryption with KMS Keys stored in AWS KMS (SSE-KMS)
- Server-Side Encryption with Customer-Provided Keys (SSE-C)
Amazon S3 exposes two endpoints:
- HTTP Endpoint – non encrypted
- HTTPS Endpoint – encryption in flight
Amazon S3 casos de uso
Backup e armazenamento * Recuperação de desastres * Arquivo * Armazenamento em nuvem híbrida * Hospedagem de aplicativos * Hospedagem de mídia * Data lakes e análises de big data * Entrega de software * Site estático
Amazon S3 Analytics - Análise da classe de armazenamento
- Ajuda a decidir quando fazer a transição de objetos para a classe de armazenamento correta
- Recomendações para Normas e IA padrão
- NÃO funciona para One-Zone IA ou Glacier
- O relatório é atualizado diariamente
- 24 a 48 horas para começar a ver a análise de dados
- Bom primeiro passo para montar o ciclo de vida
Regras (ou melhorá-las)!
Recuperação instantânea do Amazon S3 Glacier (Amazon S3 Glacier Instant Retrieval) e duração mínima de armazenamento
- Recuperação em milissegundos, excelente para dados acessados uma vez por trimestre
- Duração mínima de armazenamento de 90 dias
Amazon S3 Glacier Flexible Retrieval
- Expedido (1 a 5 minutos), Padrão (3 a 5 horas), Em massa (5 a 12 horas) – gratuito
- Duração mínima de armazenamento de 90 dias
Amazon S3 Glacier Deep Archive
- Padrão (12 horas), a granel (48 horas)
- Duração mínima de armazenamento de 180 dias
Amazon S3 – Regras do ciclo de vida
- Ações de Transição
- Ações de Expiração
Amazon S3 – Regras de Ciclo de Vida (Cenário1)
Seu aplicativo no EC2 cria miniaturas de imagens após as fotos do perfil são carregadas no Amazon S3. Essas
miniaturas podem ser facilmente recriadas, e só precisam ser mantidas por 60 dias. As imagens de origem devem poder ser
imediatamente recuperados por esses 60 dias e, posteriormente, o usuário pode esperar até 6 horas. Como você projetaria?
- As imagens de origem S3 podem estar no Standard, com um ciclo de vida configuração para fazer a transição para o Glacier após 60 dias
- As miniaturas S3 podem estar em One-Zone IA, com um ciclo de vida configuração para exclusão após 60 dias
Amazon S3 – Regras de Ciclo de Vida (Cenário2)
* Uma regra em sua empresa afirma que você deve ser capaz de recuperar seus objetos S3 excluídos imediatamente por 30 dias, embora isso possa acontecer raramente. Após este horário, e por até
a 365 dias, os objetos excluídos devem ser recuperados em 48 horas.
- Habilite o S3 Versioning para ter versões de objetos, para que “objetos excluídos” estão de fato ocultos por um “marcador de exclusão” e podem ser recuperados
- Transição das “versões não atuais” do objeto para o Padrão IA
- Transição depois das “versões não atuais” para Glacier Deep Archive
Baseline de performance do S3
Até 3.500 solicitações de leitura por segundo e até 5.500 solicitações de gravação por segundo por prefixo no bucket
S3 – Baseline Performance taxa de latência
100 - 200 ms
Multi-Part Upload S3 recommended
files > 100 MB, must be use for files > 5 GB
can help parallelize uploads
Aceleração de transferência do S3
Recurso que permite a aceleração de transferência de dados através de rede de entrega CDN global
O que é S3 Byte-Range Fetches
Funcionalidade que permite solicitar intervalo específico de bytes do objeto no S3.
* Paralelizar GETs solicitando
intervalos de bytes específicos
* Melhor resiliência em caso de
falhas
S3 Performance – S3 Byte-Range
Fetches functions
- Parallelize GETs by requesting
specific byte ranges - Better resilience in case of
failures
S3 Select & Glacier Select o que é?
Serviços de consulta e extração de dados utilizando SQL padrão nos objetos do S3.
Vantanges do S3 Select & Glacier Select
- Pode filtrar por linhas e colunas (instruções SQL simples)
- Menos transferência de rede, menos custo de CPU do lado do cliente
O que é Object Encryption no S3
Recurso de segurança que usa criptografia avançada de 256 bits, criptografa objetos individuais com chaves gerenciadas pelo S3 ou Key Management Service (KMS)
Amazon S3 – Object Encryption
* You can encrypt objects in S3 buckets using one of 4 methods:
- Server-Side Encryption (SSE)
- Client-Side Encryption
- Server-Side Encryption with Amazon S3-Managed Keys (SSE-S3)
- Server-Side Encryption with KMS Keys stored in AWS KMS (SSE-KMS)
O que é o Server-Side Encryption
Criptografia automática dos dados no S3
Quais as opções de criptografia do tipo Server-Side Encryption?
SSE-S3, SSE-KMS e SSE-C
S3 - Access Points (Pontos de Acesso)
- Cada ponto de acesso obtém seu próprio DNS e política para limitar quem pode acessar.
- Um usuário/grupo IAM específico
- Uma política por ponto de acesso => Mais fácil de gerenciar do que políticas complexas de bucket
Amazon S3 – Criptografia padrão vs. Políticas de Bucket
- Uma maneira de “forçar a criptografia” é usar uma política de bucket e recusar qualquer chamada de API para PUT um objeto S3 sem criptografia
- Outra maneira é usar a opção “criptografia padrão” no S3
- Observação: as políticas de bucket são avaliadas antes da criptografia padrão
S3 Object Lambda o que é?
- Use funções do AWS Lambda para
mudar o objeto antes que seja
recuperado pelo aplicativo chamador
Casos de uso Object Lambda
- transformação de arquivos de vídeo e áudio
- redimensionamento de imagens
- aplicação de marcas d’água
- validação de segurança e mais
NoSQL Databases characteristics
NoSQL databases are non-relational databases and are
distributed
* NoSQL databases include MongoDB, DynamoDB, …
* NoSQL databases do not support query joins (or just limited
support)
* All the data that is needed for a query is present in one row
* NoSQL databases don’t perform aggregations such as “SUM”,
“AVG”, …
* NoSQL databases scale horizontally
Características de bancos de dados NoSQL
- Os bancos de dados NoSQL são bancos de dados não relacionais e são distribuídos
- Os bancos de dados NoSQL incluem MongoDB, DynamoDB, …
- Bancos de dados NoSQL não suportam query joins (ou apenas limitados)
- Todos os dados necessários para uma consulta estão presentes em uma linha
- Bancos de dados NoSQL não realizam agregações como “SUM”, “AVG”, …
- Os bancos de dados NoSQL escalam horizontalmente
Amazon DynamoDB characteristics
- Fully managed, highly available with replication across multiple AZs
- NoSQL database - not a relational database
- Scales to massive workloads, distributed database
- Millions of requests per seconds, trillions of row, 100s of TB of storage
- Fast and consistent in performance (low latency on retrieval)
- Integrated with IAM for security, authorization and administration
- Enables event driven programming with DynamoDB Streams
- Low cost and auto-scaling capabilities
DynamoDB - Basics
- DynamoDB is made of Tables
- Each table has a Primary Key (must be decided at creation time)
- Each table can have an infinite number of items (= rows)
- Each item has attributes (can be added over time – can be null)
- Maximum size of an item is 400KB
- Data types supported are:
- Scalar Types – String, Number, Binary, Boolean, Null
- Document Types – List, Map
- Set Types – String Set, Number Set, Binary Set
Característica básica do DynamoDB
- O DynamoDB é feito de tabelas
- Cada tabela tem uma Chave Primária (deve ser decidida na criação tempo)
- Cada tabela pode ter um número infinito de itens (= linhas)
- Cada item possui atributos (podem ser adicionados ao longo do tempo - podem ser
nulo) - O tamanho máximo de um item é 400 KB
- Os tipos de dados suportados são:
- Tipos escalares – string, número, binário, booleano, nulo
- Tipos de Documentos - Lista, Mapa
- Tipos de conjunto - conjunto de strings, conjunto de números, conjunto binário
Tamanho máximo de um item no DynamoDB
400KB
DynamoDB opção 1 sobre Primary Keys
- Opção 1: Chave de Partição (HASH)
- A chave de partição deve ser exclusiva para cada item
- A chave de partição deve ser “diversa” para que os dados sejam distribuídos
- Exemplo: “User_ID” para uma tabela de usuários
DynamoDB opção 2 sobre Primary Keys
- Opção 2: chave de partição + chave de classificação (HASH + RANGE)
- A combinação deve ser única para cada item
- Os dados são agrupados por chave de partição
- Exemplo: tabela user-games, “User_ID” para Partition Key e “Game_ID” para
Chave de classificação
Commom cases DynamoDB in Big Data
- Mobile apps
- Gaming
- Digital ad serving
- Live voting
- Audience interaction for live events
- Sensor networks
- Log ingestion
- Access control for web-based
content - Metadata storage for Amazon S3
objects - E-commerce shopping carts
- Web session management
Anti padrões de uso do DynamoDB
- Aplicativo pré-escrito vinculado a um
banco de dados relacional tradicional:
use RDS em vez disso - Junções ou transações complexas
- Objeto Binário Grande (BLOB)
dados: armazena dados em S3 &
metadados no DynamoDB - Dados grandes com baixa taxa de E/S:
use S3 em vez disso
Provisioned Mode capacity DynamoDB
- You specify the number of reads/writes per second
- You need to plan capacity beforehand
- Pay for provisioned read & write capacity units
On-demand mode capacity DynamoDB
- Read/writes automatically scale up/down with your workloads
- No capacity planning needed
- Pay for what you use, more expensive ($$$)
Capacidade On-demand no DynamoDB
- A leitura/gravação aumenta/diminui automaticamente com suas cargas de trabalho
- Nenhum planejamento de capacidade necessário
- Pague pelo que usar, mais caro ($$$)
Capacidade provisionada no DynamoDB
- Você especifica o número de leituras/gravações por segundo
- Você precisa planejar a capacidade com antecedência
- Pagar por unidades de capacidade de leitura e gravação provisionadas
O que é Local Secondary Index (LSI) no DynamoDB?
- Recurso que permite criar índices secundários nas tabelas existentes.
- Possui mesma chave de partição da tabela original mas chave de classificação diferente.
- Os dados da tabela original são organizados pelo mesmo hash da chave de partição mas podem ser classificados de maneira diferente.
- Cada tabela pode ter até 5 LSI’s.
DynamoDB – Local Secondary Index
(LSI)
- Alternative Sort Key for your table (same Partition Key as that of base table)
- The Sort Key consists of one scalar attribute (String, Number, or Binary)
- Up to 5 Local Secondary Indexes per table
- Must be defined at table creation time
- Attribute Projections – can contain some or all the attributes of the base table
(KEYS_ONLY, INCLUDE, ALL)
O que é o Global Secondary Index - GSI
- pode-se criar índices secundários com uma chave de partição e uma chave de classificação diferentes da tabela original.
- permite consultas usando diferentes chaves de partição além das tabela original.
- ajuda a reduzir tempo de resposta das consultas.
- cada tabela pode ter no máximo 20 índices secundários incluindo LSIs e GSIs.
- possíveis problemas de desempenho com o aumento do tráfego de gravação e leitura da tabela.
DynamoDB – Indexes and Throttling
- Global Secondary Index (GSI):
- If the writes are throttled on the GSI, then the main table will be throttled!
- Even if the WCU on the main tables are fine
- Choose your GSI partition key carefully!
- Assign your WCU capacity carefully!
- Local Secondary Index (LSI):
- Uses the WCUs and RCUs of the main table
- No special throttling considerations
O que é PartQL no DynamoDB?
PartiQL combina os recursos das linguagens SQL e NoSQL para fornecer uma sintaxe flexível e intuitiva para consultas de dados em várias fontes de dados.
DynamoDB - PartiQL
Use a SQL-like syntax to manipulate DynamoDB tables
Supports some (but not all) statements:
* INSERT
* UPDATE
* SELECT
* DELETE
- It supports Batch operations
O que é o Dynamo Accelerator DAX?
- serviço que oferece cache em memória
- latência de leitura em milissegundos
- reduz a carga de trabalho e melhora o desempenho do aplicativo.
DynamoDB Accelerator (DAX) explane:
- Fully-managed, highly available, seamless in-memory cache for DynamoDB
- Microseconds latency for cached reads &
queries - Doesn’t require application logic modification
(compatible with existing DynamoDB APIs) - Solves the “Hot Key” problem (too many
reads) - 5 minutes TTL for cache (default)
- Up to 10 nodes in the cluster
- Multi-AZ (3 nodes minimum recommended
for production) - Secure (Encryption at rest with KMS, VPC,
IAM, CloudTrail, …)
O que é o DynamoDB Streams
- projetado para permitir que os desenvolvedores monitorem alterações em tabelas do DynamoDB e reajam a elas em tempo real.
- Quando uma tabela do DynamoDB é configurada para usar o DynamoDB Streams, cada alteração feita na tabela, como inserção, atualização ou exclusão de um item, é capturada como um registro de stream
- registros de stream são armazenados por 24 horas e podem ser processados por meio de fluxos de trabalho ou aplicativos para executar ações em tempo real.
Casos de uso do DynamoDB Streams
- Sincronizar dados em tempo real entre várias tabelas do DynamoDB
- Notificar os usuários sobre mudanças em dados importantes
- Executar processamento em tempo real em dados de streaming
- Fazer backup de dados alterados no DynamoDB para outras fontes de dados
DynamoDB Streams
- Ordered stream of item-level modifications (create/update/delete) in
a table - Stream records can be:
- Sent to Kinesis Data Streams
- Read by AWS Lambda
- Read by Kinesis Client Library applications
- Data Retention for up to 24 hours
- Use cases:
- react to changes in real-time (welcome email to users)
- Analytics
- Insert into derivative tables
- Insert into ElasticSearch
- Implement cross-region replication
DynamoDB Streams
Fluxos do DynamoDB
* Capacidade de escolher as informações que serão gravadas no fluxo:
* KEYS_ONLY – apenas os atributos chave do item modificado
* NEW_IMAGE – o item inteiro, como aparece depois de modificado
* OLD_IMAGE – o item inteiro, como aparecia antes de ser modificado
* NEW_AND_OLD_IMAGES – as imagens novas e antigas do item
* DynamoDB Streams são feitos de fragmentos, assim como Kinesis Data
Fluxos
* Você não provisiona fragmentos, isso é automatizado pela AWS
* Os registros não são preenchidos retroativamente em um fluxo após
habilitando-o
DynamoDB Streams & AWS Lambda
- You need to define an Event
Source Mapping to read from a
DynamoDB Streams - You need to ensure the Lambda
function has the appropriate
permissions - Your Lambda function is invoked
synchronousl
DynamoDB Streams + AWS Lambda
- Você precisa definir um Evento
Mapeamento de origem para ler de um
Fluxos do DynamoDB - Você precisa garantir que o Lambda
função tem as permissões apropriadas - Sua função do Lambda é invocada de forma
síncrona
DynamoDB – Time To Live (TTL)
- Automatically delete items after an expiry
timestamp - Doesn’t consume any WCUs (i.e., no extra
cost) - The TTL attribute must be a “Number” data
type with “Unix Epoch timestamp” value - Expired items deleted within 48 hours of
expiration - Expired items, that haven’t been deleted,
appears in reads/queries/scans (if you don’t
want them, filter them out) - Expired items are deleted from both LSIs and GSIs
- A delete operation for each expired item enters the DynamoDB Streams (can help recover expired items)
- Use cases: reduce stored data by keeping only current items, adhere to regulatory obligations
O que é o DynamoDB TTL
- Recurso que permite definir tempo de expiração para itens da tabela
- quando habilitado remove automaticamente itens expirados
- útil para gerenciar dados obsoletos
- pode incluir um atributo ‘TimeToLive’ que representa data e hora da expiração
- somente em tabelas com chave primária definida
DynamoDB – Security & Other Features
- VPC Endpoints available to access DynamoDB without internet
- Access fully controlled by IAM
- Encryption at rest using KMS
- Encryption in transit using SSL / TLS
- Backup and Restore feature available
- Point in time restore like RDS
- No performance impact
- Global Tables
- Multi region, fully replicated, high performance
- Amazon Database Migration Service (DMS) can be used to migrate to
DynamoDB (from Mongo, Oracle, MySQL, S3, etc…) - You can launch a local DynamoDB on your computer for development purposes
AWS ElastiCache Overview
- The same way RDS is to get managed Relational Databases…
- ElastiCache is to get managed Redis or Memcached
- Caches are in-memory databases with really high performance, low latency
- Helps reduce load off of databases for read intensive workloads
- Helps make your application stateless
- Write Scaling using sharding
- Read Scaling using Read Replicas
- Multi AZ with Failover Capability
- AWS takes care of OS maintenance / patching, optimizations, setup, configuration, monitoring, failure recovery and backups
O que é o ElastiCache?
- serviço de cache gerenciado compatível com Memcached e Redis
O que é o Memcached?
Armazena dados em memória para reduzir cargas em bancos de dados, aumenta a velocidade de acesso ao banco de dados
Casos de uso do Memcached
- Aplicativos web
- e-commerce
- redes sociais
- apps de jogos
O que é o Redis?
Armazenamento de dados do tipo chave-valor, utilizado como banco de dados em memória, cache de sessão e cache de página.
Casos de uso do Redis
Análise de dados em tempo real, aplicativos de jogos, processamento de transações financeiras.
Redis Overview
- Redis is an in-memory key-value store
- Super low latency (sub ms)
- Cache survive reboots by default (it’s called persistence)
- Great to host
- User sessions
- Leaderboard (for gaming)
- Distributed states
- Relieve pressure on databases (such as RDS)
- Pub / Sub capability for messaging
- Multi AZ with Automatic Failover for disaster recovery if you don’t want to lose your cache data
- Support for Read Replicas
Aplicações do Redis
- Redis é um armazenamento de chave-valor na memória
- Latência super baixa (sub ms)
- O cache sobrevive a reinicializações por padrão (é chamado de persistência)
- Ótimo para hospedar
- Sessões do usuário
- Tabela de classificação (para jogos)
- Estados distribuídos
- Aliviar a pressão sobre bancos de dados (como RDS)
- Capacidade Pub/Sub para mensagens
- Multi AZ com failover automático para recuperação de desastres, caso não o faça
quer perder seus dados de cache - Suporte para réplicas de leitura
Memcached Overview
- Memcached is an in-memory object store
- Cache doesn’t survive reboots
Memcached Use Cases
- Quick retrieval of objects from memory
- Cache often accessed objects
- Overall, Redis has largely grown in popularity and has better feature sets than Memcached.
Example 1: we write 10 items per second, with item size 2 KB
We need 10 ∗ (2 𝐾𝐵/1 𝐾𝐵) = 20 𝑊𝐶𝑈𝑠
Example 2: we write 6 items per second, with item size 4.5 KB
We need 6 ∗ (5 𝐾𝐵/1 𝐾𝐵) = 30 𝑊𝐶𝑈𝑠 (4.5 gets rounded to the upper KB)
Example 3: we write 120 items per minute, with item size 2 KB
We need (120/60)∗ (2 𝐾𝐵/1 𝐾𝐵) = 4 𝑊𝐶𝑈s
- Example 1: 10 Strongly Consistent Reads per second, with item size 4 KB
We need 10∗(4 𝐾𝐵/4 𝐾𝐵) = 10 𝑅𝐶𝑈𝑠
Example 2: 16 Eventually Consistent Reads per second, with item size 12 KB
We need (16/2) * (12KB/4kB) = 24 RCUs
Example 3: 10 Strongly Consistent Reads per second, with item size 6 KB
We need 10*(8Kb/4Kb) = 20 RCUs