Tutorial: Criar um pipeline que publica o aplicativo sem servidor no AWS Serverless Application Repository - AWS CodePipeline

Tutorial: Criar um pipeline que publica o aplicativo sem servidor no AWS Serverless Application Repository

Use o AWS CodePipeline para entregar continuamente seu aplicativo sem servidor do AWS SAM ao AWS Serverless Application Repository.

Importante

Como parte da criação de um pipeline, um bucket de artefatos do S3 fornecido pelo cliente 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.

Este tutorial mostra como criar e configurar um pipeline para compilar seu aplicativo sem servidor hospedado no GitHub e publicá-lo no AWS Serverless Application Repository automaticamente. O pipeline usa o GitHub como provedor de origem e o CodeBuild como provedor de compilação. Para publicar seu aplicativo sem servidor no AWS Serverless Application Repository, implante um aplicativo (do AWS Serverless Application Repository) e associe a função do Lambda criada por esse aplicativo como um provedor de ações de Invocação no pipeline. Depois, será possível entregar continuamente atualizações do aplicativo ao AWS Serverless Application Repository sem a necessidade de escrever código.

Importante

Muitas das ações adicionadas ao pipeline neste procedimento envolvem recursos da AWS que você precisa criar antes do pipeline. Os recursos da AWS para as ações de origem sempre devem ser criados na mesma região da AWS na qual o pipeline será criado. Por exemplo, se você criar o pipeline na região Leste dos EUA (Ohio), o repositório do CodeCommit deverá estar na região Leste dos EUA (Ohio).

Você pode adicionar ações entre regiões ao criar seu pipeline. Os recursos da AWS para ações entre regiões devem estar na mesma região da AWS em que você planeja executar a ação. Para ter mais informações, consulte Adicionar uma ação entre regiões no CodePipeline.

Antes de começar

Neste tutorial, assumimos o seguinte.

Etapa 1: Criar um arquivo buildspec.yml

Crie um arquivo buildspec.yml com o seguinte conteúdo e adicione-o ao repositório GitHub de seu aplicativo sem servidor. Substitua template.yml pelo modelo do AWS SAM de seu aplicativo e bucketname pelo bucket do S3 em que o aplicativo no pacote está armazenado.

version: 0.2 phases: install: runtime-versions: python: 3.8 build: commands: - sam package --template-file template.yml --s3-bucket bucketname --output-template-file packaged-template.yml artifacts: files: - packaged-template.yml

Etapa 2: Criar e configurar o pipeline

Siga estas etapas para criar seu pipeline na Região da AWS em que deseja publicar seu aplicativo sem servidor.

  1. Faça login no AWS Management Console e abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline.

  2. Se necessário, alterne para a Região da AWS em que deseja publicar seu aplicativo sem servidor.

  3. Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).

  4. 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.

  5. Selecione Criar pipeline. Em Etapa 2: escolher a página de configurações do pipeline, em Nome do pipeline, insira o nome do seu pipeline.

  6. Em Tipo de pipeline, escolha V2. Para ter mais informações, consulte Tipos de pipeline. Escolha Próximo.

  7. Em Perfil de serviço, escolha Novo perfil de serviço para permitir que o CodePipeline crie um perfil de serviço no IAM.

  8. Deixe as configurações em Advanced settings (Configurações avançadas) como padrão e escolha Next (Próximo).

  9. Na página Adicionar estágio de origem, em Provedor de origem, escolha GitHub.

  10. 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.

  11. Em Repository (Repositório), selecione o repositório de origem GitHub.

  12. Em Branch (Ramificação), escolha sua ramificação do GitHub.

  13. Deixe os padrões restantes para a ação de origem. Escolha Próximo.

  14. Na página Add build stage (Adicionar estágio de compilação), adicione um estágio de compilação:

    1. Em Build provider (Provedor de compilação), escolha AWS CodeBuild. Em Region (Região), use a região do pipeline.

    2. Escolha Criar projeto.

    3. Em Project name (Nome do projeto), insira um nome para esse projeto de compilação.

    4. Em Environment image (Imagem do ambiente), escolha Managed image (Imagem gerenciada). Para Operating system, selecione Ubuntu.

    5. Em Runtime (Tempo de execução) e Runtime version (Versão do tempo de execução), escolha o tempo de execução e a versão necessários para o seu aplicativo sem servidor.

    6. Em Service role (Função de serviço), selecione New service role (Nova função de serviço).

    7. Para Build specifications (Especificações da compilação), escolha Use a buildspec file (Usar um arquivo buildspec).

    8. Escolha Continue to CodePipeline (Continuar para CodePipeline). Isso abrirá o console do CodePipeline e criará um projeto do CodeBuild que usa o buildspec.yml em seu repositório para configuração. O projeto de criação usa um perfil de serviço para gerenciar permissões de AWS service (Serviço da AWS). Essa etapa pode levar alguns minutos.

    9. Escolha Próximo.

  15. Na página Add deploy stage (Adicionar estágio de implantação), escolha Skip deploy stage (Ignorar estágio de implantação) e aceite a mensagem de aviso ao clicar novamente em Skip (Ignorar). Escolha Próximo.

  16. Selecione Criar pipeline. Você deve ver um diagrama que mostra a origem e os estágios de compilação.

  17. Conceda ao perfil de serviço do CodeBuild permissão para acessar o bucket do S3 em que o seu aplicativo compactado está armazenado.

    1. No estágio Compilação de seu novo pipeline, escolha CodeBuild.

    2. Selecione a guia Build details (Detalhes de compilação).

    3. Em Ambiente, escolha o perfil de serviço do CodeBuild para abrir o console do IAM.

    4. Expanda a seleção para CodeBuildBasePolicy e escolha Edit policy (Editar política).

    5. Selecione JSON.

    6. Adicione uma nova declaração de política com o seguinte conteúdo. A declaração permite que o CodeBuild coloque objetos no bucket do S3 em que seu aplicativo compactado está armazenado. Substitua bucketname pelo nome do seu bucket do S3.

      { "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucketname/*" ], "Action": [ "s3:PutObject" ] }
    7. Escolha Revisar política.

    8. Escolha Salvar alterações.

Etapa 3: Implantar o aplicativo de publicação

Siga estas etapas para implantar o aplicativo que contém a função do Lambda que realiza a publicação no AWS Serverless Application Repository. Esse aplicativo é aws-serverless-codepipeline-serverlessrepo-publish.

nota

É necessário implantar o aplicativo na mesma Região da AWS que o pipeline.

  1. Vá até a página do aplicativo e escolha Deploy (Implantar).

  2. Selecione I acknowledge that this app creates custom IAM roles (Eu reconheço que este aplicativo cria funções personalizadas do IAM).

  3. Escolha Implantar.

  4. Escolha Visualizar pilha do AWS CloudFormation para abrir o console do AWS CloudFormation.

  5. Expanda a seção Resources (Recursos). Você verá ServerlessRepoPublish, que é do tipo AWS::Lambda::Function. Anote o ID físico desse recurso para a próxima etapa. Esse ID físico será usado ao criar a nova ação de publicação no CodePipeline.

Etapa 4: Criar a ação de publicação

Siga essas etapas para criar a ação de publicação em seu pipeline.

  1. Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/.

  2. Na seção de navegação à esquerda, escolha o pipeline que deseja editar.

  3. Selecione a opção Editar.

  4. Após o último estágio do pipeline atual, escolha + Add stage (+ Adicionar estágio). Em Stage name (Nome do estágio) insira um nome, como Publish, e escolha Add stage (Adicionar estágio).

  5. No novo estágio, escolha + Add action group (+ Adicionar grupo de ação).

  6. Insira um nome de ação. Em Action provider (Provedor de ação), em Invoke (Invocação), escolha AWS Lambda.

  7. Em Input artifacts (Artefatos de entrada), escolha BuildArtifact.

  8. Em Nome da função, escolha o ID físico da função do Lambda anotado na etapa anterior.

  9. Escolha Save (Salvar) para a ação.

  10. Escolha Done (Concluído) para o estágio.

  11. No canto superior direito, escolha Save (Salvar).

  12. Para verificar seu pipeline, faça uma alteração em seu aplicativo no GitHub. Por exemplo, altere a descrição do aplicativo na seção Metadata do arquivo de modelo do AWS SAM. Confirme a alteração e envie-a para a ramificação do GitHub. Deste modo, a execução de seu pipeline é acionada. Quando o pipeline estiver concluído, verifique se o aplicativo foi atualizado com a alteração no AWS Serverless Application Repository.