

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tutorial: Crie um pipeline que publique seu aplicativo sem servidor no AWS Serverless Application Repository
<a name="tutorials-serverlessrepo-auto-publish"></a>

Você pode usar AWS CodePipeline para entregar continuamente seu aplicativo AWS SAM sem servidor ao. AWS Serverless Application Repository

**Importante**  
Como parte da criação de um pipeline, um bucket de artefatos S3 fornecido pelo cliente será usado CodePipeline por for artefacts. (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 seu pipeline, certifique-se de que o bucket de artefatos do S3 Contas da AWS seja de propriedade de quem é seguro e confiável.

Este tutorial mostra como criar e configurar um pipeline para criar seu aplicativo sem servidor hospedado GitHub e publicá-lo automaticamente. AWS Serverless Application Repository O pipeline é usado GitHub como provedor de origem e CodeBuild como provedor de compilação. Para publicar seu aplicativo sem servidor no AWS Serverless Application Repository, você implanta um [aplicativo](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) (do AWS Serverless Application Repository) e associa a função Lambda criada por esse aplicativo como um provedor de ação Invoke em seu pipeline. Em seguida, você pode fornecer continuamente atualizações de aplicativos para o AWS Serverless Application Repository, sem escrever nenhum código.

**Importante**  
Muitas das ações que você adiciona ao pipeline nesse procedimento envolvem AWS recursos que você precisa criar antes de criar o pipeline. AWS os recursos para suas ações de origem sempre devem ser criados na mesma AWS região em que você cria seu pipeline. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu CodeCommit repositório deverá estar na região Leste dos EUA (Ohio).   
Você pode adicionar ações entre regiões ao criar seu pipeline. AWS os recursos para ações entre regiões devem estar na mesma AWS região em que você planeja executar a ação. Para obter mais informações, consulte [Adicionar uma ação entre regiões em CodePipeline](actions-create-cross-region.md).

## Antes de começar
<a name="tutorials-serverlessrepo-auto-publish-prereq"></a>

Neste tutorial, assumimos o seguinte. 
+ Você está familiarizado com o [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/) e o [AWS Serverless Application Repository](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/).
+ Você tem um aplicativo sem servidor hospedado no GitHub qual você publicou no AWS Serverless Application Repository usando a CLI AWS SAM . Para publicar um aplicativo de exemplo no AWS Serverless Application Repository, consulte [Início rápido: publicação de aplicativos](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-quick-start.html) no *Guia do AWS Serverless Application Repository desenvolvedor*. Para publicar seu próprio aplicativo no AWS Serverless Application Repository, consulte [Publicação de aplicativos usando a AWS SAM CLI no Guia](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html) do *AWS Serverless Application Model desenvolvedor*.

## Etapa 1: Criar um arquivo buildspec.yml
<a name="serverlessrepo-auto-publish-create-buildspec"></a>

Crie um `buildspec.yml` arquivo com o conteúdo a seguir e adicione-o ao repositório do GitHub seu aplicativo sem servidor. {{template.yml}}Substitua pelo AWS SAM modelo do seu aplicativo e {{bucketname}} pelo bucket do S3 em que o aplicativo empacotado 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
<a name="serverlessrepo-auto-publish-create-pipeline"></a>

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

1. Faça login no Console de gerenciamento da AWS e abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Se necessário, mude para o Região da AWS local em que você deseja publicar seu aplicativo sem servidor.

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

1. 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**.

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

1. Em **Tipo de pipeline**, escolha **V2**. Para obter mais informações, consulte [Tipos de pipeline](pipeline-types.md). Escolha **Próximo**.

1. Em **Função de serviço**, escolha **Nova função de serviço** para permitir CodePipeline a criação de uma função de serviço no IAM.

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

1. Na página **Etapa 3: Adicionar estágio de origem**, em **Provedor de origem**, escolha **GitHub**.

1. Em **Conexão**, escolha uma conexão existente ou crie uma nova. Para criar ou gerenciar uma conexão para sua ação GitHub de origem, consulte[GitHub conexões](connections-github.md).

1. Em **Repositório**, escolha seu repositório GitHub de origem.

1. Em **Filial**, escolha sua GitHub filial.

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

1. Na página **Etapa 4: Adicionar etapa 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.

   1. Escolha **Criar projeto**.

   1. Em **Nome do projeto**, insira um nome para esse projeto de compilação.

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

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

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

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

   1. Escolha **Continuar para CodePipeline**. Isso abre o CodePipeline console e cria um CodeBuild projeto 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.

   1. Escolha **Próximo**.

1. Em **Etapa 5: Adicionar etapa de teste**, escolha **Ignorar etapa de teste** e aceite a mensagem de aviso escolhendo **Ignorar** novamente. 

   Escolha **Próximo**.

1. Na página **Etapa 6: Adicionar estágio de implantação**, escolha **Ignorar estágio de implantação** e, em seguida, aceite a mensagem de aviso escolhendo **Ignorar** novamente. Escolha **Próximo**.

1. Na **Etapa 7: Revisão**, escolha **Criar funil**. Você deve ver um diagrama que mostra os estágios.

1. Conceda à função CodeBuild de serviço permissão para acessar o bucket do S3 em que seu aplicativo empacotado está armazenado.

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

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

   1. Em **Ambiente**, escolha a função CodeBuild de serviço para abrir o console do IAM.

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

   1. Escolha **JSON**.

   1. Adicione uma nova declaração de política com o seguinte conteúdo. A instrução permite CodeBuild colocar objetos no bucket do S3 onde seu aplicativo empacotado está armazenado. {{bucketname}}Substitua pelo nome do seu bucket do S3.

      ```
              {
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::{{bucketname}}/*"
                  ],
                  "Action": [
                      "s3:PutObject"
                  ]
              }
      ```

   1. Selecione **Revisar política**.

   1. Escolha **Salvar alterações**.

## Etapa 3: Implantar o aplicativo de publicação
<a name="serverlessrepo-auto-publish-deploy-app"></a>

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. Este aplicativo é **aws-serverless-codepipeline-serverlessrepo-publish**.

**nota**  
Você deve implantar o aplicativo da Região da AWS mesma forma que seu pipeline.

1. Vá até a página do [aplicativo](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) e escolha **Deploy (Implantar)**.

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

1. Escolha **Implantar**.

1. Escolha **View CloudFormation Stack** para abrir o CloudFormation console.

1. Expanda a seção **Resources (Recursos)**. Veja **ServerlessRepoPublish**, o 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
<a name="serverlessrepo-auto-publish-create-action"></a>

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

1. Abra o CodePipeline console em [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

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

1. Escolha **Editar**.

1. 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)**.

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

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

1. Em **Artefatos de entrada**, escolha **BuildArtifact**.

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

1. Escolha **Save (Salvar)** para a ação.

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

1. No canto superior direito, escolha **Save (Salvar)**.

1. Para verificar seu pipeline, faça uma alteração em seu aplicativo em GitHub. Por exemplo, altere a descrição do aplicativo na `Metadata` seção do seu arquivo de AWS SAM modelo. Confirme a alteração e envie-a para sua GitHub filial. 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](https://console.aws.amazon.com/serverlessrepo/home).