fbpx

Noções Básicas do Amazon S3

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

Vamos explorar os conceitos básicos do Amazon S3 com mais detalhes neste artigo.

 

Buckets

Um bucket é um contêiner (pasta da web) para objetos (arquivos) armazenados no Amazon S3. Todo objeto do Amazon S3 está contido em um bucket. Os buckets formam o namespace de nível superior para o Amazon S3 e nomes de bucket são globais. Isso significa que os nomes dos seus buckets devem ser exclusivos em todas as contas da AWS, como os nomes de domínio do DNS (Sistema de Nomes de Domínio), não apenas dentro da sua própria conta.

Os nomes dos intervalos podem conter até 63 letras minúsculas, números, hífens e pontos. Você pode criar e usar vários buckets. Você pode ter até 100 por conta, por padrão. Tendo solicitação direta a AWS, este número pode ser aumentado.

É uma prática recomendada usar nomes de grupos que contenham seu nome de domínio e estejam em conformidade com as regras para nomes DNS. Isso garante que os nomes dos seus buckets sejam seus, que possam ser usados ​​em todas as regiões e que hospedem sites estáticos.

 

Regiões da AWS

Embora o espaço para nome dos buckets do Amazon S3 seja global, cada bucket do Amazon S3 é criado em uma região específica que você escolher. Isso permite que você controle onde seus dados são armazenados.

Você pode criar e usar buckets localizados perto de um conjunto específico de usuários finais ou clientes, a fim de minimizar a latência, ou localizados em uma região específica para satisfazer as preocupações de localidade e soberania de dados ou localizados longe de suas instalações principais, a fim de satisfazer as necessidades de recuperação e conformidade de desastres.

Você controla a localização dos seus dados. Os dados em um bucket do Amazon S3 são armazenados nessa região, a menos que você os copie explicitamente para outro bucket localizado em uma região diferente.

 

 

Objetos

Objetos são as entidades ou arquivos armazenados nos buckets do Amazon S3. Um objeto pode armazenar praticamente qualquer tipo de dados em qualquer formato. Os objetos podem variar em tamanho de 0 bytes a 5 TB, e um único depósito pode armazenar um número ilimitado de objetos.

Isso significa que o Amazon S3 pode armazenar uma quantidade praticamente ilimitada de dados. Cada objeto consiste em dados (o próprio arquivo) e metadados (dados sobre o arquivo).  Isso significa que os dados de um objeto são tratados simplesmente como um fluxo de bytes – o Amazon S3 não sabe nem se importa com o tipo de dados que você está armazenando e o serviço não age de maneira diferente para dados de texto e dados binários.

Os metadados associados a um objeto Amazon S3 são um conjunto de pares de nome / valor que descrevem o objeto. Existem dois tipos de metadados: metadados do sistema e metadados do usuário.

Os metadados do sistema são criados e usados ​​pelo próprio Amazon S3 e incluem itens como a data da última modificação, tamanho do objeto, resumo MD5 e tipo de conteúdo HTTP.

Os metadados do usuário são opcionais e só podem ser especificados no momento em que um objeto é criado. Você pode usar metadados personalizados para marcar seus dados com atributos significativos para você.

 

Chaves

Todo objeto armazenado em um bucket S3 é identificado por um identificador exclusivo chamado chave. Você pode pensar na chave como um nome de arquivo. Uma chave pode ter até 1024 bytes de caracteres Unicode UTF-8, incluindo barras, barras invertidas, pontos e traços incorporados.

 

As chaves devem ser exclusivas em um único depósito, mas diferentes depósitos podem conter objetos com a mesma chave. A combinação de bucket, chave e ID da versão opcional identificam exclusivamente um objeto do Amazon S3.

 

URL do objeto

O Amazon S3 é armazenamento para a Internet, e todo objeto do Amazon S3 pode ser endereçado por uma URL exclusiva formada usando o terminal de serviços da Web, o nome do bloco e a chave do objeto.

 

Por exemplo, com a URL:

http://meubucket.s3.amazonaws.com/jose.doc

meubucket é o nome do bucket S3 e jose.doc é a chave ou o nome do arquivo.

 

Se outro objeto for criado, por exemplo:

http://meubucket.s3.amazonaws.com/do/re/mi/fa/jose.doc

o nome do bucket ainda é meubucket, mas agora a chave ou o nome do arquivo é a taxa da string /do/re/mi/fa/jose.doc

 

Uma chave pode conter caracteres delimitadores, como barras ou barras invertidas, para ajudá-lo a nomear e organizar logicamente seus objetos do Amazon S3, mas para o Amazon S3 é simplesmente um nome de chave longo em um espaço de nome simples. Não existe uma hierarquia real de arquivos e pastas.

 

Operações do Amazon S3

A API do Amazon S3 é intencionalmente simples, com apenas algumas operações comuns. Elas incluem:

 

  • Criar / excluir um bucket
  • Escrever um objeto
  • Ler um objeto
  • Excluir um objeto
  • Listar chaves em um bucket
  • Interface REST

A interface nativa do Amazon S3 é uma API REST (Representational State Transfer). Com a interface REST, você usa solicitações HTTP ou HTTPS padrão para criar e excluir buckets, listar chaves e ler e gravar objetos. O REST mapeia “verbos” HTTP padrão (métodos HTTP) para as operações familiares CRUD (Criar, Ler, Atualizar, Excluir).

Criar é HTTP PUT (e às vezes POST); read é HTTP GET; delete é HTTP DELETE; e update é HTTP POST (ou algumas vezes PUT). Sempre use solicitações de HTTPS para API do Amazon S3 para garantir que suas solicitações e dados estejam seguros.

Na maioria dos casos, os usuários não usam a interface REST diretamente, mas interagem com o Amazon S3 usando uma das interfaces de nível superior disponíveis. Isso inclui os SDKs (AWS Software Development Kits) (bibliotecas de wrapper) para iOS, Android, JavaScript, Java, .NET, Node.js, PHP, Python, Ruby, Go e C ++, a interface de linha de comando (CLI) da AWS, e o AWS Management Console.

O Amazon S3 originalmente suportava uma API SOAP (Simple Object Access Protocol) além da API REST, mas você deve usar a API REST. O ponto de extremidade HTTPS herdado ainda está disponível, mas novos recursos não são suportados.

 

Durabilidade e Disponibilidade

A durabilidade e a disponibilidade dos dados estão relacionadas, mas são conceitos ligeiramente diferentes.

A durabilidade aborda a pergunta: “Meus dados ainda estarão lá no futuro?”. A disponibilidade aborda a pergunta: “Posso acessar meus dados agora?”. O Amazon S3 foi projetado para fornecer recursos muito altos de durabilidade e disponibilidade muito alta para seus dados.

O armazenamento padrão do Amazon S3 foi projetado para 99,999999999% de durabilidade e 99,99% de disponibilidade de objetos em um determinado ano. Por exemplo, se você armazenar 10.000 objetos com o Amazon S3, poderá esperar, em média, a perda de um único objeto a cada 10.000.000 anos.

O Amazon S3 alcança alta durabilidade, armazenando automaticamente dados de forma redundante em vários dispositivos em várias instalações de uma região. Ele foi projetado para suportar a perda simultânea de dados em duas instalações sem perda de dados do usuário. O Amazon S3 fornece uma infraestrutura de armazenamento altamente durável, projetada para armazenamento de dados primários e de missão crítica.

Se você precisar armazenar dados derivados não críticos ou facilmente reproduzíveis (como miniaturas de imagens) que não exijam esse alto nível de durabilidade, você pode optar por usar o armazenamento de redundância reduzida (RRS) a um custo menor. O RRS oferece 99,99% de durabilidade com um custo menor de armazenamento do que o armazenamento tradicional Amazon S3.

Embora o armazenamento do Amazon S3 ofereça durabilidade muito alta no nível da infraestrutura, ainda é uma prática recomendada proteger contra exclusão ou substituição acidental de dados no nível do usuário, usando recursos adicionais como controle de versão, replicação entre regiões e exclusão do MFA.

 

Consistência dos Dados

O Amazon S3 é um sistema eventualmente consistente. Como seus dados são replicados automaticamente em vários servidores e locais em uma região, as alterações nos dados podem levar até algumas horas para propagar para todos os locais.

Como resultado, há algumas situações em que as informações que você lê imediatamente após uma atualização podem retornar dados obsoletos. Para PUTs de novos objetos, isso não é uma preocupação. Nesse caso, o Amazon S3 fornece consistência de leitura e pós-gravação. No entanto, para PUTs para objetos existentes (substituição de objeto em uma chave existente) e para DELETEs de objeto, o Amazon S3 fornece consistência eventual.

Consistência eventual significa que, se você colocar novos dados em uma chave existente, um GET subsequente poderá retornar os dados antigos. Da mesma forma, se você excluir um objeto, um GET subsequente para esse objeto ainda pode ler o objeto excluído.

Em todos os casos, as atualizações em uma única chave são atômicas – para leituras eventualmente consistentes, você obtém os novos dados ou os dados antigos, mas nunca uma mistura inconsistente de dados.

 

Controle de acesso

O Amazon S3 é seguro por padrão. Quando você cria um bucket ou objeto no Amazon S3, apenas você tem acesso.

Para permitir que você conceda acesso controlado a outras pessoas, o Amazon S3 fornece controles de acesso de granulação (ACLs) e controles de acesso de granulação fina (políticas de bucket do Amazon S3, políticas de gerenciamento de acesso e identidade da AWS [IAM] políticas e autenticação de cadeia de consulta).

As ACLs do Amazon S3 permitem conceder certas permissões de granularidade grossa: READ, WRITE ou FULL-CONTROL no nível do objeto ou do bucket. As ACLs são um mecanismo de controle de acesso herdado, criado antes da existência do IAM.

Hoje, as ACLs são mais usadas para um conjunto limitado de casos de uso, como habilitar o log do bucket ou tornar um bucket que hospeda um site estático legível pelo mundo.

 

As políticas de bucket do Amazon S3 são o mecanismo de controle de acesso recomendado para o Amazon S3 e fornecem um controle muito mais refinado. As políticas de bucket do Amazon S3 são muito semelhantes às políticas do IAM.

  • Eles estão associados ao recurso de bucket em vez de um principal do IAM.
  • Eles incluem uma referência explícita ao principal do IAM na política.

Esse princípio pode ser associado a uma conta AWS diferente, portanto, as políticas de bucket do Amazon S3 permitem atribuir acesso entre contas aos recursos do Amazon S3. Usando uma política de bucket do Amazon S3, você pode especificar quem pode acessá-lo, de onde (pelo bloco ou endereço IP do CIDR) ou durante o horário do dia.

Por fim, as políticas do IAM podem ser associadas diretamente às entidades do IAM que concedem acesso a um bucket do Amazon S3, assim como podem conceder acesso a qualquer serviço e recurso da AWS. Obviamente, você só pode atribuir políticas do IAM a entidades principais nas contas da AWS que você controla.

 

Hospedagem Estática de Sites

Um caso de uso muito comum para armazenamento do Amazon S3 é a hospedagem estática de sites. Muitos sites, principalmente os micros sites, não precisam dos serviços de um servidor da Web completo.

Um site estático significa que todas as páginas do site contêm apenas conteúdo estático e não requerem processamento no servidor, como PHP, ASP.NET ou JSP. (Observe que isso não significa que o site não pode ser interativo e dinâmico. Isso pode ser realizado com scripts do lado do cliente, como JavaScript incorporado em páginas da Web HTML estáticas.)

Os sites estáticos têm muitas vantagens: são muito rápidos, muito escaláveis ​​e podem ser mais seguros do que um site dinâmico típico. Se você hospedar um site estático no Amazon S3, também poderá aproveitar a segurança, durabilidade, disponibilidade e escalabilidade do Amazon S3.

 

Como todo objeto do Amazon S3 tem um URL, é relativamente simples transformar um bucket em um site. Para hospedar um site estático, basta configurar um bucket para hospedagem de sites e, em seguida, carregar o conteúdo do site estático no bucket.

 

Para configurar um bucket do Amazon S3 para hospedagem de site estático:

  1. Crie um bucket com o mesmo nome que o nome do host do site desejado.
  2. Carregue os arquivos estáticos no bucket.
  3. Torne todos os arquivos públicos (legíveis pelo mundo).
  4. Habilite a hospedagem estática de sites para o bucket. Isso inclui especificar um documento de índice e um documento de erro.
  5. O site estará agora disponível no URL do site S3:

<nome do buket> .s3-website- <AWS-region> .amazonaws.com.

  1. Crie um nome DNS amigável em seu próprio domínio para o site usando um DNS CNAME ou um alias do Amazon Route 53 que seja resolvido para o URL do site do Amazon S3.
  2. O site estará agora disponível no nome de domínio do seu site.