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

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: Criar um pipeline que usa o Amazon S3 como provedor de implantação

Nesse tutorial, você configura um pipeline que fornece continuamente arquivos usando o Amazon S3 como o provedor de ação de implantação em seu 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. Cada vez que você modifica ou adiciona arquivos do site no local de origem, a implantação cria o site com os arquivos mais recentes.

nota

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

Esse tutorial fornece duas opções:

Importante

Muitas das ações que você adiciona ao pipeline neste procedimento envolvemAWSRecursos que você precisa criar antes de criar o pipeline.AWSOs recursos para as ações de origem devem sempre ser criados no mesmoAWSRegião onde o pipeline for criado. Por exemplo, se você criar seu pipeline na região Leste dos EUA (Ohio), seu repositório do CodeCommit também deverá estar na região Leste dos EUA (Ohio).

Você pode adicionar ações entre regiões ao criar o pipeline.AWSOs recursos para ações entre regiões devem estar no mesmoAWSRegião onde 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 oAWS CodePipelineConsole do para criar o pipeline e especificar uma configuração de implantação do Amazon S3.

Prerequisites

Você já deve ter o seguinte:

  • Um repositório CodeCommit. Você pode usar o repositório do AWS CodeCommit que você criou em Tutorial: Criar um pipeline simples (repositório 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 para o repositório CodeCommit

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

Enviar arquivos ao repositório CodeCommit

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

  2. Enviar ou fazer upload dos arquivos para o repositório CodeCommit. Esses arquivos são o artefato de origem gerado peloCriar pipelinepara sua 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. Você pode usar o Git ou o console 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 para o repositório CodeCommit:

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

      1. Abra o console do CodeCommit e selecione seu repositório noRepositóriosLista.

      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: Crie o pipeline

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

  • Um estágio de origem com uma ação CodeCommit no qual 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 noAWS Management Consolee abra o console do CodePipeline emhttp://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. DentroEtapa 1: Escolha as configurações do pipeline, emPipeline name (Nome do pipeline), insiraMyS3DeployPipeline.

  4. DentroFunção de serviço, escolhaNova função de serviçoPara permitir que o CodePipeline crie uma função de serviço no IAM.

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

  6. DentroEtapa 2: Adicionar estágio de origem, emProvedor de origem, escolhaAWS CodeCommit. DentroNome do repositório, selecione o nome do repositório CodeCommit que você criou noEtapa 1: Criar um repositório 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.

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

    Escolha Next (Próximo).

  7. DentroEtapa 3: Adicionar estágio de compilação, escolhaPular estágio de compilaçãoe aceite a mensagem de aviso ao selecionarSaltarnovamente.

    Escolha Next (Próximo).

  8. DentroEtapa 4: Adicionar estágio 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.

      
                                    OEtapa 4: ImplanteUma ação de implantação do S3 com uma ação de implantação doAWS CodeCommitsource
    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 Next (Próximo).

  9. DentroEtapa 5: Review (Revisar), revise as informações e selecioneCriar pipeline.

    
                            O pipeline completo para uma ação de implantação do Amazon S3 com uma ação de implantação doAWS CodeCommitsource
  10. Depois que o pipeline for executado com sucesso, abra o console do Amazon S3 e verifique se seus arquivos aparecem no bucket público, conforme mostrado:

    index.html main.css graphic.jpg
  11. 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/.

    O exemplo é exibido como mostrado aqui.

    
                            Exemplo de site

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 do para implantar um arquivo ZIP do aplicativo criado no bucket de destino do S3. O código compilado é mantido como um arquivo no bucket de destino.

Prerequisites

Você já deve ter o seguinte:

  • Um bucket de origem do S3. Você pode usar o bucket que criou em Tutorial: Criar um pipeline simples (bucket do S3).

  • Um bucket de destino do S3. Consulte Hospedagem de um site estático no Amazon S3. Certifique-se de criar o bucket na mesma região da AWS do pipeline que você deseja criar.

    nota

    Este exemplo demonstra a implantação de arquivos em um bucket privado. Não ative o bucket de destino para hospedagem de sites nem anexe políticas que tornem o bucket público.

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:

  • Abuildspec.yml, que é usado para projetos de compilação do CodeBuild.

  • Um arquivo index.ts.

criar um arquivo buildspec.yml

  • Crie um arquivo denominado buildspec.yml com o seguinte conteúdo. 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 o seguinte conteúdo.

    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, selecioneCarregar. Escolha Add files (Adicionar arquivos) e procure o arquivo ZIP que você criou.

  3. Escolha Upload (Fazer upload). Esses arquivos são o artefato de origem gerado peloCriar pipelinepara sua ação de implantação no CodePipeline. O arquivo deve ter a seguinte aparência no bucket:

    source.zip

Etapa 2: Crie 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 do aplicativo 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 noAWS Management Consolee abra o console do CodePipeline emhttp://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. DentroEtapa 1: Escolha as configurações do pipeline, emPipeline name (Nome do pipeline), insiraMyS3DeployPipeline.

  4. DentroFunção de serviço, escolhaNova função de serviçoPara permitir que o CodePipeline crie uma função de serviço no IAM.

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

  6. DentroEtapa 2: Adicionar estágio de origem, emProvedor de origem, escolhaAmazon 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 Next (Próximo).

  7. DentroEtapa 3: Adicionar estágio de compilação:

    1. Em Build provider (Provedor de compilação), escolha AWS CodeBuild.

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

    3. Em Project name (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. para oFunção de serviço, escolha a função de serviço CodeBuild ou crie uma.

    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 Next (Próximo).

  8. DentroEtapa 4: Adicionar estágio 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 umjs-applicationno 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.

      
                                    OEtapa 4: ImplantePágina 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 Next (Próximo).

  9. DentroEtapa 5: Review (Revisar), revise as informações e selecioneCriar pipeline.

    
                            O pipeline completo para uma ação de implantação do Amazon S3 com uma origem do Amazon S3
  10. Depois que seu pipeline for executado com sucesso, visualize seu 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