Exemplo do Amazon Elastic File System para AWS CodeBuild - AWS CodeBuild

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

Exemplo do Amazon Elastic File System para AWS CodeBuild

Talvez você queira criar suas AWS CodeBuild versões no Amazon Elastic File System, um serviço de arquivos compartilhado e escalável para instâncias do Amazon EC2. A capacidade de armazenamento com o Amazon EFS é elástica, portanto, aumenta ou diminui à medida que arquivos são adicionados e removidos. Ela tem uma interface simples de serviços da Web que pode ser usada para criar e configurar sistemas de arquivos. Ela também gerencia toda a infraestrutura de armazenamento de arquivos para você, para que você não precise se preocupar com a implantação, atualização nem com a manutenção das configurações do sistema de arquivos. Para obter mais informações, consulte What is Amazon Elastic File System? no Guia do usuário do Amazon Elastic File System.

Este exemplo mostra como configurar um CodeBuild projeto para que ele monte e, em seguida, crie um aplicativo Java em um sistema de arquivos Amazon EFS. Antes de começar, você deve ter um aplicativo Java pronto para ser construído e carregado em um bucket de entrada do S3 ou em um repositório AWS CodeCommit GitHub,, GitHub Enterprise Server ou Bitbucket.

Os dados em trânsito para o sistema de arquivos estão criptografados. Para criptografar os dados em trânsito usando uma imagem diferente, consulte Criptografar dados em trânsito.

Etapas de nível superior

Este exemplo abrange as três etapas de alto nível necessárias para usar o Amazon EFS com AWS CodeBuild:

  1. Crie uma nuvem privada virtual (VPC) em sua AWS conta.

  2. Crie um sistema de arquivos que usa essa VPC.

  3. Crie e construa um CodeBuild projeto que use a VPC. O CodeBuild projeto usa o seguinte para identificar o sistema de arquivos:

    • Um identificador de sistema de arquivos exclusivo. Você escolhe o identificador ao especificar o sistema de arquivos no projeto de compilação.

    • O ID do sistema de arquivos. O ID é exibido quando você visualiza o sistema de arquivos no console do Amazon EFS.

    • Um ponto de montagem. Este é um diretório no contêiner do Docker que monta o sistema de arquivos.

    • Opções de montagem. Elas incluem os detalhes sobre como montar o sistema de arquivos.

nota

Um sistema de arquivos criado no Amazon EFS é compatível somente com as plataformas Linux.

Crie uma VPC usando AWS CloudFormation

Crie sua VPC com um AWS CloudFormation modelo.

  1. Siga as instruções de uso Modelo da VPC do AWS CloudFormation AWS CloudFormation para criar uma VPC.

    nota

    A VPC criada por esse AWS CloudFormation modelo tem duas sub-redes privadas e duas sub-redes públicas. Você só deve usar sub-redes privadas quando você usa AWS CodeBuild para montar o sistema de arquivos que você criou no Amazon EFS. Se você usar uma das sub-redes públicas, a compilação falhará.

  2. Faça login AWS Management Console e abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  3. Escolha a VPC com a qual você criou. AWS CloudFormation

  4. Na guia Description (Descrição) anote o nome da sua VPC e do ID. Ambos são necessários quando você cria seu AWS CodeBuild projeto posteriormente neste exemplo.

Criar um sistema de arquivos do Amazon Elastic File System com a VPC

Crie um sistema de arquivos Amazon EFS simples para esse exemplo usando a VPC criada anteriormente.

  1. Faça login AWS Management Console e abra o console do Amazon EFS em https://console.aws.amazon.com/efs/.

  2. Escolha Create file system (Criar sistema de arquivos).

  3. Em VPC, escolha o nome da VPC que você anotou anteriormente neste exemplo.

  4. Deixe as zonas de disponibilidade associadas às suas sub-redes selecionadas.

  5. Escolha Next Step.

  6. Em Adicionar tags, para a chave Nome, em Valor, insira o nome do sistema de arquivos Amazon EFS.

  7. Mantenha Bursting e General Purpose (Uso geral) selecionados como modos padrão de desempenho e de taxa de transferência e selecione Next Step (Próxima etapa).

  8. Para Configure client access (Configurar acesso de cliente), escolha Next Step (Próxima etapa).

  9. Escolha Criar sistema de arquivos.

  10. (Opcional) Recomendamos adicionar uma política ao sistema de arquivos Amazon EFS que imponha a criptografia de dados em trânsito. No console do Amazon EFS, escolha Política do sistema de arquivos, escolha Editar, selecione a caixa Aplicar criptografia em trânsito para todos os clientes e escolha Salvar.

Crie um CodeBuild projeto para usar com o Amazon EFS

Crie um AWS CodeBuild projeto que use a VPC que você criou anteriormente neste exemplo. Quando a compilação for executada, ela montará o sistema de arquivos do Amazon EFS criado anteriormente. Depois, armazenará o arquivo .jar criado pelo aplicativo Java no diretório do ponto de montagem do sistema de arquivos.

  1. Abra o AWS CodeBuild console em https://console.aws.amazon.com/codesuite/codebuild/home.

  2. No painel de navegação, escolha Projetos de compilação e, depois, Criar projeto de compilação.

  3. Em Nome do projeto, digite um nome para o seu projeto.

  4. Em Provedor de origem, escolha o repositório que contém o aplicativo Java que você deseja criar.

  5. Insira informações, como uma URL do repositório, que CodeBuild usa para localizar seu aplicativo. As opções são diferentes para cada provedor de origem. Para ter mais informações, consulte Choose source provider.

  6. Em Environment image (Imagem do ambiente), escolha Managed image (Imagem gerenciada).

  7. Em Operating system (Sistema operacional), escolha Amazon Linux 2.

  8. Em Runtime(s) (Tempo(s) de execução), selecione Standard (Padrão).

  9. Em Imagem, escolha aws/codebuild/amazonlinux2-x86_64-standard:4.0.

  10. Em Environment type (Tipo de ambiente), escolha Linux.

  11. Em Função do serviço, selecione Nova função de serviço. Em Nome da função, insira um nome para a função CodeBuild criada para você.

  12. Expanda Configuração Adicional.

  13. Selecione Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Ativar este sinalizador se quiser criar imagens do Docker ou desejar que suas compilações obtenham privilégios elevados).

    nota

    Por padrão, o daemon do Docker está habilitado para compilações não VPC. Se você quiser usar contêineres do Docker para compilações de VPC, consulte Runtime Privilege e recursos do Linux no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado.

  14. Em VPC, escolha o ID do VPC.

  15. Em Sub-redes, escolha uma ou mais sub-redes privadas associadas à VPC. É necessário usar sub-redes privadas em uma compilação que monta um sistema de arquivos Amazon EFS. Se você usar uma sub-rede pública, a compilação falhará.

  16. Em Security groups (Grupos de segurança), escolha o grupo de segurança padrão.

  17. Em File systems (Sistemas de arquivo), insira as seguintes informações:

    • Em Identifer (Identificador), insira um identificador exclusivo do sistema de arquivos. Deve ter menos de 129 caracteres e conter somente caracteres alfanuméricos e sublinhados. CodeBuild usa esse identificador para criar uma variável de ambiente que identifica o sistema de arquivos elástico. O formato da variável de ambiente é CODEBUILD_<file_system_identifier> em letras maiúsculas. Por exemplo, se você inserir my_efs, a variável de ambiente será CODEBUILD_MY_EFS.

    • Para ID, escolha o ID do sistema de arquivos.

    • (Opcional) Insira um diretório no sistema de arquivos. CodeBuild monta esse diretório. Se você deixar o caminho do diretório em branco, CodeBuild monta todo o sistema de arquivos. O caminho é relativo à raiz do sistema de arquivos.

    • Em Ponto de montagem, digite o caminho absoluto do diretório no contêiner de compilação onde o sistema de arquivos é montado. Se esse diretório não existir, CodeBuild cria-o durante a compilação.

    • (Opcional) Insira as opções de montagem. Se você deixar as opções de montagem em branco, CodeBuild usa suas opções de montagem padrão:

      nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2

      Para obter mais informações, consulte Recommended NFS Mount Options no Guia do usuário do Amazon Elastic File System.

  18. Em Build specification (Criar especificação), escolha Insert build commands (Inserir comandos de compilação) e escolha Switch to editor (Alternar para editor).

  19. Insira os comandos buildspec a seguir no editor. Substitua <file_system_identifier> pelo identificador inserido na etapa 17. Use letras maiúsculas (por exemplo, CODEBUILD_MY_EFS).

    version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
  20. Use os valores padrão para todas as outras configurações e, em seguida, escolha Criar projeto de compilação. Quando a compilação estiver concluída, a página do console para o projeto será exibida.

  21. Selecione Start build.

CodeBuild e resumo da amostra do Amazon EFS

Depois que seu AWS CodeBuild projeto for construído:

  • Você terá um arquivo .jar criado pela aplicação Java criada para o sistema de arquivos Amazon EFS no diretório do ponto de montagem.

  • Uma variável de ambiente que identifica o sistema de arquivos é criada usando o identificador de sistema de arquivos inserido quando o projeto foi criado.

Para obter mais informações, consulte Mounting file systems no Guia do usuário do Amazon Elastic File System.

Solução de problemas

A seguir estão os erros que você pode encontrar ao configurar o Amazon EFS com CodeBuild.

CLIENT_ERROR: falha na montagem de “127.0.0.1: /”. Permissão negada

A autorização do IAM não é suportada para montar o Amazon EFS com CodeBuild. Se você estiver usando uma política personalizada do sistema de arquivos do Amazon EFS, precisará conceder acesso de leitura e gravação a todas as entidades principais do IAM. Por exemplo: .

"Principal": { "AWS": "*" }

CLIENT_ERROR: falha na montagem de “127.0.0.1: /”. Conexão redefinida pelo par

Há duas causas possíveis para esse erro:

  • A sub-rede CodeBuild VPC está em uma zona de disponibilidade diferente do destino de montagem do Amazon EFS. É possível resolver isso incluindo uma sub-rede da VPC na mesma zona de disponibilidade do destino de montagem do Amazon EFS.

  • O grupo de segurança não tem permissões para se comunicar com o Amazon EFS. É possível resolver isso adicionando uma regra de entrada para viabilizar todo o tráfego da VPC (adicione o bloco CIDR primário da VPC) ou do próprio grupo de segurança.

VPC_CLIENT_ERROR: erro inesperado do EC2: UnauthorizedOperation

Esse erro ocorre quando todas as sub-redes em sua configuração de VPC para o CodeBuild projeto são sub-redes públicas. É necessário ter, pelo menos, uma sub-rede privada na VPC para garantir a conectividade de rede.