Como Criar um Novo Bucket no Amazon S3 da AWS e Configurar Acessos Remotos via IAM
Published: 2024-03-27 21:35:40

[You can click here to see the version of this post in English.](https://dev.to/cesarpaulomp/how-to-create-a-new-bucket-in-aws-amazon-s3-and-configure-remote-access-via-iam-2j6)

O objetivo deste artigo é guiar o leitor passo a passo na criação de um novo bucket no S3 (Simple storage service) da AWS e em seguida criar uma chave no IAM (Identity and Access Management) permitindo acessos remotos.

###O que é o AWS S3?
O Amazon Simple Storage Service (S3) é um serviço de armazenamento de objetos oferecido pela Amazon Web Services (AWS). Ele fornece uma maneira simples e escalável de armazenar e recuperar dados, como fotos, vídeos, documentos e backups, na nuvem. Os usuários podem armazenar uma quantidade ilimitada de dados no S3 e acessá-los de forma segura pela internet. O S3 é amplamente utilizado para backup de dados, hospedagem de conteúdo estático para sites e aplicativos da web, compartilhamento de arquivos, armazenamento de logs e muito mais. Ele oferece alta durabilidade, escalabilidade e disponibilidade, tornando-se uma escolha popular para uma variedade de casos de uso.

###Requisitos
- Ter uma conta na AWS.

###Acessando o console da AWS.
Acesse o [console da aws pelo navegador](https://console.aws.amazon.com/) e em seguida pesquise por S3 na barra de pesquisa no topo da página.
![Página inical do console da AWS com a pesquisa por s3 realizada na barra de pesquisa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yfw5zses3w3h2hg8rwiq.png)

Clique no botão "create bucket" para iniciar o processo.
![Dashboard do S3 no console da AWS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e5f9sl1b2m1dnfut6jqc.png)

###Criando bucket
####Configurações gerais
- Escolha a região onde seu bucket será armazedado. Você pode escolher baseado em custo vou latencia. Se a latencia não for importante de preferência as regiões localizadas na Ameria do Norte como a us-east-1 onde o custo de armazenamento é menor.
- De um nome para seu bucket. Este nome precisa ser único para evitar conflitos com outros usuários da aws. [Você pode ver as regras aqui](https://docs.aws.amazon.com/console/s3/bucket-naming)
- Dependendoda região escolhida, você deve escolher um tipo para seu bucket. Na dúvida escolha o "General Purpose".
![Cofigurações gerais do novo bucket](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkdoxzcczypey2rl0xbl.png)

####Propriedade de objetos

Neste bloco você pode configurar propriedade de objetos a outra conta AWS. Isso significa que você pode transferir a propriedade de objetos armazenados no S3 para outra conta, dando a essa conta controle total sobre esses objetos. Isso pode ser útil em cenários onde você precisa compartilhar dados com parceiros ou clientes, mas deseja manter a propriedade dos objetos.
A opção "ACLs disabled" mantém a propriedade dos objetos na sua conta, enquanto "ACLs enabled" permite transferir a propriedade para outras contas.
![Configuração de propriedade dos objetos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0wgtcn4vp97mbv90i2qp.png)

####Bloquear acesso público os objetos do bucket.
Você pode tornar público o acesso dos seus objetos armazenados.
É recomendado que você nao faça isso. O ideal que suas aplicações sejam implementadas sem precisar do acesso público aos objetos do bucket.
![Bloco de configuração de acesso público](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a5qsxpxfuni67c1gds0w.png)

####Versionamento
Você pode ligar o versionamento dos objetos. Isso cria um histórico dos objetos armazenados. Permitindo você, por exemplo, acessar versões anteriores de objetos modificados ou recuperar objetos deletados.
Lembre-se que ao manter este histórico você pode aumentar o seu custo de armazenamento.
![Bloco com as configurações de versionamento do S3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4wbshx2d7x3eyisagfcd.png)
####Tags
As tags tem diversos tipos de uso dentro dos serviços disponibilizados pela AWS. Um exemplo é a categorização de custos. Você pode criar uma tag com o nome de "departamento" e atribuir valores como "marketing" ou "finanças" para identificar facilmente os custos relacionados a diferentes áreas ou iniciativas.
####Criptografia
Antes dos seus objetos serem armazenados, eles são codificados (transformados em uma forma ilegível), e só podem ser decodificados (tornados legíveis novamente) com a chave correta. Isso ajuda a manter seus dados seguros, mesmo na nuvem.
Você pode especificar uma chave ou permitir que a aws use uma das chaves dela para a criptografia.
Você também pode habilitar a criptografia em duas camadas.
![Contem os blocos de configuração de tags e criptografia](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zo5f92pgrjq9w6srjplx.png)
####Configurações avançadas/Object Lock
O Object Lock é uma característica do Amazon S3 que oferece uma camada adicional de proteção para seus dados, ajudando a prevenir exclusões ou modificações acidentais ou maliciosas nos objetos armazenados. 
O Object Lock só pode ser utilizado em buckets com o versionamento ativado.
![Bloco com as configurações avançadas](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ijuzllfhzjnp37fn4n6y.png)

Após passar por todas estas configurações, clique em "Create Bucket" e pronto seu novo bucket está criado.

###IAM
####O que é o IAM?
O IAM, ou Identity and Access Management, é como um porteiro para sua conta da AWS. Ele controla quem pode entrar e o que cada pessoa ou programa pode fazer lá dentro. Com o IAM, você pode criar usuários, conceder permissões específicas a eles e gerenciar quem tem acesso a quais recursos na nuvem da AWS. Em resumo, o IAM ajuda a manter sua conta segura e organizada, permitindo que você controle quem pode fazer o quê.

###O que vamos fazer?
- Criar uma policy que permite acessos específicos ao nosso novo bucket.
- Criar um usuário para associado a nova policy com uma chave de acesso para usar em uma aplicação.

Para acessar o painel do IAM pesquise por "IAM" na barra de pesquisa localizada na parte superior da página.
![pesquisa por IAM realizada na barra de pesquisa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ncrlpujx5rjqcuqynq89.png)

####Criando uma policy
#####O que é uma policy?
Uma policy no IAM e a especificação das permissões exatas que um usuário (aplicação ou recurso) terá dentro da sua conta da AWS.

No menu localizado no canto esquerdo, clique em "Policies" entro de "Access management"
![Parte do menu onde fica localizado a opção policy](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1nqru33iscvl3e9r2vfa.png)

Clique em "Create Policy" para iniciar o processo.
![Página que lista as policies](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u79w6741ge476108a2nl.png)

Você pode criar a policy de duas maneiras.
- De forma visual. Você escolhe o serviço e a aws lista para você cada permissão disponível deste serviço. Esta forma é interessante para conhecer cada permissão. As permissões são listadas com um botão "info" ao lado que a explica de forma detalhada.
![Página de criação de policy de forma visual](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cycemm6vca2s84r41dc9.png)

- Com [JSON](https://www.w3schools.com/whatis/whatis_json.asp). É a melhor forma para quem já tem já conhece as permissões ou estja seguindo um exemplo.

![Página de criação de policy usando json](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1vqefo5w0673xpulvmn.png)

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::NAME_OF_BY_BUCKET/*",
                "arn:aws:s3:::NAME_OF_BY_BUCKET"
            ]
        }
    ]
}
```

Após ter escolhido quais serviços e quais permissões em cada serviço clique em "next".

Na próxima tela, precisamos dar um nome para nossa policy, podemos adicionar uma descrição opcional explicando o uso desta nova policy, adicionar tags e revisar as permissões adicionadas nela.
![Página de criação de policy com nome, descrição e tags](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xrhllktjjqsx0hru49t5.png)

Clique em "Create Policy" no final da página para finalizar esta etapa.

###Criando um usuário
No menu localizado no canto esquerdo, clique em "Users" entro de "Access management"

![Parte do menu onde fica localizado a opção usuários](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8wdxifuroqch5di3ver.png)

Clique em "Create user" para iniciar o processo.
![Parte da página onde fica o botão de criar usuários](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9atmgs51a18zy4v4i990.png)

Precisamos informar um nome para este usuário e se queremos que ele tenha acesso a este painel que estamos vendo.
Como o objetivo é criar um usuário para acesso remoto via sdk não vamos marcar esta opção.
![Primeira tela de criação do usuário](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oz9prpgj2fz6gqlow5pf.png)

Clique em "next" para prosseguir.

Na segunda tela vamos definir como associar o usuário a policy.
- Add user to group: Você pode criar um grupo de policies e associar este grupo a diversos usuários. Para exemplificar, pense que cada grupo é uma função dentro de uma empresa. As funções são atribuidas as pessoas que trabalham nela.
- Copy permissions: Permite você escolher um usuário já existente e copiar as opções de permissão deste usuário.
- Attach policies directly: Adiciona a policy diretamente ao usuário. (É na nossa opção para este momento).
![Tela de adição de permissões ao usuario que está sendo criado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bpdf02jahu085bfav0lq.png)

Clique em "next" para prosseguir.

Nesta tela temos um resumo do processo de criação do usuário e podemos adicionar tags.
![Tela de revião de usuário antes de ser criado](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1slu4vs2v34wjgav2sc.png)

Clique em "Create user" para finalizar.

###Criando um Access Key para este usuário.
Após salvar o voltaremos a tela de listagem de usuários. Clique no "User name" do seu novo usuário.
![Listagem de usuários](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w71wqqheve1qjg92pwxk.png)

Procure pela aba "Security credentials" e clique nela. Em seguida role a tela até "Access keys" e clique em "Create access Key".

![Aba de Security credentials exibindo caixa com access keys](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8riq64sdcp7etoth0a20.png)

Nesta tela informamos o motivo para a criação da access key. A Aws tem outras alternativas para não criar acess keys fixas.
Para o nosso caso vamos utilizar "Application running outside AWS".
![Tela exibindo casos de uso para access key](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r77qudtszwd4nd59omn6.png)

Clique em "next" para prosseguir.

Podemos adicionar uma descrição em nossa access.
![Tela para adicionar uma descrição na access key](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pb1srxeow0jn90sblcvw.png)

Clique em "Create access key" para prosseguir.

Nesta etapa final temos nossa "Access key" e "Secret access key" pronta para uso.
Você pode copiar a "Secret access key" somente nesta tela. Assim que você sair dela não será mais possível recuperá-la.

![Tela que exibe a access key e a secret access key](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10w0vi9ey1lfwe18lsq1.png)

Ao clicar em "done", voltamos a tela de detalhes de usuário.
Aqui você pode criar uma nova "Access key", desativar ou apagar as antigas.

###Conclusão
O serviço S3 da AWS permite você a armazenar seus arquivos com segurança e um custo acessível. O IAM permite que você de acesso a outras pessoas ou aplicações aos recursos que você criou dentro da AWS. Ao usar uma "Access key" fixa lembre-se de guardar sua "Access secret key" em segredo para que usuários mal intencionados não usem seus recursos para o mal ou lhe cause prejuizos. Não exite em apagar as "access keys" antigas que estão sem uso ou não exite em rotacionar suas "access keys" caso você suspeite de fazamento. Não deixe de conferir a documentação oficial da AWS.