Sincronismo automático de arquivos com bucket S3 Amazon AWS


O S3 é o serviço da Amazon AWS para armazenamento de arquivos, você pode utiliza-lo, por exemplo, para armazenar as imagens do seu site, os scripts, ou até mesmo o site inteiro, como é o caso desse site aqui. Vamos ver como automatizar o envio dos arquivos do seu computador para o S3.

O primeiro passo é configurar o bucket do Amazon S3 onde os arquivos ficarão.

1- Configurar um bucket do S3

Para criar um bucket, basta acessar a área S3 (Simple Storage Service) do painel do Amazon AWS

Utilize a opção “Create bucket” e informe o nome e a região para o bucket:

Configuração bucket

Você pode selecionar qualquer região, no entanto:

Provavelmente muitos dos sites que você acessa estão hospedados fora do Brasil (como esse aqui), no entanto, eles não são muito mais lentos, então eu costumo escolher a opção mais barata (Oregon) para criar recursos no AWS (instâncias EC2, buckets do S3, etc.) mesmo o acesso a esses recursos tendo uma latência maior.

Você pode adicionar permissão de leitura pública para os arquivos desse bucket:

Permissão de acesso bucket

E cria-lo.

2- Envio de arquivos manualmente

Utilizando o próprio painel do S3 dentro do console do Amazon AWS é possível realizar o upload de um arquivo:

Upload manual

No entanto, esse processo acaba sendo muito trabalhoso quando se tem o tempo todo muitos arquivos para atualizar

3- Envio de arquivos utilizando o prompt de comando

É possível utilizar o AWS Cli através do prompt de comandos para enviar todos os arquivos de uma pasta, basta fazer o seguinte:

3.1- Crie no Amazon IAM um usuário com permissão ao S3

No painel do Amazon AWS acesse a área “IAM”, crie um novo usuário e adicione a permissão: “AmazonS3FullAccess”, para esse novo usuário você receberá duas chaves:

Você precisará dessas chaves, guarde-as.

3.2- Instale o python

Faça o download do python em: https://www.python.org/downloads/

Rode o setup e marque as seguintes opções:

Abra um prompt de comando do Windows (se estava aberto antes da instalação feche-o e abra novamente)

Para verificar se o python foi instalado corretamente, utilize o comando:

pip --version

3.2- Instale o AWS Cli

Faça o download do AWS Cli:

https://s3.amazonaws.com/aws-cli/AWSCLI64.msi

E rode o setup, para mais informações de instalação, consulte: http://docs.aws.amazon.com/cli/latest/userguide/installing.html

Execute no prompt de comando do windows:

pip install --upgrade --user awscli

Abra um prompt de comando do Windows (se estava aberto antes da instalação feche-o e abra novamente)

Para verificar se o aws cli foi instalado corretamente, utilize o comando:

$ aws --version

3.2- Instale o AWS Cli

No prompt de comando, execute:

aws configure

Será solicitados o “Access Key” e o “Secret Access Key”:

AWS Access Key ID [None]: aaaaaa
AWS Secret Access Key [None]: bbbbbbb
Default region name [None]: us-west-2
Default output format [None]: ENTER

Informe os dados do usuário que você criou no Amazon IAM.

Para mais informações de configuração, consulte: http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

3.3- Para sincronizar

Agora ficou fácil! Para enviar todos os arquivos de uma pasta para o bucket do S3, basta executar:

aws s3 sync arquivos\ s3://bucketname

Substituindo nesse comando:

E pronto!

Para mais informações, consulte: http://docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html

4- Envio de arquivos de forma automática

Como eu queria algo que funcionasse como o Dropbox, ou seja, que fica monitorando alterações em uma pasta e envia os arquivos automáticamente para o S3, eu acabei criando o seguinte serviço windows:

https://github.com/Enginesoft/Enginesoft.SyncS3

Basta instala-lo como um Serviço Windows, seguindo as instruções de configuração e ele passa a monitorar uma pasta e enviar os arquivos modificados para o S3.

O código foi escrito em C# e é open source, então você pode modifica-lo se precisar.


Comentários