fbpx

Recursos avançados do Amazon S3

Compartilhar no facebook
Compartilhar no linkedin
Compartilhar no twitter
Compartilhar no whatsapp
Compartilhar no telegram

Além do básico, existem alguns recursos avançados do Amazon S3 com os quais você também deve estar familiarizado como logging, MFA, replicação, prefixo, etc.

 

Prefixos e delimitadores

Embora o Amazon S3 use uma estrutura plana em um bucket, ele suporta o uso de parâmetros de prefixo e delimitador ao listar os nomes das chaves.

Esse recurso permite organizar, navegar e recuperar os objetos em um bucket hierarquicamente. Normalmente, você usaria uma barra (/) ou barra invertida (\) como delimitador e, em seguida, nomes de chaves com delimitadores incorporados para emular uma hierarquia de arquivos e pastas no espaço de nomes de chaves de objetos simples de um bucket. Por exemplo, convém armazenar uma série de logs do servidor pelo nome do servidor (como servidor2020), mas organizados por ano e mês, da seguinte forma:

 

logs / 2020 / janeiro / servidor2020.log

logs / 2020 / fevereiro / servidor2020.log

logs / 2020 / março / servidor2020.log

 

A API REST, os SDKs do wrapper, a AWS CLI e o Amazon Management Console suportam o uso de delimitadores e prefixos. Esse recurso permite organizar logicamente novos dados e facilmente manter a estrutura hierárquica de pasta e arquivo de dados existentes carregados ou armazenados em backup dos sistemas de arquivos tradicionais.

Usado junto com políticas de bucket do IAM ou Amazon S3, prefixos e delimitadores também permitem criar o equivalente a “subdiretórios” departamentais ou “diretórios pessoais” do usuário em um único bloco, restringindo ou compartilhando o acesso a esses “subdiretórios” (definidos por prefixos), conforme necessário.

Use delimitadores e prefixos de objetos para organizar hierarquicamente os objetos em seus buckets do Amazon S3, mas lembre-se sempre de que o Amazon S3 não é realmente um sistema de arquivos.

 

Classes de Armazenamento

O Amazon S3 oferece uma variedade de classes de armazenamento adequadas para vários casos de uso.

O Amazon S3 Standard oferece armazenamento de objetos de alta durabilidade, alta disponibilidade, baixa latência e alto desempenho para uso geral. Como fornece baixa latência de primeiro byte e alta taxa de transferência, o Standard é adequado para armazenamento de curto ou longo prazo de dados acessados ​​com freqüência.

Na maioria dos casos de uso de uso geral, o Amazon S3 Standard é o por onde começar.

Amazon S3 Standard – Acesso infrequente (Standard-IA) oferece a mesma durabilidade, baixa latência e alta taxa de transferência que o Amazon S3 Standard, mas foi projetado para dados de longa duração e acesso com menos frequência. O Standard-IA tem um custo de armazenamento por GB-mês mais baixo que o Standard, mas o modelo de preço também inclui um tamanho mínimo de objeto (128 KB), duração mínima (30 dias) e custos de recuperação por GB, portanto, é mais adequado para infrequentemente dados acessados ​​armazenados por mais de 30 dias.

O armazenamento de redundância reduzida (RRS) do Amazon S3 oferece durabilidade um pouco menor (4 noves) do que a Standard ou Standard-IA a um custo reduzido. É o mais apropriado para dados derivados que podem ser facilmente reproduzidos, como miniaturas de imagens.

Por fim, a classe de armazenamento Amazon Glacier oferece armazenamento em nuvem seguro, durável e de custo extremamente baixo para dados que não requerem acesso em tempo real, como arquivos e backups de longo prazo. Para manter os custos baixos, o Amazon Glacier é otimizado para dados acessados ​​com pouca frequência, onde é adequado um tempo de recuperação de várias horas.

Para recuperar um objeto Amazon Glacier, você emite um comando de restauração usando uma das APIs do Amazon S3; três a cinco horas depois, o objeto Amazon Glacier é copiado para o Amazon S3 RRS. Observe que a restauração simplesmente cria uma cópia no Amazon S3 RRS. O objeto de dados original permanece no Amazon Glacier até excluído explicitamente.

 

Lembre-se também de que o Amazon Glacier permite recuperar até 5% dos dados do Amazon S3 armazenados no Amazon Glacier gratuitamente a cada mês. Restaurações além do subsídio diário de restauração incorrem em uma taxa de restauração. Consulte a página de preços do Amazon Glacier no site da AWS para obter detalhes completos. Além de atuar como uma camada de armazenamento no Amazon S3, o Amazon Glacier também é um serviço de armazenamento autônomo com uma API separada e algumas características exclusivas.

No entanto, quando você usa o Amazon Glacier como uma classe de armazenamento do Amazon S3, sempre interage com os dados por meio das APIs do Amazon S3. Consulte a seção Amazon Glacier para obter mais detalhes.

Defina uma política de recuperação de dados para limitar as restaurações na camada gratuita ou no limite máximo de GB por-hora para evitar ou minimizar as taxas de restauração do Amazon Glacier.

 

Gerenciamento do Ciclo de Vida do Objeto

O Amazon S3 Object Lifecycle Management é aproximadamente equivalente às camadas de armazenamento automatizadas nas infraestruturas tradicionais de armazenamento de TI.

Em muitos casos, os dados têm um ciclo de vida natural, começando como dados “quentes” (acessados ​​com freqüência), movendo-se para dados “mornos” (acessados ​​com menos frequência) à medida que envelhece e terminando sua vida como “fria” (backup a longo prazo ou arquivar) dados antes de uma eventual exclusão.

Por exemplo, muitos documentos comerciais são acessados ​​com frequência quando são criados, e se tornam muito menos frequentemente acessados ​​ao longo do tempo. Em muitos casos, no entanto, as regras de conformidade exigem que os documentos comerciais sejam arquivados e mantidos acessíveis por anos.

Da mesma forma, estudos mostram que os backups de arquivos, sistemas operacionais e bancos de dados são acessados ​​com mais frequência nos primeiros dias após a criação, geralmente para restaurar após um erro inadvertido.

Após uma semana ou duas, esses backups permanecem um ativo crítico, mas são muito menos prováveis ​​de serem acessados ​​para uma restauração. Em muitos casos, as regras de conformidade exigem que um certo número de backups seja mantido por muitos anos.

Usando as regras de configuração do ciclo de vida do Amazon S3, você pode reduzir significativamente os custos de armazenamento ao fazer a transição automática de dados de uma classe de armazenamento para outra ou até mesmo excluir dados automaticamente após um período de tempo. Por exemplo, as regras do ciclo de vida para dados de backup podem ser:

 

  1. Armazene dados de backup inicialmente no Amazon S3 Standard.
  2. Após 30 dias, faça a transição para o Amazon Standard-IA.
  3. Após 90 dias, faça a transição para o Amazon Glacier.
  4. Após 3 anos, exclua.

 

As configurações do ciclo de vida são anexadas ao bucket e podem ser aplicadas a todos os objetos ou apenas aos objetos especificados por um prefixo.

 

Criptografia

É altamente recomendável que todos os dados confidenciais armazenados no Amazon S3 sejam criptografados, tanto em trânsito quanto em repouso.

Para criptografar os dados do Amazon S3 em trânsito, você pode usar os endpoint (endpoints) da API do Amazon S3 Secure Sockets Layer (SSL). Isso garante que todos os dados enviados para e do Amazon S3 sejam criptografados enquanto estiver em trânsito usando o protocolo HTTPS.

Para criptografar os dados do Amazon S3 em repouso, você pode usar várias variações de SSE (Server-Side Encryption).

 

O Amazon S3 criptografa seus dados no nível do objeto enquanto os grava em discos em seus datacenters e os descriptografa para você quando você os acessa.

Todo o SSE executado pelo Amazon S3 e pelo AWS Key Management Service (Amazon KMS) usa o Advanced Encryption Standard (AES) de 256 bits. Você também pode criptografar os dados do Amazon S3 em repouso usando o lado do cliente, criptografando seus dados no cliente antes de enviá-los para o Amazon S3.

 

SSE-S3 (chaves gerenciadas pela AWS)

Essa é uma solução de criptografia “estilo caixa de seleção” totalmente integrada, na qual a AWS lida com o gerenciamento e a proteção de chaves do Amazon S3. Cada objeto é criptografado com uma chave exclusiva.

A própria chave do objeto é então criptografada por uma chave mestra separada. Uma nova chave mestra é emitida pelo menos mensalmente, com a AWS rotacionando as chaves. Dados criptografados, chaves de criptografia e chaves mestras são todos armazenados separadamente em hosts seguros, aumentando ainda mais a proteção.

 

SSE-KMS (chaves AWS KMS)

Esta é uma solução totalmente integrada em que a Amazon lida com o gerenciamento e a proteção de chaves do Amazon S3, mas onde você gerencia as chaves.

O SSE-KMS oferece vários benefícios adicionais em comparação com o SSE-S3. Usando o SSE-KMS, existem permissões separadas para o uso da chave mestra, que fornecem proteção contra acesso não autorizado aos seus objetos armazenados no Amazon S3 e uma camada adicional de controle.

O AWS KMS também fornece auditoria, para que você possa ver quem usou sua chave para acessar qual objeto e quando eles tentaram acessar esse objeto. O AWS KMS também permite exibir quaisquer tentativas falhas de acessar dados de usuários que não tinham permissão para descriptografar os dados.

SSE-C (chaves fornecidas pelo cliente)

É usado quando você deseja manter suas próprias chaves de criptografia, mas não deseja gerenciar ou implementar sua própria biblioteca de criptografia do lado do cliente.

Com o SSE-C, a AWS faz a criptografia / descriptografia de seus objetos enquanto você mantém controle total das chaves usadas para criptografar / descriptografar os objetos no Amazon S3.

 

Criptografia do lado do cliente

Criptografia do lado do cliente refere-se à criptografia de dados no lado do cliente do seu aplicativo antes de enviá-los ao Amazon S3. Você tem as duas opções a seguir para usar chaves de criptografia de dados:

 

  • Use uma chave mestra do cliente gerenciada pelo AWS KMS.
  • Use uma chave mestra do lado do cliente.

 

Ao usar a criptografia do lado do cliente, você mantém o controle ponta a ponta do processo de criptografia, incluindo o gerenciamento das chaves de criptografia. Para máxima simplicidade e facilidade de uso, use a criptografia do servidor com chaves gerenciadas pela AWS (SSE-S3 ou SSE-KMS).

 

Versionamento

O controle de versão do Amazon S3 ajuda a proteger seus dados contra exclusão acidental ou mal-intencionada, mantendo várias versões de cada objeto no bucket, identificadas por um ID de versão exclusivo.

O controle de versão permite preservar, recuperar e restaurar todas as versões de todos os objetos armazenados no seu bucket do Amazon S3. Se um usuário fizer uma alteração acidental ou excluir um objeto maliciosamente no seu depósito S3, você poderá restaurar o objeto ao seu estado original simplesmente referenciando o ID da versão, além do depósito e da chave do objeto.

O controle de versão está ativado no nível do bucket. Uma vez ativado, o controle de versão não pode ser removido de um bucket, só pode ser suspenso.

 

Excluisão por MFA (MFA Delete)

O MFA Delete adiciona outra camada de proteção de dados sobre a versão do bucket. A exclusão do MFA requer autenticação adicional para excluir permanentemente uma versão do objeto ou alterar o estado da versão de um bucket.

Além das credenciais de segurança normais, o MFA Delete exige um código de autenticação (uma senha temporária e única) gerada por um hardware ou dispositivo virtual de autenticação multifator (MFA). Observe que a exclusão MFA só pode ser ativado pela conta raiz.

 

URLs pré-assinadas

Todos os objetos do Amazon S3, por padrão, são privados, o que significa que apenas o proprietário tem acesso.

No entanto, o proprietário do objeto pode opcionalmente compartilhar objetos com outras pessoas, criando uma URL pré-assinada, usando suas próprias credenciais de segurança para conceder permissão por tempo limitado para fazer o download dos objetos.

Ao criar uma URL pré-assinada para seu objeto, você deve fornecer suas credenciais de segurança e especificar um nome de bloco, uma chave de objeto, o método HTTP (GET para fazer o download do objeto) e uma data e hora de vencimento.

Os URLs pré-assinados são válidos apenas pela duração especificada. Isso é particularmente útil para proteger contra a “captura de conteúdo” de conteúdo da Web, como arquivos de mídia armazenados no Amazon S3.

 

Upload de várias partes (Multipart Upload)

Para oferecer melhor suporte ao upload ou cópia de objetos grandes, o Amazon S3 fornece a API de upload com várias partes. Isso permite que você faça upload de objetos grandes como um conjunto de partes, o que geralmente oferece uma melhor utilização da rede (por meio de transferências paralelas), a capacidade de pausar e retomar e a capacidade de fazer upload de objetos em que o tamanho é inicialmente desconhecido.

O upload de várias partes é um processo de três etapas: iniciação, upload das peças e conclusão (ou abortamento). As peças podem ser carregadas independentemente em ordem arbitrária, com retransmissão, se necessário. Após o upload de todas as peças, o Amazon S3 reúne as peças para criar um objeto.

Em geral, você deve usar o upload de várias partes para objetos maiores que 100 Mbytes e o upload de várias partes para objetos maiores que 5 GB. Ao usar as APIs de baixo nível, você deve dividir o arquivo a ser carregado em partes e acompanhar as partes.

Ao usar as APIs de alto nível e os comandos Amazon S3 de alto nível na CLI da AWS (aws s3 cp, aws s3 mv e aws s3 sync), o upload de várias partes é executado automaticamente para objetos grandes.

 

Replicação entre regiões

A replicação entre regiões é um recurso do Amazon S3 que permite replicar de forma assíncrona todos os novos objetos no bucket de origem em uma região da AWS para um bucket de destino em outra região.

Todos os metadados e ACLs associados ao objeto também fazem parte da replicação.

Depois de configurar a replicação entre regiões no bloco de origem, qualquer alteração nos dados, metadados ou ACLs em um objeto aciona uma nova replicação no bloco de destino.

 

Para habilitar a replicação entre regiões, o controle de versão deve estar ativado para os buckets de origem e de destino e você deve usar uma política do IAM para conceder ao Amazon S3 permissão para replicar objetos em seu nome. A replicação entre regiões é comumente usada para reduzir a latência necessária para acessar objetos no Amazon S3, colocando objetos mais próximos de um conjunto de usuários ou para atender aos requisitos de armazenamento de dados de backup a uma certa distância dos dados de origem originais.

Se ativada em um bucket existente, a replicação entre regiões replicará apenas novos objetos. Os objetos existentes não serão replicados e devem ser copiados para o novo bucket por meio de um comando separado.

 

Logging

Para rastrear solicitações ao seu bucket do Amazon S3, você pode habilitar os logs de acesso do servidor Amazon S3.

O log está desativado por padrão, mas pode ser facilmente ativado. Quando você habilita o log para um bucket (o bucket de origem), deve escolher onde os logs serão armazenados (o bucket de destino).

Você pode armazenar logs de acesso no mesmo bucket ou em um bucket diferente. De qualquer forma, é opcional (mas uma prática recomendada) especificar um prefixo, como logs / ou nomedoseubucket / logs /, para que você possa identificar seus logs com mais facilidade.

Uma vez ativado, os logs são entregues com o máximo de esforço, com um pequeno atraso. Os logs incluem informações como:

  • Conta do solicitante e endereço IP
  • Nome do bloco
  • Tempo de solicitação
  • Ação (GET, PUT, LIST e assim por diante)
  • Status da resposta ou código de erro
  • Notificações de Eventos

Notificações por Eventos

As notificações de eventos do Amazon S3 podem ser enviadas em resposta a ações executadas em objetos carregados ou armazenados no Amazon S3. As notificações de eventos permitem executar fluxos de trabalho, enviar alertas ou executar outras ações em resposta a alterações em seus objetos armazenados no Amazon S3.

Você pode usar as notificações de eventos do Amazon S3 para configurar acionadores para executar ações, como transcodificar arquivos de mídia ao serem carregados, processar arquivos de dados quando estiverem disponíveis e sincronizar objetos do Amazon S3 com outros armazenamentos de dados.

As notificações de eventos do Amazon S3 são configuradas no nível do bucket e você pode configurá-las por meio do console do Amazon S3, da API REST ou do AWS SDK. O Amazon S3 pode publicar notificações quando novos objetos são criados (por uma conclusão de upload PUT, POST, COPY ou multipart), quando objetos são removidos (por um DELETE) ou quando o Amazon S3 detecta que um objeto RRS foi perdido.

Você também pode configurar notificações de eventos com base no nome do objeto prefixos e sufixos. As mensagens de notificação podem ser enviadas por meio do Amazon Simple Notification Service (Amazon SNS) ou do Amazon Simple Queue Service (Amazon SQS) ou entregues diretamente à AWS Lambda para invocar as funções da AWS Lambda.

 

Melhores Práticas, Padrões e Desempenho

É um padrão comum usar o armazenamento Amazon S3 em ambientes e aplicativos híbridos de TI.

Por exemplo, os dados em sistemas de arquivos locais, bancos de dados e arquivos de conformidade podem ser facilmente armazenados em backup pela Internet no Amazon S3 ou Amazon Glacier, enquanto o armazenamento principal do aplicativo ou banco de dados permanece no local.

Outro padrão comum é usar o Amazon S3 como armazenamento “blob” em massa para dados, mantendo um índice para esses dados em outro serviço, como o Amazon DynamoDB ou o Amazon RDS. Isso permite pesquisas rápidas e consultas complexas nos nomes das chaves, sem listar as chaves continuamente.

O Amazon S3 será escalado automaticamente para suportar taxas de solicitação muito altas, reparticionando automaticamente seus buckets conforme necessário.

Se você precisar de taxas de solicitação superiores a 100 solicitações por segundo, convém revisar as diretrizes de boas práticas do Amazon S3 no Guia do desenvolvedor. Para oferecer suporte a taxas de solicitação mais altas, é melhor garantir algum nível de distribuição aleatória de chaves, por exemplo, incluindo um hash como prefixo dos nomes das chaves.