Tutorial: Implantar em instâncias do Amazon EC2 com o CodePipeline
Este tutorial ajuda você a criar uma ação de implantação no CodePipeline que implante o código em instâncias configuradas por você no Amazon EC2.
nota
Como parte da criação de um pipeline no console, um bucket de artefatos do S3 será usado pelo CodePipeline para artefatos. (Este bucket não é o mesmo utilizado para uma ação de origem do S3.) Se o bucket de artefatos do S3 estiver em uma conta diferente da conta do pipeline, garanta que o bucket de artefatos do S3 seja de propriedade de Contas da AWS seguras e confiáveis.
nota
A ação de implantação EC2 só está disponível para pipelines do tipo V2.
Pré-requisitos
Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:
nota
Todos esses recursos devem ser criados na mesma região da AWS.
-
Um repositório de controle de origem (este tutorial usa o GitHub) no qual você adicionará um arquivo
script.shde amostra. -
Você deve usar um perfil de serviço do CodePipeline existente que foi atualizado com as permissões da ação. Para atualizar o perfil de serviço, consulte Permissões de política do perfil de serviço para a ação de implantação do EC2.
Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.
Etapa 1: Criar instâncias do Amazon EC2 Linux
Nesta etapa, você vai criar as instâncias do Amazon EC2 nas quais implantará uma aplicação de amostra. Como parte desse processo, crie uma função de instância no IAM, caso ainda não tenha criado uma função de instância na região onde deseja criar recursos.
Como criar uma função de instância
-
Abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No painel do console, escolha Roles (Funções).
-
Selecione Criar perfil.
-
Em Selecionar tipo de entidade confiável, selecione AWS service (Serviço da AWS). Em Escolha um caso de uso, selecione EC2. Em Select your use case (Selecione seu caso de uso), escolha EC2. Escolha Próximo.
-
Procure e selecione a política chamada
AmazonSSMManagedEC2InstanceDefaultPolicy. -
Procure e selecione a política chamada
AmazonSSMManagedInstanceCore. Escolha Próximo: etiquetas. -
Selecione Próximo: revisar. Forneça um nome para a função (por exemplo,
EC2InstanceRole).nota
Anote o nome da função para a próxima etapa. Escolha essa função ao criar a instância.
nota
Você adicionará permissões a essa função para permitir o acesso ao bucket de artefato do S3 para o pipeline depois da criação do pipeline.
Selecione Criar perfil.
Para executar instâncias
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
Na navegação lateral, escolha Instâncias e selecione Executar instâncias na parte superior da página.
-
Em Nome, insira
MyInstances. Isso atribui à instância uma tag Chave deNamee uma tag Valor deMyInstances. -
Em Imagens da aplicação e do sistema operacional (imagem de máquina do Amazon), localize a opção AMI do Amazon Linux com o logotipo da AWS e verifique se ela está selecionada. (Essa AMI é descrita como AMI do Amazon Linux 2 (HVM) e é identificada como “Elegível para o nível gratuito”.)
-
Em Tipo de instância, selecione o tipo
t2.microelegível para o nível gratuito como configuração de hardware para a instância. -
Na seção Par de chaves (login), selecione um par de chaves ou crie um.
-
Em Configurações de rede, verifique se o status é Habilitar.
-
Expanda Advanced details (Detalhes avançados). Em Perfil de instância do IAM, selecione o perfil do IAM criado no procedimento anterior (por exemplo,
EC2InstanceRole).nota
Não deixe a função da instância em branco, pois isso cria uma função padrão e não seleciona a função criada por você.
-
Em Resumo, em Número de instâncias, insira
2. -
Escolha Iniciar instância.
-
É possível visualizar o status da ativação na página Instâncias. Ao executar uma instância, seu estado inicial é
pending. Após o início da instância, seu estado muda pararunninge ela recebe um nome DNS público. (Se a coluna do Public DNS (DNS público) não for exibida, selecione o ícone Show/Hide (Exibir/Ocultar) e Public DNS (DNS público).)
Etapa 2: Adicionar permissões de bucket do artefato à função de instância do EC2
Você deve atualizar a função de instância do EC2 criada para a instância a fim de permitir que ela acesse o bucket de artefato do pipeline.
nota
Ao criar a instância, você cria ou usa uma função de instância do EC2 existente. Para evitar erros Access Denied, você deve adicionar permissões de bucket do S3 à função da instância para dar à instância permissões para o bucket de artefato do CodePipeline. Crie uma função padrão ou atualize a função existente com a permissão s3:GetObject limitada ao bucket de artefato da região do pipeline.
-
Navegue até o pipeline no console do CodePipeline. Escolha Settings. Exiba o nome e o local do armazenamento de artefato de um pipeline existente. Anote o nome do recurso da Amazon (ARN) do bucket de artefato e o copie.
-
Navegue até o console do IAM e escolha Roles (Funções). Selecione a função de instância criada por você na etapa 1 deste tutorial.
-
Na guia Permissions (Permissões), escolha Add inline policy (Adicionar política em linha).
-
Adicione o JSON a seguir ao documento da política, substituindo o valor no campo
Resourcepelo ARN do bucket.{ "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BucketName" } -
Selecione Atualizar.
Etapa 3: Adicionar um arquivo de script ao repositório
Cole esse texto de amostra a fim de criar o arquivo script.sh para a etapa pós-script da implantação.
echo "Hello World!"
Para adicionar um arquivo script.sh ao repositório de origem
-
Abra um editor de texto e, em seguida, copie e cole o arquivo acima em um novo arquivo.
-
Confirme e envie o arquivo
script.shpara o repositório de origem.-
Adicione o arquivo.
git add . -
Confirme a alteração.
git commit -m "Adding script.sh." -
Envie a confirmação.
git push
Anote o caminho no repositório.
/MyDemoRepo/test/script.sh -
Etapa 4: Criação do pipeline
Use o assistente do CodePipeline para criar os estágios de pipeline e conectar o repositório de origem.
Para criar o pipeline
Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/
. -
Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).
-
Na página Etapa 1: Escolher opção de criação, em Opções de criação, selecione a opção Criar pipeline personalizado. Escolha Próximo.
-
Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira
MyPipeline. -
O CodePipeline disponibiliza pipelines dos tipos V1 e V2, que apresentam características e custos diferentes. O tipo V2 é o único tipo que você pode escolher no console. Para ter mais informações, consulte Pipeline types. Para obter informações sobre preços do CodePipeline, consulte Preços
. -
Em Perfil de serviço, escolha Usar perfil de serviço existente e o perfil de serviço do CodePipeline que foi atualizado com as permissões necessárias para essa ação. Para configurar o perfil de serviço do CodePipeline dessa ação, consulte Permissões de política do perfil de serviço para a ação de implantação do EC2.
-
Deixe as configurações em Advanced settings (Configurações avançadas) como padrão e escolha Next (Próximo).
-
Na página Etapa 3: Adicionar etapa de origem, adicione uma etapa de origem:
-
Em Provedor de origem, escolha GitHub (por meio do aplicativo do GitHub).
-
Em Conexão, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação de origem do GitHub, consulte Conexões do GitHub.
-
Em Nome do repositório, selecione o nome do seu repositório do GitHub.
Escolha Próximo.
-
-
Na página Etapa 4: Adicionar etapa de compilação, escolha Ignorar.
-
Na página Etapa 5: Adicionar etapa de implantação, escolha EC2.
-
Em Diretório de destino, insira o diretório na instância na qual você deseja implantar, como
/home/ec2-user/testhelloworld.nota
Especifique o diretório de implantação que você deseja que a ação use na instância. A ação automatizará a criação do diretório especificado na instância como parte da implantação.
-
Para PostScript, insira o caminho e o nome do arquivo do script, como
test/script.sh. -
Escolha Próximo.
-
-
Na página Step 6: Review, revise a configuração do pipeline e escolha Create pipeline para criá-lo.
-
Depois que o pipeline for executado com êxito, escolha Visualizar detalhes para exibir os logs na ação a fim de exibir a saída da ação da computação gerenciada.
Etapa 5: Testar o pipeline
O pipeline deve ter tudo para realizar uma implantação contínua de ponta a ponta nativa da AWS. Agora, teste a funcionalidade enviando uma alteração de código ao repositório de origem.
Para testar o pipeline
-
Faça uma alteração no código no repositório de origem configurado, confirme e envie a alteração.
Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/
. -
Escolha o pipeline na lista.
-
Observe a evolução do pipeline pelos respectivos estágios. O pipeline deve ser concluído, e a ação implanta o script nas instâncias.
-
Para obter mais informações sobre solução de problemas, consulte A ação Implantar do EC2 falha com uma mensagem de erro No such file.