Praticar de graça

🔌Entenda o AWS CodeConnections

A conexão é uma tomada entre a AWS e o seu GitHub (ou GitLab, ou Bitbucket): você autoriza uma vez, no console, e a esteira passa a ler o repositório sozinha — sem senha, sem token copiado num arquivo.

Pra que serve

A maioria das empresas guarda o código no GitHub ou no GitLab, não no CodeCommit. Pra esteira da AWS enxergar esse código, ela precisa de uma conexão. É por isso que, em vaga de DevOps com AWS, "CodePipeline + GitHub" aparece muito mais que "CodePipeline + CodeCommit". O serviço já se chamou CodeStar Connections — o comando antigo, aws codestar-connections, ainda funciona.

Onde se usa no mundo real

Vocabulário

Conexão
a autorização da AWS pra ler repositórios de um provedor (GitHub, GitLab, Bitbucket).
PENDING / AVAILABLE
criada pelo CLI, ela nasce PENDING; vira AVAILABLE quando alguém autoriza no console.
Handshake
o passo no console em que você entra no provedor e aprova o app da AWS. Não existe comando de CLI pra ele.
Host
o seu servidor de Git instalado na empresa (GitHub Enterprise, GitLab self-managed).
FullRepositoryId
o repositório no formato dono/nome (ex.: climb-labs/vitrine), usado na esteira.
💰 Como cobra: A conexão não é cobrada — você paga a esteira e os builds que usam ela. Comparando: conexão x token no buildspec — os dois dão acesso ao repositório, mas o token vaza em log, expira e fica na mão de quem copiou; a conexão é revogável num clique e não expõe segredo nenhum.

Comandos que você aprende nesta trilha

Cada um deles roda de verdade no terminal do CLImb, com a mesma saída e as mesmas mensagens de erro que a AWS devolve.

aws codeconnections list-connections

USO

aws codeconnections list-connections [--provider-type-filter GitHub] [--host-arn-filter <arn>]

aws codeconnections create-connection

USO

aws codeconnections create-connection --connection-name <nome> --provider-type GitHub|GitLab|Bitbucket
aws codeconnections create-connection --connection-name <nome> --host-arn <arn-do-host>

aws codeconnections get-connection

USO

aws codeconnections get-connection --connection-arn <arn>

aws s3 mb

make bucket (criar bucket)

aws s3 mb s3://<nome-do-bucket>

aws codebuild create-project

USO

aws codebuild create-project --name <nome> \
--source type=GITHUB,location=https://github.com/<org>/<repo> \
--artifacts type=NO_ARTIFACTS \
--environment type=LINUX_CONTAINER,image=aws/codebuild/standard:7.0,computeType=BUILD_GENERAL1_SMALL \
--service-role arn:aws:iam::<conta>:role/<role>

aws codepipeline create-pipeline

USO

aws codepipeline create-pipeline --cli-input-json file://<planta>.json

aws codepipeline get-pipeline-state

USO

aws codepipeline get-pipeline-state --name <esteira>

aws codepipeline start-pipeline-execution

USO

aws codepipeline start-pipeline-execution --name <esteira>

aws codeconnections create-host

USO

aws codeconnections create-host --name <nome> --provider-type GitHubEnterpriseServer|GitLabSelfManaged --provider-endpoint https://<servidor>

aws codeconnections get-host

USO

aws codeconnections get-host --host-arn <arn>

aws codeconnections list-hosts

USO

aws codeconnections list-hosts

aws codeconnections delete-host

USO

aws codeconnections delete-host --host-arn <arn>

aws codeconnections delete-connection

USO

aws codeconnections delete-connection --connection-arn <arn>

O que você pratica (22 atividades)

Cada atividade é um pedido de trabalho, do jeito que ele chega no dia a dia — você resolve digitando os comandos, não escolhendo alternativa.

O código está no GitHub

O time da vitrine (a loja online) guarda o código no GitHub, na organização climb-labs — não no CodeCommit. Pra esteira da AWS enxergar esse código, ela precisa de uma conexão. Veja se já existe alguma.

A ponte com o GitHub

Crie a conexão github-climb-labs com o provedor GitHub. É o marco da trilha — e repare no aviso: ela nasce pendente.

Pendente de quê?

Consulte a conexão github-climb-labs pelo ARN que voltou e veja o ConnectionStatus.

Autorizada?

A Paula, do time de plataforma, entrou no console e autorizou o app da AWS no GitHub (esse passo não existe na CLI). Confira de novo — agora só o status, em texto.

Só as do GitHub

A conta vai ter conexões de vários provedores. Liste só as do GitHub.

A planta da esteira com GitHub

A planta da esteira da vitrine já está pronta: esteira-github.json. Leia e repare no estágio de origem: o provider é CodeStarSourceConnection, com o ConnectionArn da sua conexão e o repositório climb-labs/vitrine.

O depósito da esteira

A esteira precisa do bucket de artefatos vitrine-artefatos antes de nascer. Crie.

O build da vitrine

Crie o projeto de build vitrine-build no CodeBuild, com fonte e artefato CODEPIPELINE, máquina LINUX_CONTAINER com aws/codebuild/standard:7.0 no tamanho BUILD_GENERAL1_SMALL e a role arn:aws:iam::123456789012:role/codebuild-servico.

A esteira puxa do GitHub

Crie a esteira pela planta esteira-github.json. Ela já sai rodando — e o primeiro estágio vai buscar o código no GitHub pela conexão.

Do GitHub até o build

Acompanhe a vitrine-esteira até os dois estágios ficarem Succeeded. No Source, o currentRevision é o commit que veio do GitHub.

A conexão que ninguém autorizou

Um parceiro de frete usa o GitLab. Crie a conexão gitlab-parceiro (provedor GitLab) e, sem esperar ninguém autorizar, crie a esteira da esteira-gitlab.json e olhe o painel. Descubra por que o Source falhou.

Autorizado: roda de novo

O parceiro autorizou no console. Confirme que a gitlab-parceiro ficou AVAILABLE e rode a frete-esteira de novo até o Source passar.

O repositório de testes do GitHub

A mesma conexão serve pra qualquer repositório da organização. Crie a esteira da esteira-testes-github.json (repositório climb-labs/testes-quebrados), acompanhe e veja em que estágio ela para — agora o problema não é a conexão.

O Git da empresa

A área de folha de pagamento usa um GitHub Enterprise instalado no datacenter, em https://git.climb-labs.internal. Registre ele como o host ghe-empresa (provedor GitHubEnterpriseServer).

O host ficou pronto?

Consulte o host ghe-empresa pelo ARN — e de novo, depois que o time de rede terminar a configuração no console.

O GitLab da equipe de dados

A equipe de dados roda um GitLab próprio em https://gitlab.dados.climb-labs.internal. Registre como o host gitlab-dados (provedor GitLabSelfManaged) e acompanhe até ficar AVAILABLE.

A conexão em cima do host

Crie a conexão ghe-folha em cima do host ghe-empresa (em vez do --provider-type, vai o --host-arn) e confira até ela ficar AVAILABLE.

Os servidores de Git da empresa

Liste os hosts registrados na conta.

Quem usa o host?

Antes de mexer no GitHub Enterprise, veja quais conexões dependem dele: liste as conexões filtrando pelo host ghe-empresa, e confira a lista de hosts.

O GitLab de dados nunca foi usado

A equipe de dados desistiu do GitLab próprio e ninguém chegou a criar conexão nele. Apague o host gitlab-dados e confira a lista de hosts.

O parceiro de frete saiu

O contrato com o parceiro de frete acabou. Corte o acesso: apague a conexão gitlab-parceiro.

O GitHub Enterprise foi desligado

A folha migrou pro GitHub.com. Desligue o host ghe-empresa — na ordem que a AWS exige: primeiro a conexão ghe-folha, depois o host.

Continue por aqui

Ler explica. Digitar fixa. No CLImb você roda os comandos de verdade num terminal AWS simulado — o estado persiste entre eles, como na nuvem real.

As 3 primeiras atividades desta trilha são abertas; o resto faz parte do plano Pro.

Começar — 3 atividades grátis
Todas as lições · Instalar a AWS CLI · Comandos básicos · Erros comuns · Praticar no terminal · Sobre