>> Apresentação e considerações
Fala galera, nesse primeiro post de inauguração do Blog vou fazer um passo a passo de como criar um site estático no Amazon S3 utilizando somente a AWS CLI.
Nesse post eu criarei o Bucket “rdglinuxwebsite” na região da Virgínia (us-east-1) para o meu site, lembre-se talvez esse nome não esteja disponível para fazer o processo, com isso indico que você mude o nome do Bucket para um nome da sua escolha substituindo tudo o que está como “rdglinuxwebsite” para o nome do Bucket que você criou no S3.
>> Pré-requisitos:
- Máquina Linux com aws-cli/1.11.13 (Essa versão que utilizei no tutorial)
- Possuir uma credencial (aws_access_key_id + aws_secret_access_key) com permissão para criar Buckets no S3 configurada na máquina.
Instalar AWS CLI (Oficial) - O nome do seu Bucket no S3 deverá ser único na região
>> Primeiramente vamos criar o Bucket no S3
~# aws s3 mb s3://rdglinuxwebsite
>> Transformando o nosso Bucket em um website
Temos que transformar o Bucket em um website e com isso vamos setar a página inicial (index) e a página de erro.
~# aws s3 website s3://rdglinuxwebsite/ --index-document index.html --error-document error.html
>> Criando os arquivos do site
Nesse exemplo vamos criar os arquivos do nosso site para que possamos posteriormente visualizá-los no Browser
~# mkdir rdglinuxwebsite
~# cd rdglinuxwebsite/
~# echo "OK - BEM VINDO ao meu primeiro website publicado no S3" > index.html
~# echo "ERROR - Página não encontrada" > error.html
>> Enviando os arquivos do site para o Bucket
Vamos transferir os arquivos que criamos do diretório para o Bucket.
~# aws s3 sync . s3://rdglinuxwebsite/
>> Listando os arquivos no Bucket
Podemos ver na saída do comando os dois arquivos que foram “upados” para o S3.
~# aws s3 ls s3://rdglinuxwebsite/ 2017-04-08 22:25:03 80 error.html 2017-04-08 22:25:03 82 index.html
>> Criando uma BucketPolicy
Vamos criar uma BucketPolicy com permissão “s3:GetObject”, essa Policy será aplicada no Bucket do website para dar a permissão para que o nosso site seja publicado. O comando abaixo criará um arquivo chamado “policy.json” que será utilizado para o input da policy em nosso Bucket.
vim /tmp/policy.json
{ "Version": "2008-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::rdglinuxwebsite/*" } ] }
~# aws s3api put-bucket-policy --bucket rdglinuxwebsite --policy file:///tmp/policy.json
>> Vejamos como a nossa Policy ficou:
~# aws s3api get-bucket-policy --bucket rdglinuxwebsite { "Policy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"AddPerm\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::rdglinuxwebsite/*\"}]}" }
>> E agora, qual a URL para abrir meu site?
Existe um padrão definido na AWS para a URL de um site no S3:
http://[nome_do_bucket].s3-website.[regiao_aws].amazonaws.com/
Com isso o nosso site ficará assim:
http://rdglinuxwebsite.s3-website-us-east-1.amazonaws.com
>> E se eu quiser publicá-lo em meu domínio?
Você precisa criar uma entrada do tipo CNAME no seu DNS Público onde está o seu domínio apontando o seu domínio pra o seu site no S3.
seusite.com.br CNAME rdglinuxwebsite.s3-website-us-east-1.amazonaws.com.
>>Pronto! Já fiz a brincadeira, testei e funfou, como apago o meu Bucket?
Simples:
~# aws s3 --recursive rm s3://[nome_do_bucket]
~# aws s3api delete-bucket --bucket [nome_do_bucket] --region [regiao_aws]
Ficando assim:
~# aws s3 --recursive rm s3://rdglinuxwebsite delete: s3://rdglinuxwebsite/error.html delete: s3://rdglinuxwebsite/index.htm
~# aws s3api delete-bucket --bucket rdglinuxwebsite --region us-east-1
É isso ae galera, espero que tenham gostado, se gostou compartilhe!!!
>> Referências:
http://docs.aws.amazon.com/cli/latest/reference/s3/
http://docs.aws.amazon.com/cli/latest/reference/s3api/
Abraços!
10/04/2017 at 1:46 am
Muito bom cara!!
CurtirCurtido por 1 pessoa
10/04/2017 at 8:32 am
Thanks man!
CurtirCurtir