Eu realmente gosto de usar comandos CLI e faz parte da minha rotina diaria. Hoje, vou te contar "Como criar um Bucket S3 na AWS" e "Criar uma Politica de Bucket S3" via CLI. Vamos comecar...

A primeira coisa, voce deve definir suas AWS_ACCESS_KEY e AWS_SECRET_ACCESS_KEY. Isso significa que voce deve executar o comando aws configure antes. Se fizer isso, pode continuar.

Verifique os Buckets S3 Primeiro

Antes de tudo, precisamos ter certeza de quais buckets temos. Quando executo o comando aws s3 ls, ele retornara os buckets existentes.

➜  ~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2021-04-26 11:02:08 www-ercanermis-com

Criar um Bucket S3

O comando para criar um Bucket S3 tambem e simples e facil. E aws s3 mb. Vamos fazer isso e listar os buckets novamente.

➜  ~ aws s3 mb s3://hello-this-is-new-bucket
make_bucket: hello-this-is-new-bucket

Agora, quero listar todos os buckets existentes novamente para ter certeza.

➜  ~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2022-07-17 14:23:29 hello-this-is-new-bucket
2021-04-26 11:02:08 www-ercanermis-com

Sim, vejo meu bucket recem-criado. O nome do bucket e hello-this-is-new-bucket.

Verificar uma Politica de Bucket no Bucket S3

Criamos um bucket no passo anterior, mas e a politica do bucket? Primeiro, precisamos verificar se existe alguma politica ou nao. Aqui esta um exemplo;

➜  ~ aws s3api get-bucket-policy --bucket hello-this-is-new-bucket

An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist

O bucket recem-criado nao tem politica por padrao. Agora, e hora de criar uma politica com CLI.

Criar uma Politica de Bucket

A politica deve estar em formato JSON e voce pode criar um arquivo JSON. Minha politica de bucket permite que todos os usuarios recuperem qualquer objeto do hello-this-is-new-bucket, exceto aqueles na secret-folder. Tambem concede permissao de put e delete ao usuario "root" da conta AWS "1234-5678-9012".

my-s3-bucket-policy.json:
{
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/*"
      },
      {
         "Effect": "Deny",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/secret-folder/*"
      },
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:root"
         },
         "Action": [
            "s3:DeleteObject",
            "s3:PutObject"
         ],
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/*"
      }
   ]
}

Aplicar uma Politica de Bucket no Bucket S3

Aplicar uma politica tambem e facil. Voce pode ver abaixo.

aws s3api put-bucket-policy --bucket hello-this-is-new-bucket --policy file://my-s3-bucket-policy.json

Apos o comando put-bucket-policy, o aws cli nao da nenhuma saida, mas voce tambem sabe como verificar sua politica de bucket via CLI e pode verificar se quiser ter certeza.

Muito obrigado por ler este artigo, boas codificacoes!