Important
Caso você precise migrar container images do GitLab Registry para o AWS ECR:
- Complete a sessão de Pré-requisitos
- Complete a sessão de Configurando o AWS CLI
- Complete a sessão de Organização de Usuários e Permissões
- Vá para o diretório migration-from-gitlab e continue de lá
Esta documentação tem como objetivo orientar o uso do AWS CLI para acessar e gerenciar o AWS Elastic Container Registry (ECR). Aqui você encontrará boas práticas, comandos essenciais e informações sobre a organização de usuários e permissões.
-
Requisitos de Acesso:
- Login em sua conta Google do LSD
- Login no IAM Identity Center.
- Permissões necessárias configuradas.
-
Ferramentas Necessárias:
- AWS CLI instalado e configurado.
- Docker instalado.
Note
Nos nossos exemplos usamos docker
(recomendado), mas você pode usar outro container
runtime (por exemplo, Podman,
containerd, etc.)
-
Acesse o portal da AWS no link: https://lsd-ufcg.awsapps.com/start
-
Ao logar, você verá a conta
AWS-LSD
, expanda seu conteúdo para mais informações. Você agora verá um menu com:<nome_role> | Access Keys 🔑
-
Clique em
Access Keys 🔑
para configurar o acesso à conta. -
Escola seu sistema operacional listado (
macOS and Linux | Windows | PowerShell
) -
Veja a primeira opção listada (AWS IAM Identity Center credentials (Recommended))
-
Copie o comando:
aws configure sso
-
Em
SSO session name
escolha um nome para sua sessão -
Em
SSO start URL
copie o link do portal da AWS (passo 5) -
Em
SSO region
copie a região do portal da AWS (passo 5) -
Em
SSO registration scopes
não modifique nada e apenas dê Enter -
Você será redirecionado para seu navegador padrão pedindo a confirmação de acesso
-
Clique no botão de Allow access no seu navegador
-
Feche a aba e volte para o terminal. Você então será apresentado com as opções de seus papéis (roles). Escolha a role que te foi dado o acesso.
-
Em
CLI default client Region
digite a mesma região configurada no passo 9 -
Em
CLI default output format
escolha um dos possíveis formatos:
json
text
table
yaml
yaml-stream
- Em
CLI profile name
digitedefault
.
Important
Caso tenha configurado um nome diferente de default, você precisará
passar a opção --profile <nome_perfil>
para qualquer comando da awscli
.
Pronto! Agora você está apto a usar a awscli
para suas tarefas.
Important
A partir de agora, para ter permissões de acesso à AWS você precisará apenas digitar:
aws sso login
Para agrupar repositórios semelhantes, a AWS oferece o conceito de
namespaces
. Assim, o path de uma imagem seria:
<namespace>/<nome_repositório>:<tag>
Cada projeto teria um namespace próprio e, dentro desse namespace, seus usuários poderiam criar repositórios a fim de armazenar imagens de container.
Por exemplo, para o projeto suporte
, um possível path para uma imagem
seria:
suporte/nginx:alpine
Warning
É importante que o nome do namespace
seja genérico, de modo a evitar a
fragmentação de um projeto em times. Em vez de termos dois projetos com
suporte-cloud
e suporte-services
, o recomendado seria um único namespace
suporte
. Dessa forma, o time de cloud
poderia criar repositórios em
suporte/cloud/*
e o time de services
em suporte/services/*
.
Todo usuário pertencente a um projeto possui a seguintes permissões dentro de seu namespace:
- criar repositórios
- listar imagens de seus repositórios
- atribuir tags a suas imagens
- dar
pull
em imagens - dar
push
em imagens - deletar imagens
- deletar repositórios
Adicionalmente, todos os usuários podem listar os repositórios de todos os projetos, sem a permissão das ações acima.
É necessário criar um ticket apenas para criação de projetos na AWS e
adição/remoção de usuários em projetos. Recomendamos que o professor
responsável pelo projeto crie um ticket pedindo a criação do projeto,
fornecendo uma lista de emails com domínio lsd
(e.g.,
[email protected]
, etc).
Tip
Para operações com repositórios públicos, use o comando aws ecr-public
(e.g., aws ecr-public describe-repositories
)
aws ecr describe-repositories
-
Construa sua imagem:
docker build -t <nome_imagem> .
-
Tagueie a imagem com a URI do repositório:
docker tag <nome_imagem>:<tag> 851296927411.dkr.ecr.us-east-1.amazonaws.com/<namespace>/<nome_repositório>:<tag>
-
Autentique o Docker no ECR:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 851296927411.dkr.ecr.us-east-1.amazonaws.com
Warning
Certifique-se que <namespace>/<nome_repositório>
existe no AWS ECR. Para
criar repositórios rode:
aws ecr create-repository --repository-name <namespace>/<nome_repositório>
-
Envie a imagem:
docker push 851296927411.dkr.ecr.us-east-1.amazonaws.com/<namespace>/<nome_repositório>:<tag>
docker pull 851296927411.dkr.ecr.us-east-1.amazonaws.com/<namespace>/<nome_repositório>:<tag>
- Erros comuns:
- Problemas de autenticação: Verifique seu login no IAM Identity Center.
- Permissões ausentes: Confirme se sua conta tem permissões adequadas.
- Problemas no Docker: Verifique se o Docker está instalado e configurado corretamente.
- Use tags consistentes para as imagens.
- Exclua imagens antigas ou não utilizadas regularmente.
- Entre em contato com o suporte para questões relacionadas ao IAM Identity Center ou ECR.