Introdução ao Amazon S3 - Amazon Simple Storage Service

Introdução ao Amazon S3

Esta introdução ao Amazon Simple Storage Service (Amazon S3) fornece um resumo detalhado desse serviço da web. Depois de ler esta seção, você deverá ter uma boa ideia do que ele oferece e de como ele pode ser ajustado em sua empresa.

Visão geral do Amazon S3 e este guia

O Amazon S3 tem uma interface simples de serviços da web que você pode usar para armazenar e recuperar qualquer quantidade de dados, a qualquer momento, em qualquer lugar da web.

Este guia descreve como você envia solicitações para criar buckets, armazenar e recuperar objetos e gerenciar permissões em seus recursos. O guia também descreve o controle de acesso e o processo de autenticação. O controle de acesso define quem pode acessar objetos e buckets no Amazon S3 e o tipo de acesso (por exemplo, LEITURA e GRAVAÇÃO). O processo de autenticação verifica a identidade de um usuário que está tentando acessar o Amazon Web Services (AWS).

Vantagens do uso do Amazon S3

O Amazon S3 foi desenvolvido intencionalmente com um conjunto mínimo de recursos com foco em simplicidade e robustez. Veja a seguir algumas das vantagens de usar o Amazon S3:

  • Criar buckets – crie e dê um nome a um bucket que armazena dados. Os buckets são contêineres fundamentais no Amazon S3 para armazenamento de dados físico.

  • Armazenar dados – armazene uma quantidade infinita de dados em um bucket. Carregue quantos objetos desejar em um bucket do Amazon S3. Cada objeto pode conter até 5 TB de dados. Cada objeto é armazenado e recuperado usando uma chave exclusiva atribuída pelo desenvolvedor.

  • Fazer download de dados – faça download de seus dados ou permita que outras pessoas façam. Faça download de seus dados a qualquer momento ou permita que outros façam o mesmo.

  • Permissões – conceda ou negue acesso a outras pessoas que desejam carregar ou baixar dados no bucket do Amazon S3. Conceda permissões para upload ou para download a três tipos de usuário. Os mecanismos de autenticação podem ajudar a manter os dados protegidos contra acesso não autorizado.

  • Interfaces padrão – use as interfaces REST e SOAP baseadas em padrões desenvolvidas para funcionar com qualquer toolkit de desenvolvimento da Internet.

    nota

    O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST ou os SDKs da AWS.

Conceitos do Amazon S3

Esta seção descreve os conceitos básicos e a terminologia que você precisa entender para usar o Amazon S3 de maneira efetiva. Eles são apresentados na ordem em que você muito provavelmente os encontrará.

Buckets

Um bucket é um contêiner para objetos armazenados no Amazon S3. Cada objeto está contido em um bucket. Por exemplo, se o objeto chamado photos/puppy.jpg estiver armazenado no bucket awsexamplebucket1 da região Oeste dos EUA (Oregon), ele poderá ser endereçado usando o URL https://awsexamplebucket1.s3.us-west-2.amazonaws.com/photos/puppy.jpg.

Buckets atendem a várias finalidades:

  • Eles organizam o namespace do Amazon S3 no nível mais elevado.

  • Identificam a conta responsável por alterações no armazenamento e na transferência de dados.

  • Exercem uma função no controle do acesso.

  • Servem como a unidade de agregação para relatório de uso.

É possível configurar os buckets para que sejam criados em uma região específica da AWS. Para obter mais informações, consulte Acessar um bucket. Você também pode configurar um bucket para que sempre que um objeto for adicionado, o Amazon S3 gere um ID exclusivo de versão e o atribua ao objeto. Para obter mais informações, consulte Usar versionamento.

Para obter mais informações sobre buckets, consulte Trabalho com buckets do Amazon S3.

Objetos

Os objetos são as entidades fundamentais armazenadas no Amazon S3. Os objetos consistem em metadados e dados de objeto. A porção de dados não é visível para o Amazon S3. Os metadados são um conjunto de pares de nome e valor que descrevem o objeto. Eles incluem alguns metadados padrão, como a data da última modificação, e metadados HTTP padrão, como Content-Type. Você também pode especificar metadados personalizados no momento em que o objeto é armazenado.

Um objeto é identificado exclusivamente em um bucket por uma chave (nome) e um ID de versão. Para obter mais informações, consulte Chaves e Usar versionamento.

Chaves

Uma chave é um identificador exclusivo de um objeto em um bucket. Cada objeto em um bucket tem exatamente uma chave. A combinação de um bucket, uma chave e um ID de versão identificam exclusivamente cada objeto. Portanto, é possível pensar no Amazon S3 como um mapa de dados básico entre "bucket + chave + versão" e o objeto em si. Cada objeto no Amazon S3 pode ser endereçado exclusivamente por meio da combinação do endpoint de serviço da web, do nome de bucket, da chave e, opcionalmente, de uma versão. Por exemplo, no URL https://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl, "doc" é o nome do bucket e "2006-03-01/AmazonS3.wsdl" é a chave.

Para obter mais informações sobre chaves de objeto, consulte Chaves de objeto.

Regiões

Você pode escolher a região geográfica da AWS onde o Amazon S3 armazenará os buckets criados. É possível escolher uma região para otimizar a latência, minimizar os custos ou atender a requisitos regulatórios. Os objetos armazenados em uma região nunca saem dela, a não ser que você os transfira explicitamente para outra região. Por exemplo, os objetos armazenados na região Europa (Irlanda) nunca saem dela.

nota

Só é possível acessar o Amazon S3 e seus recursos em regiões da AWS que estão habilitadas para sua conta.

Para obter uma lista de endpoints e regiões do Amazon S3 disponíveis, consulte Regiões e endpoints na Referência geral da AWS.

Modelo de consistência de dados do Amazon S3

O Amazon S3 fornece consistência de leitura após gravação para PUTS de novos objetos em seu bucket do S3 em todas as regiões com uma advertência. A advertência é que, se você fizer uma solicitação HEAD ou GET para um nome de chave antes que o objeto seja criado e criar o objeto logo depois, um GET subsequente poderá não retornar o objeto devido à consistência eventual.

O Amazon S3 oferece consistência eventual para substituir PUTS e DELETES em todas as regiões.

As atualizações em uma única chave são atômicas. Por exemplo, se você executar PUT para uma chave existente, uma leitura subsequente poderá retornar os dados antigos ou os dados atualizados, mas nunca retornará dados corrompidos ou parciais.

O Amazon S3 atinge alta disponibilidade replicando dados entre vários servidores nos datacenters da AWS. Se uma solicitação PUT for bem-sucedida, os dados serão armazenados com segurança. No entanto, as informações sobre as alterações devem ser replicadas no Amazon S3, o que pode demorar algum tempo e, portanto, você pode observar os seguintes comportamentos:

  • Um processo grava um novo objeto no Amazon S3 e imediatamente lista as chaves em seu bucket. Até que a alteração seja totalmente propagada, o objeto poderá não aparecer na lista.

  • Um processo substitui um objeto existente e imediatamente tenta lê-lo. Até que a alteração seja totalmente propagada, o Amazon S3 poderá retornar os dados anteriores.

  • Um processo exclui um objeto existente e imediatamente tenta lê-lo. Até que a exclusão seja totalmente propagada, o Amazon S3 poderá retornar os dados excluídos.

  • Um processo exclui um objeto existente e imediatamente lista as chaves em seu bucket. Até que a exclusão seja totalmente propagada, o Amazon S3 poderá listar o objeto excluído.

nota
  • No momento, o Amazon S3 não oferece suporte ao bloqueio de objetos para atualizações simultâneas. Se duas solicitações PUT forem realizadas simultaneamente na mesma chave, a solicitação com o time stamp mais recente será a escolhida. Se isso for um problema, você precisará criar um mecanismo de bloqueio de objetos em seu aplicativo.

    O bloqueio de objetos é diferente do recurso S3 Bloqueio de objetos. Com o S3 Bloqueio de objetos, é possível armazenar objetos usando um modelo write-once-read-many – WORM (gravação única e várias leituras) e impedir que um objeto seja excluído ou substituído por um período fixo ou indefinidamente. Para obter mais informações, consulte Bloquear objetos usando o S3 Bloqueio de objetos.

  • As atualizações são baseadas em chave. Não há possibilidade de realizar atualizações atômicas entre chaves. Por exemplo, você não pode tornar a atualização de uma chave dependente da atualização de outra chave a menos que você desenvolva essa funcionalidade em seu aplicativo.

As configurações de bucket têm um modelo de consistência eventual semelhante, com as mesmas advertências. Por exemplo, se você excluir um bucket e listar imediatamente todos os buckets, o bucket excluído ainda poderá ser exibido na lista.

A tabela a seguir descreve as características de uma leitura eventualmente consistente e uma leitura consistente.

Leitura eventualmente consistente Leitura consistente
Leituras obsoletas possíveis Sem leituras obsoletas
Menor latência de leitura Potencial latência mais alta de leitura
Throughput mais alto de leitura Potencial throughput mais baixo de leitura

Aplicativos simultâneos

Esta seção fornece exemplos de solicitações de leitura eventualmente consistente e de leitura consistente quando vários clientes estão gravando nos mesmos itens.

Neste exemplo, W1 (gravação 1) e W2 (gravação 2) são concluídas antes do início de R1 (leitura 1) e R2 (leitura 2). Para uma leitura consistente, R1 e R2 retornam color = ruby. Para uma leitura eventualmente consistente, R1 e R2 podem retornar color = red ou color = ruby, dependendo do tempo decorrido.

No próximo exemplo, a W2 não é encerrada antes do início da R1. Portanto, a R1 pode retornar color = ruby ou color = garnet para uma leitura consistente ou para uma leitura eventualmente consistente. Além disso, dependendo do tempo decorrido, uma leitura eventualmente consistente poderá retornar nenhum resultado.

Para uma leitura consistente, a R2 retorna color = garnet. Para uma leitura eventualmente consistente, R2 pode retornar color = ruby ou color = garnet, dependendo do tempo decorrido.

No último exemplo, o cliente 2 realiza a W2 antes de o Amazon S3 retornar um êxito para a W1, portanto, o resultado do valor final é desconhecido (color = garnet ou color = brick). Todas as leituras subsequentes (leitura consistente ou eventualmente consistente) podem retornar qualquer um dos valores. Além disso, dependendo do tempo decorrido, uma leitura eventualmente consistente poderá retornar nenhum resultado.

Recursos do Amazon S3

Esta seção descreve recursos importantes do Amazon S3.

Classes de armazenamento

O Amazon S3 oferece diversas classes de armazenamento criadas para diferentes casos de uso. Elas incluem o Amazon S3 STANDARD para armazenamento de finalidades gerais para dados acessados frequentemente, Amazon S3 STANDARD_IA para dados de longa duração, mas acessados com menos frequência, e S3 Glacier para armazenamentos a longo prazo.

Para obter mais informações, consulte Classes de armazenamento do Amazon S3.

Políticas de buckets

As políticas de bucket fornecem controle de acesso centralizado aos buckets e objetos com base em várias condições, incluindo operações do Amazon S3, solicitantes, recursos e aspectos da solicitação (por exemplo, endereço IP). As políticas são expressas na linguagem de políticas de acesso e permitem gerenciamento centralizado de permissões. Permissões associadas a um bucket aplicam-se a todos os objetos nesse bucket.

Usuários individuais e empresas podem usar políticas de bucket. Quando as empresas se registram no Amazon S3, elas criam uma conta. Depois disso, a empresa se torna um sinônimo da conta. As contas são financeiramente responsáveis pelos recursos da AWS que elas (e seus funcionários) criam. As contas têm a capacidade de conceder permissões às políticas de buckets e de atribuir permissões aos funcionários com base em uma variedade de condições. Por exemplo, uma conta pode criar uma política que dá a um usuário acesso de gravação:

  • Para um bucket específico do S3

  • Na rede corporativa de uma conta

  • Durante o horário comercial

Uma conta pode conceder a um usuário acesso limitado de leitura e gravação, mas permitir que outro crie e exclua buckets também. Uma conta pode permitir que vários escritórios locais armazenem seus relatórios diários em um único bucket. Ela pode permitir que cada escritório grave apenas um determinado conjunto de nomes (por exemplo, "Nevada/*" ou "Utah/*") e apenas do intervalo de endereços IP do escritório.

Ao contrário das listas de controle de acesso (descritas posteriormente), que podem adicionar (conceder) permissões somente em objetos individuais, as políticas podem adicionar ou negar permissões em todos os objetos (ou em um subconjunto) em um bucket. Com uma solicitação, uma conta pode definir as permissões de qualquer número de objetos em um bucket. Uma conta pode usar caracteres curinga (semelhantes a operadores de expressão regulares) nos nomes de recursos da Amazon (ARNs) e outros valores. Depois disso, a conta pode controlar o acesso a grupos de objetos que começam com um prefixo comum ou terminam com uma extensão específica, como .html.

Só o proprietário do bucket tem permissão para associar uma política a um bucket. As políticas (escritas na linguagem de políticas de acesso) permitem ou negam solicitações com base em:

  • Operações em buckets do Amazon S3 (como PUT ?acl) e operações em objetos (como PUT Object ou GET Object)

  • Solicitante

  • Condições especificadas na política

Uma conta pode controlar o acesso com base em operações específicas do Amazon S3, como GetObject, GetObjectVersion, DeleteObject ou DeleteBucket.

As condições podem ser aspectos, como endereços IP, intervalos de endereços IP em notação CIDR, datas, agentes de usuário, referenciador HTTP e transportes (HTTP e HTTPS).

Para obter mais informações, consulte Uso de políticas de bucket e políticas de usuário.

AWS Identity and Access Management

Você pode usar o AWS Identity and Access Management (IAM) para gerenciar o acesso a recursos do Amazon S3.

Por exemplo, você pode usar IAM com Amazon S3 para controlar o tipo de acesso de um usuário ou grupo de usuários a partes específicas do bucket do Amazon S3 que sua conta da AWS possui.

Para obter mais informações sobre IAM, consulte o seguinte:

Listas de controle de acesso

É possível controlar o acesso a cada um de seus buckets e objetos usando uma lista de controle de acesso (ACL). Para obter mais informações, consulte Gerenciar o acesso com ACLs.

Versionamento

É possível usar o versionamento para manter diversas versões de um objeto no mesmo bucket. Para obter mais informações, consulte Versionamento de objeto.

Operações

Veja a seguir as operações mais comuns que você executará por meio da API.

Operações comuns

  • Criar um bucket – crie e dê um nome ao seu próprio bucket para armazenar seus objetos.

  • Gravar um objeto – armazene dados criando ou substituindo um objeto. Ao gravar um objeto, você especifica uma chave exclusiva no namespace de seu bucket. Essa também é uma boa hora para especificar qualquer controle de acesso desejado no objeto.

  • Ler um objeto – leia os dados de volta. Você pode baixar os dados via HTTP ou BitTorrent.

  • Excluir um objeto – exclua alguns de seus dados.

  • Listar chaves – liste as chaves contidas em um de seus buckets. Você pode filtrar a lista de chaves com base em um prefixo.

Essas operações e todas as outras funcionalidades são descritas em detalhes durante todo este guia.

Interfaces de programação de aplicativos (API) do Amazon S3

A arquitetura do Amazon S3 foi desenvolvida para ser neutra em termos de linguagem de programação, usando as interfaces compatíveis da AWS para armazenar e recuperar objetos.

O Amazon S3 fornece uma interface REST e uma interface SOAP. Elas são semelhantes, mas há algumas diferenças. Por exemplo, na interface REST, os metadados são retornados em cabeçalhos HTTP. Como só oferecemos suporte a solicitações HTTP de até 4 KB (sem incluir o corpo), a quantidade de metadados que você pode fornecer é restrita.

nota

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST ou os SDKs da AWS.

A interface REST

A API REST é uma interface HTTP para o Amazon S3. Usando REST, você usa solicitações HTTP padrão criar, buscar e excluir bucket e objetos.

Você pode usar qualquer toolkit compatível com HTTP para usar a API REST. Você pode até usar um navegador para buscar objetos, desde que eles possam ser lidos anonimamente.

A API REST usa os cabeçalhos padrão e os códigos de status HTTP, para que os navegadores e os toolkits padrão funcionem como esperado. Em algumas áreas, adicionamos funcionalidade ao HTTP (por exemplo, adicionamos cabeçalhos para oferecer suporte ao controle de acesso). Nesses casos, fizemos o melhor para adicionar nova funcionalidade de uma forma que correspondesse ao estilo de uso padrão do HTTP.

A interface SOAP

nota

O suporte de SOAP via HTTP está obsoleto, mas continua disponível via HTTPS. Novos recursos do Amazon S3 não serão compatíveis com o SOAP. Recomendamos que você use a API REST ou os SDKs da AWS.

A API SOAP fornece uma interface SOAP 1.1 usando a codificação literal de documentos. A maneira mais comum de usar o SOAP é fazer download do WSDL (consulte https://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl), usar um toolkit do SOAP, como o Apache Axis ou o Microsoft .NET, para criar associações e, depois, escrever código que use as associações para chamar o Amazon S3.

Pagar pelo Amazon S3

A definição de preço para o Amazon S3 foi desenvolvida para que você não precise planejar para os requisitos de armazenamento de seu aplicativo. A maioria dos provedores de armazenamento força você a comprar uma quantidade predeterminada de armazenamento e capacidade de transferência de rede: Se você exceder essa capacidade, o serviço é desligado e você é cobrado por altas taxas excedentes. Se você não exceder essa capacidade, você paga como se tivesse usado tudo.

O Amazon S3 cobra apenas pelo que você realmente usa, sem taxas ocultas e nenhuma taxa excedente. Isso fornece aos desenvolvedores um serviço de custo variável que pode aumentar com seus negócios e ao mesmo tempo usufruir das vantagens de custos de infraestrutura da AWS.

Antes de armazenar qualquer coisa no Amazon S3, é necessário se registrar no serviço e fornecer um modo de pagamento que será cobrado no final de cada mês. Não há tarifas de configuração para começar a usar o serviço. No final do mês, seu modo de pagamento é automaticamente cobrado pelo uso daquele mês.

Para obter informações sobre como pagar pelo armazenamento do Amazon S3, consulte Definição de preço do Amazon S3.

Serviços relacionados

Depois de carregar os dados no Amazon S3, você pode usá-los com outros serviços da AWS. Veja a seguir os serviços que podem ser usados com mais frequência:

  • Amazon Elastic Compute Cloud (Amazon EC2) – este serviço fornece recursos virtuais de computação na nuvem. Para obter mais informações, consulte a página de detalhes de produtos do Amazon EC2.

  • Amazon EMR – este serviço permite que empresas, pesquisadores, analistas de dados e desenvolvedores processem de maneira fácil e econômica grandes quantidades de dados. Ele usa uma estrutura Hadoop hospedada que é executada na infraestrutura de escala da Web do Amazon EC2 e do Amazon S3. Para obter mais informações, consulte a página de detalhes de produtos do Amazon EMR.

  • AWS Snowball – é um serviço que acelera a transferência de grandes volumes de dados para e da AWS usando dispositivos de armazenamento físico, sem a necessidade de passar pela Internet. Cada tipo de dispositivo do AWS Snowball pode transportar dados a velocidades mais rápidas do que a da Internet. Esse transporte é feito enviando os dados nos dispositivos por meio de uma operadora regional. Para obter mais informações, consulte a página de detalhes de produtos do AWS Snowball.