AWS

9 dez, 2015

Mão na massa sobre Amazon S3

Publicidade

Este laboratório irá cobrir os seguintes assuntos:

  • Realizar um upload de um objeto para o bucket do S3 via Console de Gerenciamento;
  • Mover objetos entre buckets;
  • Criar um site estático sem a necessidade de um servidor web utilizando o S3;
  • Versionamento de objetos;
  • Criar um ciclo de vida de um objeto no S3.

O Amazon S3 é um serviço de armazenamento de objetos para internet altamente escalável, seguro e durável. Você pode utilizar o Amazon S3 para armazenar e recuperar qualquer quantidade de dados. Objetos armazenados no S3 podem ser acessados via HTTP/HTTPS. Além disso, o serviço foi projetado para fornecer uma durabilidade dos objetos armazenados de 99.999999999%, pois quando um objeto é armazenado no Amazon S3, automaticamente ele é copiado de maneira redundante para múltiplos equipamentos em diferentes datacenters. Por fim, o Amazon S3 consegue detectar dados corrompidos através de checksums MD5 e repara esses erros.

Realizando um upload de um objeto para o S3

No console de gerenciamento, clique em S3:

01-300x162

Clique em Create Bucket:

02-300x147

Em Bucket Name dê um nome para o seu bucket. O nome do bucket deve ser único entre todos os buckets existentes no S3. Escolha qual região da AWS o bucket do S3 deverá ser criado. A escolha da região é importante, pois o objeto armazenado permanece nela a não ser que você, explicitamente, mova-o para outra região. Neste exemplo vamos utilizar a região Oregon, mas você pode escolher a região que melhor lhe atender. Clique em Create:

03-300x171

Clique no bucket recém criado para listar o conteúdo dele. Como ele ainda está vazio, a mensagem de The bucket is empty deverá aparecer:

 

05-300x75

Clique em Add Files. Como opção, você também pode arrastar o arquivo ou diretório para o campo Drag and drop files and folders to upload here.

06-300x152

Selecione o arquivo desejado e clique em Start Upload:

07-300x152

Note que agora o bucket não está mais vazio, e o objeto deve ser listado. Para abrir o objeto, clique com o botão direito sobre ele e clique em Open:

08-300x143

Copiar e/ou mover um objeto entre Buckets

Crie um novo bucket em qualquer região. Clique com botão direito sobre o objeto a ser manipulado e clique em Cut (Mover) ou Copy (Copiar):

09-300x142

Vá até o novo bucket e clique em Paste (Colar):

10-300x106

Explore outras opções como Download (Baixar) e Rename (Renomear):

Criar um site estático sem servidores web

É possível hospedar um site inteiramente estático utilizando somente o Amazon S3, sem qualquer necessidade de um servidor web. Vamos ver como:

Crie um novo bucket em qualquer região e faça o upload de um arquivo HTML simples, como por exemplo, um index.html;

Na lista de buckets, clique com o botão direito sobre o bucket que contém o arquivo HTML e clique em Properties:

11-300x166

Expanda Static Website Hosting:

12-300x150

Clique em Enable website hosting:

13-300x147

No campo Index Document insira o nome completo do arquivo HTML. Neste exemplo, o nome é index.html. Clique em Save:

14-300x79

Anote a URL do seu site descrita como Endpoint:

15-300x149

Por padrão, buckets são privados, ou seja, você precisa explicitamente tornar seu conteúdo público para que o site possa ser visualizado. Neste exemplo vamos tornar somente o arquivo HTML público. Clique com o botão direito sobre o arquivo e clique em Make Public:

16-300x143

Agora o arquivo já está público e podemos testar a URL do site anotada no passo 6.

[Opcional] Em muitos casos, como em um website, é mais conveniente que os arquivos por padrão sejam públicos ao invés de privados. Para mudarmos esse comportamento é necessário criar uma política de segurança no bucket que especifique essa regra:

  • Clique no bucket e expanda Permissions:

17-300x146

  • Clique em Add bucket policy:

18-300x78

  • Cole a seguinte política alterando no fim o nome para o seu bucket e clique em Save:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadForGetBucketObjects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::seubucketaqui/*"
        }
    ]
}
  • Faça um upload de um novo arquivo e tente visualizá-lo pela URL.

Criando versionamento de objetos no Bucket

O Amazon S3 possibilita que você crie versões dos objetos armazenados no bucket. O versionamento cria uma camada a mais de proteção contra, por exemplo, deleção ou substituição acidental de arquivos. Uma vez o versionamento criado, não é possível mais desabilitá-lo, apenas suspende-lo. Vamos criar esse versionamento e testá-lo na prática.

Clique com o botão direito sobre o bucket e clique em Properties.

Expanda a opção Versioning:

19-300x150

Clique no botão Enable Versioning e confirme a mensagem:

20-300x76

Para visualizar as versões dos objetos no bucket, clique em Versions: Show e observe que abaixo do objeto serão listadas as versões dele. Neste caso, somente há uma única versão, pois o objeto nunca foi modificado:

21-300x78

Para testar o versionamento do bucket, faça qualquer alteração, como apagar um objeto ou modificar o metadata dele. Neste exemplo vou justamente utilizar a segunda opção:

  • Clique em Versions: Hide (ao lado de Show do passo anterior);
  • Com o botão direito clique no objeto e clique em Properties;
  • Expanda Metadata:

22-300x103

  • Mude o valor do campo Value. Neste exemplo estou manipulando uma imagem com o valor padrão de image/jpeg. Vou alterar para image/png e clicar em Save:

23-300x66

  • Ao clicarmos novamente em Versions: Show, uma nova versão do objeto foi gerada, onde a versão original possui o ID null e a versão nova um ID único:

24-300x37

Criando uma política de ciclo de vida de objetos no S3

O Amazon S3 pode ser utilizado para diversos casos de armazenamento, como backups e arquivamentos ou apenas para manter arquivos estáticos de um website, como imagens por exemplo. Dependendo da ocasião, não há a necessidade de manter o objeto para sempre armazenado no S3. Para isso, o S3 possui uma funcionalidade chamada Lifecycle. Nela, você pode configurar se um objeto será excluído após um determinado período de tempo, e até mesmo, mover esse objeto para uma outra classe de armazenamento, como o S3 Infrequent Access e o Amazon Glacier, com um intuito de reduzir custos. Vamos ver com isso funciona:

Clique com o botão direito sobre o bucket e clique em Properties, expanda o Lifecycle e clique em Add Rule:

25-300x216

No primeiro passo, escolheremos se a regra será aplicada para o bucket inteiro ou para algum prefixo em específico, como por exemplo, /img ou Backups/img. Neste caso, vou aplicar para o bucket inteiro. Whole Bucket: devitotutorial e clicar em Configure Rule>

27-300x201

Nesta tela, selecionaremos as ações a serem aplicadas aos objetos, tanto das versões atuais quanto das versões antigas. Neste exemplo não será aplicada nenhuma ação para as versões atuais dos objetos, mas as versões antigas serão arquivadas e apagadas. Portanto, Action on Current Version mantenha Do Nothing, e Action on Previous Versions selecione Archive and then Permanently Delete.

Atenção: se você estiver aplicando esta regra para um bucket de uma região que não possui o serviço Glacier, como por exemplo, São Paulo (sa-east-1), a opção de arquivamento não estará disponível, apenas as de excluir. Neste caso, você ainda tem a opção de mover para o Infrequent Access.

28-300x59

O primeiro campo, Archive to the Glacier Storage Class é valor em dias que o objeto deve ser arquivado no Amazon Glacier. Neste exemplo, o valor será 0, assim o arquivamento ocorrerá no mesmo dia. O segundo campo, Permanently Delete, é o valor em dias que um objeto deverá ser apagado permanentemente do S3. O valor será 90 (3 meses). Clique em Review:

29-300x142

Em Rule Name, dê um nome para a sua regra, como por exemplo, “Exclui Versões Antigas”. Reveja as informações da sua regra e clique em Create and Activate Rule:

30-300x201

Para visualizar a regra aplicada, vá na lista de buckets, clique com o botão direito sobre o bucket recém configurado e clique em Properties. Expanda Lifecycle e veja a regra.

26-300x124

Conclusão

Utilizando este artigo, aprendemos os conceitos básicos do S3, como inserir e movimentar objetos em um bucket. Criamos um website estático sem utilizar qualquer servidor web. Por fim, criamos versionamento para um bucket do S3 com um ciclo de vida configurado para arquivar e excluir arquivos automaticamente.

***

Artigo escrito por Rubens Devito Filho. 

Este artigo faz parte do AWSHUB, rede de profissionais AWS gerenciado pelo iMasters.