Tutorial: Criar um pipeline que usa o Amazon S3 como um provedor de implantação - AWS CodePipeline

Tutorial: Criar um pipeline que usa o Amazon S3 como um provedor de implantação

Nesse tutorial, você configurará um pipeline que fornece continuamente arquivos usando o Amazon S3 como o provedor de ação de implantação no estágio de implantação. O pipeline concluído detecta alterações quando você faz uma alteração nos arquivos de origem em seu repositório de origem. O pipeline usa o Amazon S3 para implantar os arquivos no bucket. Sempre que você modifica ou adiciona os arquivos do site no local de origem, a implantação cria o site com os arquivos mais recentes.

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.

nota

Mesmo que você exclua arquivos do repositório de origem, a ação de implantação do S3 não exclui objetos do S3 correspondentes aos arquivos excluídos.

Esse tutorial fornece duas opções:

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 obter mais informações, consulte Adicionar uma ação entre regiões no CodePipeline.

Opção 1: Implantar arquivos estáticos de sites no Amazon S3

Neste exemplo, você faz download do arquivo do modelo de exemplo do site estático, carrega os arquivos no repositório do AWS CodeCommit, cria seu bucket e o configura para hospedagem. Depois, use o console do AWS CodePipeline para criar o pipeline e especificar uma configuração de implantação do Amazon S3.

Pré-requisitos

Você já deve ter o seguinte:

  • Um repositório do CodeCommit. Você pode usar o repositório do AWS CodeCommit que você criou em Tutorial: Criar um pipeline simples (repositório do CodeCommit).

  • Os arquivos de origem para o site estático. Use este link para fazer download de um exemplo de site estático. O download do sample-website.zip apresenta os seguintes arquivos:

    • Um arquivo index.html;

    • Um arquivo main.css

    • Um arquivo graphic.jpg

  • Um bucket do S3 configurado para hospedagem de site. Consulte Hospedagem de um site estático no Amazon S3. Crie o bucket na mesma região do pipeline.

    nota

    Para hospedar um site, seu bucket deve ter acesso público de leitura, o que dá acesso de leitura a todos. Com exceção da hospedagem de sites, é necessário manter as configurações de acesso padrão que bloqueiam o acesso público aos buckets do S3.

Etapa 1: Enviar os arquivos de origem ao repositório do CodeCommit

Nessa seção, envie seus arquivos de origem para o repositório que o pipeline usa para o estágio de origem.

Para enviar arquivos ao repositório do CodeCommit
  1. Extraia os exemplos de arquivos obtidos por download. Não faça upload do arquivo ZIP para o repositório.

  2. Envie ou faça upload dos arquivos no repositório do CodeCommit. Esses arquivos são o artefato de origem gerado pelo assistente Criar pipeline para a ação de implantação no CodePipeline. Os arquivos devem ter a seguinte aparência em seu diretório local:

    index.html main.css graphic.jpg
  3. É possível usar o Git ou o console do CodeCommit para fazer upload dos arquivos.

    1. Para usar a linha de comando Git a partir de um repositório clonado no computador local:

      1. Execute o seguinte comando para organizar todos os seus arquivos de uma só vez:

        git add -A
      2. Execute o seguinte comando para confirmar os arquivos com uma mensagem de confirmação:

        git commit -m "Added static website files"
      3. Execute o seguinte comando para enviar os arquivos do repositório local ao repositório do CodeCommit:

        git push
    2. Para usar o console do CodeCommit para fazer upload dos arquivos:

      1. Abra o console do CodeCommit e selecione o repositório na lista Repositórios.

      2. Selecione Add file (Adicionar arquivo) e clique em Upload file (Carregar arquivo).

      3. Selecione Choose file (Escolher arquivo) e procure o arquivo. Informe seu nome de usuário e endereço de e-mail para confirmar a alteração. Escolha Commit changes (Confirmar alterações).

      4. Repita essa etapa para cada arquivo que deseja carregar.

Etapa 2: Criar o pipeline

Nesta seção, você criará um pipeline com as seguintes ações:

  • Um estágio de origem com uma ação do CodeCommit em que os artefatos de origem são os arquivos do site.

  • Um estágio de implantação com uma ação de implantação do Amazon S3.

Criar um pipeline com o assistente
  1. Faça login no Console de gerenciamento da AWS e abra o console do CodePipeline em http://console.aws.amazon.com/codesuite/codepipeline/home.

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

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

  4. Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira MyS3DeployPipeline.

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

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

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

  8. Em Etapa 3: Adicionar etapa de origem, em Provedor de origem, escolha AWS CodeCommit. Em Nome do repositório, selecione o nome do repositório do CodeCommit criado em Etapa 1: criar um repositório do CodeCommit. Em Nome do ramo, selecione o nome do ramo que contém a última atualização do código. A não ser que você tenha criado outro ramo, apenas main esta disponível.

    Assim que selecionar o nome do repositório e a ramificação, a regra do Amazon CloudWatch Events a ser criada para esse pipeline será exibida.

    Escolha Próximo.

  9. Em Etapa 4: Adicionar etapa de compilação, escolha Ignorar etapa de compilação e aceite a mensagem de aviso escolhendo Ignorar novamente.

    Escolha Próximo.

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

    Escolha Próximo.

  11. Em Etapa 6: Adicionar etapa de implantação:

    1. Em Deploy provider (Provedor de implantação), escolha Amazon S3.

    2. Em Bucket, insira o nome do seu bucket público.

    3. Selecione Extract file before deploy (Extrair arquivo antes de implantar).

      nota

      A implantação falhará se você não selecionar Extrair arquivo antes da implantação. Isso ocorre porque a ação do AWS CodeCommit no pipeline compacta os artefatos de origem e o arquivo é um arquivo ZIP.

      Quando Extract file before deploy (Extrair arquivo antes de implantar) for selecionado, o Deployment path (Caminho de implantação) será exibido. Insira no nome do caminho que você deseja usar. Isso cria uma estrutura de pastas no Amazon S3 para a qual os arquivos são extraídos. Para esse tutorial, deixe esse campo em branco.

      A página Etapa 6: Adicionar etapa de implantação de uma ação de implantação do S3 com uma origem AWS CodeCommit
    4. (Opcional) Em Canned ACL (ACL pré-configurada), você pode aplicar um conjunto de concessões predefinidas, conhecido como ACL pré-configurada, aos artefatos carregados.

    5. (Opcional) Em Cache control (Controle de cache), insira os parâmetros de armazenamento em cache. Você pode definir isso para controlar o comportamento do armazenamento em cache para solicitações/respostas. Para obter os valores válidos, consulte o campo de cabeçalho Cache-Control para operações HTTP.

    6. Escolha Próximo.

  12. Em Etapa 7: Revisar, revise as informações e, então selecione Criar pipeline.

  13. Depois que o pipeline for executado com êxito, abra o console do Amazon S3 e verifique se os arquivos aparecem no bucket público, conforme mostrado:

    index.html main.css graphic.jpg
  14. Acesse o endpoint para testar o site. O endpoint segue este formato: http://bucket-name.s3-website-region.amazonaws.com/.

    Exemplo do endpoint: http://my-bucket.s3-website-us-west-2.amazonaws.com/.

    A página da web a seguir é exibida.

Etapa 3: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação

Inclua uma alteração nos arquivos de origem e envie-a ao repositório. Deste modo, a execução de seu pipeline é acionada. Verifique se o site está atualizado.

Opção 2: Implantar arquivos de arquivamento compilados no Amazon S3 a partir de um bucket de origem do S3

Nesta opção, os comandos de compilação no estágio de compilação compilam o código do TypeScript no código JavaScript e implantam a saída no bucket de destino do S3 em uma pasta separada com timestamp. Primeiro, você cria o código do TypeScript e um arquivo buildspec.yml. Depois de combinar os arquivos de origem em um arquivo ZIP, faça upload do arquivo ZIP de origem para o bucket de origem do S3 e use um estágio do CodeBuild para implantar um arquivo ZIP da aplicação criado no bucket de destino do S3. O código compilado é mantido como um arquivo no bucket de destino.

Pré-requisitos

Você já deve ter o seguinte:

Etapa 1: Criar e fazer upload de arquivos de origem para o bucket de origem do S3

Nessa seção, você cria e faz upload dos arquivos de origem para o bucket que o pipeline usa para seu estágio de origem. Essa seção fornece instruções para criar os seguintes arquivos de origem:

  • Um arquivo buildspec.yml, que é usado para projetos de criação do CodeBuild.

  • Um arquivo index.ts.

criar um arquivo buildspec.yml
  • Crie um arquivo denominado buildspec.yml com os conteúdos a seguir. Esses comandos de compilação instalam o TypeScript e usam o compilador do TypeScript para reescrever o código no index.ts para o código JavaScript.

    version: 0.2 phases: install: commands: - npm install -g typescript build: commands: - tsc index.ts artifacts: files: - index.js
Criar um arquivo index.ts
  • Crie um arquivo denominado index.ts com os conteúdos a seguir.

    interface Greeting { message: string; } class HelloGreeting implements Greeting { message = "Hello!"; } function greet(greeting: Greeting) { console.log(greeting.message); } let greeting = new HelloGreeting(); greet(greeting);
Como fazer upload de arquivos para o bucket de origem do S3
  1. Os arquivos devem ter a seguinte aparência em seu diretório local:

    buildspec.yml index.ts

    Compacte os arquivos e nomeie o arquivo source.zip.

  2. No console do Amazon S3, para o bucket de origem, selecione Carregar. Escolha Add files (Adicionar arquivos) e procure o arquivo ZIP que você criou.

  3. Escolha Carregar. Esses arquivos são o artefato de origem gerado pelo assistente Criar pipeline para a ação de implantação no CodePipeline. O arquivo deve ter a seguinte aparência no bucket:

    source.zip

Etapa 2: Criar o pipeline

Nesta seção, você criará um pipeline com as seguintes ações:

  • Um estágio de origem com uma ação do Amazon S3 em que os artefatos de origem são os arquivos da aplicação para download.

  • Um estágio de implantação com uma ação de implantação do Amazon S3.

Criar um pipeline com o assistente
  1. Faça login no Console de gerenciamento da AWS e abra o console do CodePipeline em http://console.aws.amazon.com/codesuite/codepipeline/home.

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

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

  4. Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira MyS3DeployPipeline.

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

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

  7. Em Etapa 3: Adicionar etapa de origem, em Provedor de origem, escolha Amazon S3. Em Bucket, escolha o nome do bucket de origem. Na chave de objeto do S3, insira o nome do arquivo ZIP de origem. Certifique-se de incluir a extensão de arquivo .zip.

    Escolha Próximo.

  8. Em Etapa 4: adicionar estágio de compilação:

    1. Em Provedor de compilação, selecione CodeBuild.

    2. Selecione Create build project (Criar projeto de compilação). Na página Create project (Criar projeto):

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

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

    5. Em Runtime (Tempo de execução), selecione Standard (Padrão). Em Runtime version (Versão do tempo de execução), escolha aws/codebuild/standard:1.0.

    6. Na Image version (Versão da imagem), escolha Always use the latest image for this runtime version (Sempre usar a imagem mais recente para esta versão de tempo de execução).

    7. Em Perfil de serviço, selecione o perfil de serviço do CodeBuild ou crie um.

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

    9. Escolha Continue to CodePipeline (Continuar para CodePipeline). Uma mensagem será exibida se o projeto foi criado com sucesso.

    10. Escolha Próximo.

  9. Em Etapa 5: Adicionar etapa de implantação:

    1. Em Deploy provider (Provedor de implantação), escolha Amazon S3.

    2. Em Bucket, insira o nome do bucket de destino do S3.

    3. Certifique-se de que Extract file before deploy (Extrair arquivo antes de implantar) esteja desmarcada.

      Quando Extract file before deploy (Extrair arquivo antes de implantar) estiver desmarcado, a S3 object key (chave de objeto do S3) será exibida. Insira no nome do caminho que você deseja usar: js-application/{datetime}.zip.

      Isso cria uma pasta js-application no Amazon S3 para a qual os arquivos são extraídos. Nessa pasta, a variável {datetime} cria um timestamp em cada arquivo de saída quando o pipeline é executado.

      A página Etapa 5: implantar de uma ação de implantação do Amazon S3 com uma origem do Amazon S3
    4. (Opcional) Em Canned ACL (ACL pré-configurada), você pode aplicar um conjunto de concessões predefinidas, conhecido como ACL pré-configurada, aos artefatos carregados.

    5. (Opcional) Em Cache control (Controle de cache), insira os parâmetros de armazenamento em cache. Você pode definir isso para controlar o comportamento do armazenamento em cache para solicitações/respostas. Para obter os valores válidos, consulte o campo de cabeçalho Cache-Control para operações HTTP.

    6. Escolha Próximo.

  10. Em Etapa 6: Revisar, revise as informações e, então selecione Criar pipeline.

  11. Depois que o pipeline for executado com êxito, visualize o bucket no console do Amazon S3. Verifique se o arquivo ZIP implantado é exibido no seu bucket de destino na pasta js-application. O arquivo JavaScript contido no arquivo ZIP deve ser index.js. O arquivo index.js contém a seguinte saída:

    var HelloGreeting = /** @class */ (function () { function HelloGreeting() { this.message = "Hello!"; } return HelloGreeting; }()); function greet(greeting) { console.log(greeting.message); } var greeting = new HelloGreeting(); greet(greeting);

Etapa 3: Realizar uma alteração em qualquer arquivo de origem e verificar a implantação

Faça uma alteração nos seus arquivos de origem e faça upload deles para o bucket de origem. Deste modo, a execução de seu pipeline é acionada. Visualize seu bucket de destino e verifique se os arquivos de saída implantados estão disponíveis na pasta js-application, conforme mostrado:

Download do exemplo de ZIP