Compilar e implantar automaticamente uma aplicação em Java no Amazon EKS usando um pipeline de CI/CD - Recomendações da AWS

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

Compilar e implantar automaticamente uma aplicação em Java no Amazon EKS usando um pipeline de CI/CD

Criado por MAHESH RAGHUNANDANAN (AWS), James Radtke (AWS) e Jomcy Pappachen (AWS)

Repositório de códigos: aws-cicd-java-eks

Ambiente: produção

Tecnologias: contêineres e microsserviços; nativo da nuvem; modernização DevOps

Workload: todas as outras workloads

Serviços da AWS: AWS CloudFormation; AWS; AWS CodeCommit CodePipeline; Amazon EC2 Container Registry; Amazon EKS

Resumo

Esse padrão descreve como criar um pipeline de integração contínua e entrega contínua (CI/CD) que cria e implanta automaticamente um aplicativo Java com as DevSecOps práticas recomendadas em um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) na nuvem da Amazon Web Services (AWS). Esse padrão usa um aplicativo de saudação desenvolvido com uma estrutura Java Spring Boot e que usa o Apache Maven.

Você pode usar a abordagem deste padrão para compilar o código para um aplicativo Java, empacotar os artefatos do aplicativo como uma imagem do Docker, verificar a segurança da imagem e fazer o upload da imagem como um contêiner de workload no Amazon EKS. A abordagem deste padrão é útil se você quiser migrar de uma arquitetura monolítica fortemente acoplada para uma arquitetura de microsserviços. A abordagem também ajuda você a monitorar e gerenciar todo o ciclo de vida de um aplicativo Java, o que garante um nível mais alto de automação e ajuda a evitar erros ou bugs.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • AWS Command Line Interface (AWS CLI) versão 2, instalada e configurada. Para obter mais informações, consulte Instalação, atualização e desinstalação da AWS CLI versão 2na documentação da AWS CLI.

  • A versão 2 do AWS CLI deve ser configurada com o mesmo perfil do IAM que cria o cluster do Amazon EKS porque somente esse perfil está autorizado a adicionar outros perfis do IAM ao aws-auth ConfigMap. Para obter informações e etapas para configurar a AWS CLI, consulte Fundamentos da configuração na documentação da AWS CLI.

  • Funções e permissões do AWS Identity and Access Management (IAM) com acesso total à AWS CloudFormation. Para obter mais informações sobre isso, consulte Como controlar o acesso com o IAM na CloudFormation documentação da AWS.

  • Um cluster Amazon EKS existente, com detalhes do nome do perfil do IAM e o nome do recurso da Amazon (ARN) do perfil do IAM dos nós de processamento no cluster EKS.

  • Kubernetes Cluster Autoscaler, instalado e configurado em seu cluster Amazon EKS. Para obter mais informações, consulte o Ajustador de escala automático cluster na documentação do Amazon EKS. 

  • Acesso ao código no GitHub repositório.

Observação importante

O AWS Security Hub é ativado como parte dos CloudFormation modelos da AWS que estão no código. Por padrão, após a ativação do Security Hub, ele vem com um teste gratuito de 30 dias, após o qual há um custo associado a esse serviço da AWS. Para obter mais informações, consulte Preço do AWS Security Hub.

Versões do produto

  • Helm versão 3.4.2 ou superior

  • Apache Maven versão 3.6.3 ou mais recente

  • BridgeCrew Checkov versão 2.2 ou posterior

  • Aqua Security Trivy versão 0.37 ou mais recente

Arquitetura

Pilha de tecnologia

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon CodeGuru

  • AWS CodePipeline

  • Amazon Elastic Container Registry

  • Amazon Elastic Kubernetes Service

  • Amazon EventBridge

  • AWS Security Hub

  • Amazon Simple Notification Service (Amazon SNS)

Arquitetura de destino

""

O diagrama mostra o seguinte fluxo de trabalho:

  1. O desenvolvedor atualiza o código do aplicativo Java na ramificação base do CodeCommit repositório, o que cria uma pull request (PR).

  2. Assim que o PR é enviado, o Amazon CodeGuru Reviewer revisa automaticamente o código, o analisa com base nas melhores práticas de Java e fornece recomendações ao desenvolvedor.

  3. Depois que o PR é mesclado com a filial base, um EventBridge evento da Amazon é criado.

  4. O EventBridge evento inicia o CodePipeline pipeline, que começa.

  5. CodePipeline executa o estágio de CodeSecurity digitalização (segurança contínua).

  6. CodeBuild inicia o processo de verificação de segurança no qual os arquivos Helm de implantação do Dockerfile e do Kubernetes são escaneados usando o Checkov, e o código-fonte do aplicativo é escaneado com base em alterações incrementais no código. A verificação do código-fonte do aplicativo é executada pelo wrapper CodeGuru Reviewer Command Line Interface (CLI).

  7. Se o estágio de verificação de segurança for bem-sucedido, o estágio de compilação (integração contínua) será inicializado.

  8. No estágio CodeBuild Build, cria o artefato, empacota o artefato em uma imagem do Docker, escaneia a imagem em busca de vulnerabilidades de segurança usando o Aqua Security Trivy e armazena a imagem no Amazon ECR.

  9. As vulnerabilidades detectadas na etapa 8 são enviadas para o Security Hub para análise posterior por desenvolvedores ou engenheiros. O Security Hub fornece uma visão geral e recomendações para corrigir as vulnerabilidades.

  10. As notificações por e-mail de várias fases do CodePipeline pipeline são enviadas pelo Amazon SNS.

  11. Depois que as fases de integração contínua forem concluídas, CodePipeline entra no estágio de implantação (entrega contínua).

  12. A imagem do Docker é implantada no Amazon EKS como uma workload de contêiner (pod) usando charts do Helm.

  13. O pod do aplicativo é configurado com o Amazon CodeGuru Profiler Agent, que enviará os dados de perfil do aplicativo (CPU, uso da pilha e latência) para o Amazon CodeGuru Profiler, o que ajuda os desenvolvedores a entender o comportamento do aplicativo.

Ferramentas

Serviços da AWS

  • CloudFormationA AWS ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.

  • CodeBuildA AWS é um serviço de criação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes unitários e produzir artefatos prontos para implantação.

  • CodeCommitA AWS é um serviço de controle de versão que ajuda você a armazenar e gerenciar repositórios Git de forma privada, sem precisar gerenciar seu próprio sistema de controle de origem.

  • O Amazon CodeGuru Profiler coleta dados de desempenho de tempo de execução de seus aplicativos ativos e fornece recomendações que podem ajudá-lo a ajustar o desempenho do seu aplicativo.

  • O Amazon CodeGuru Reviewer usa análise de programas e aprendizado de máquina para detectar possíveis defeitos difíceis de serem encontrados pelos desenvolvedores e oferece sugestões para melhorar seu código Java e Python.

  • CodePipelineA AWS ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar alterações de software continuamente.

  • O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.

  • O Amazon Elastic Kubernetes Service (Amazon EKS) ajuda você a executar o Kubernetes na AWS sem precisar instalar e manter seus próprios nós ou ambiente de gerenciamento do Kubernetes.

  • EventBridgeA Amazon é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, funções do AWS Lambda, endpoints de invocação de HTTP usando destinos de API ou barramentos de eventos em outras contas da AWS.

  • O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.

  • O AWS Security Hub fornece uma visualização abrangente de seu estado de segurança na AWS. Ele também ajuda você a verificar seu ambiente AWS em relação aos padrões e práticas recomendadas do setor de segurança.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

Outros serviços

  • O Helm é um gerenciador de pacotes de código aberto para o Kubernetes.

  • O Apache Maven é uma ferramenta de gerenciamento e compreensão de projetos de software.

  • BridgeCrew O Checkov é uma ferramenta estática de análise de código para escanear a infraestrutura como arquivos de código (IaC) em busca de configurações incorretas que possam levar a problemas de segurança ou conformidade.

  • O Aqua Security Trivy é um scanner abrangente para vulnerabilidades em imagens de contêineres, sistemas de arquivos e repositórios Git, além de problemas de configuração.

Código

O código desse padrão está disponível no GitHub aws-codepipeline-devsecops-amazoneksrepositório.

Práticas recomendadas

  • O princípio do privilégio mínimo foi seguido para entidades do IAM em todas as fases dessa solução. Se você quiser estender a solução com serviços adicionais da AWS ou ferramentas de terceiros, recomendamos seguir o princípio do privilégio mínimo.

  • Se você tiver vários aplicativos Java, recomendamos criar pipelines de CI/CD separados para cada aplicativo.

  • Se você tiver um aplicativo monolítico, recomendamos dividir o aplicativo em microsserviços o máximo possível. Os microsserviços são mais flexíveis, facilitam a implantação de aplicativos como contêineres e fornecem melhor visibilidade da compilação e implantação gerais do aplicativo.

Épicos

TarefaDescriçãoHabilidades necessárias

Clone o GitHub repositório.

Para clonar o repositório, execute o comando a seguir.

git clone https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks
Desenvolvedor de aplicativos, DevOps engenheiro

Crie um bucket do S3 faça o upload do código.

  1. Faça login no Console de Gerenciamento da AWS, abra o console Amazon S3 e, em seguida, crie um bucket S3 na região da AWS onde você planeja implantar essa solução. Para obter mais informações, consulte Criar um bucket na documentação do Amazon S3

  2. No bucket do S3, crie uma pasta chamada code.

  3. Navegue até onde você clonou o repositório. Paracriar uma versão compactada do código inteiro com a extensão.zip (cicdstack.zip) e validar o arquivo.zip, execute os comandos a seguir na ordem.

    Observação: se o comando python falhar e indicar que o Python não foi encontrado, use python3 em vez disso.

    cd aws-codepipeline-devsecops-amazoneks python -m zipfile -c cicdstack.zip * python -m zipfile -t cicdstack.zip
  4. Faça upload do arquivo cicdstack.zip para a pasta de código que você criou anteriormente no bucket S3.

AWS DevOps, DevOps engenheiro, administrador de nuvem, DevOps

Crie uma CloudFormation pilha da AWS.

  1. Abra o CloudFormation console da AWS e escolha Create stack.

  2. Em Especificar modelo, escolha Fazer upload de um arquivo de modelo, faça o upload do arquivo cf_templates/codecommit_ecr.yaml e escolha Avançar.

  3. Em Especificar detalhes da pilha, insira o nome da pilha e, em seguida, forneça os seguintes valores de parâmetros de entrada:

    • CodeCommitRepositoryBranchName: O nome da filial em que seu código residirá (o padrão é principal)

    • CodeCommitRepositoryName: o nome do CodeCommit repositório a ser criado.

    • CodeCommitRepositoryS3Bucket: o nome do bucket do S3 em que você criou a pasta de código

    • CodeCommitRepositoryS3: BucketObjKey code/cicdstack.zip

    • ECR RepositoryName: O nome do repositório Amazon ECR a ser criado

  4. Escolha Próximo, use as configurações padrão para Configurar opções de pilha e, em seguida, escolha Próximo.

  5. Na seção Revisão, verifique os detalhes do modelo e da pilha e escolha Criar pilha. A pilha é então criada, incluindo os repositórios Amazon ECR CodeCommit e Amazon.

  6. Anote os nomes dos repositórios CodeCommit e do Amazon ECR, que serão necessários para a configuração do pipeline Java CI/CD.

AWS DevOps, DevOps

Valide a implantação da CloudFormation pilha.

  1. Em Pilhas no CloudFormation console, verifique o status da CloudFormation pilha que você implantou. O status da pilha deve ser CREATE COMPLETE.

  2. Além disso, no console, confirme se o Amazon ECR foi provisionado CodeCommit e está pronto.

DevOps engenheiro

Exclua o bucket do S3.

Esvazie e exclua o bucket do S3 criado anteriormente. Para obter mais informações, consulte Excluir um bucket na documentação do Amazon S3

AWS DevOps, DevOps
TarefaDescriçãoHabilidades necessárias

Configure os charts do Helm do seu aplicativo Java.

  1. No local em que você clonou o GitHub repositório, navegue até a pasta. helm_charts/aws-proserve-java-greeting Nessa pasta, o arquivo values.dev.yaml contém informações sobre a configuração dos recursos do Kubernetes que você pode modificar para suas implantações de contêineres no Amazon EKS. Atualize o parâmetro do repositório Docker fornecendo o ID da sua conta da AWS, a região da AWS e o nome do repositório Amazon ECR.

    image: repository: <account-id>.dkr.ecr.<region>.amazonaws.com/<app-ecr-repo-name>
  2. O tipo de serviço do pod Java está definido como LoadBalancer.

    service: type: LoadBalancer port: 80 targetPort: 8080 path: /hello initialDelaySeconds: 60 periodSeconds: 30

    Para usar um serviço diferente (por exemplo, NodePort), você pode alterar os parâmetros. Para obter mais informações, consulte a documentação do Kubernetes.

  3. Você pode ativar o Ajustador de escala automático do do pod horizontal do Kubernetes alterando o parâmetro autoscaling para enabled: true.

    autoscaling: enabled: true minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80

Você pode habilitar recursos diferentes para as cargas de trabalho do Kubernetes alterando os valores no values.<ENV>.yaml arquivo, onde <ENV> está seu ambiente de desenvolvimento, produção, UAT ou QA.

DevOps

Valide os charts do Helm em busca de erros de sintaxe.

  1. No terminal, verifique se o Helm v3 está instalado em sua estação de trabalho local executando o seguinte comando.

    helm --version

    Se o Helm v3 não estiver instalado, instale-o.

  2. No terminal, navegue até o diretório de charts do Helm (helm_charts/aws-proserve-java-greeting) e execute o comando a seguir.

    helm lint . -f values.dev.yaml

    Ele verificará se há erros de sintaxe nos charts do Helm.

DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Crie o pipeline de CI/CD.

  1. Abra o CloudFormation console da AWS e escolha Create stack.

  2. Em Especificar modelo, escolha Carregar um arquivo de modelo, carregue o modelo cf_templates/build_deployment.yaml e escolha Próximo.

  3. Em Especificar detalhes da pilha, especifique o Nome da pilha e, em seguida, forneça os seguintes valores de parâmetros de entrada:

    • CodeBranchName: nome da filial do CodeCommit repositório, onde seu código reside

    • EKSClusterName: Nome do seu cluster EKS (não o EKSCluster ID)

    • EKS CodeBuildAppName: Nome do aplicativo Helm chart () aws-proserve-java-greeting

    • EKS WorkerNodeRole ARN: ARN da função IAM dos nós de trabalho do Amazon EKS

    • EKS WorkerNodeRoleName: nome da função do IAM atribuída aos nós de trabalho do Amazon EKS

    • EcrDockerRepository: Nome do repositório Amazon ECR onde as imagens Docker do seu código serão armazenadas

    • EmailRecipient: endereço de e-mail para o qual as notificações de criação precisam ser enviadas

    • EnvType: Ambiente (por exemplo, desenvolvimento, teste ou produção)

    • SourceRepoName: Nome do CodeCommit repositório, onde seu código reside

  4. Escolha Próximo. use as configurações padrão em Configurar opções de pilha e, em seguida, escolha Avançar.

  5. Na seção Revisão, verifique o CloudFormation modelo da AWS e os detalhes da pilha e, em seguida, escolha Avançar.

  6. Selecione Criar pilha

  7. Durante a implantação da CloudFormation pilha, o proprietário do endereço de e-mail que você forneceu nos parâmetros receberá uma mensagem para se inscrever em um tópico do SNS. Para assinar o Amazon SNS, o proprietário deve escolher o link na mensagem.

  8. Depois que a pilha for criada, abra a guia Saídas da pilha e registre o valor do ARN para a chave de saída EksCodeBuildkubeRoleARN. Esse valor de ARN do IAM será necessário posteriormente para fornecer à função do CodeBuild IAM permissões para implantar cargas de trabalho no cluster Amazon EKS.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Ative a integração com o Aqua Security.

Essa etapa é necessária para fazer o upload das descobertas da vulnerabilidade de imagem do Docker relatadas pela Trivy para o Security Hub. Como a AWS CloudFormation não oferece suporte às integrações do Security Hub, esse processo deve ser feito manualmente.

  1. Abra o console do AWS Security Hub e navegue até Integrações.

  2. Procure por Aqua Security e selecione Aqua Security: Aqua Security.

  3. Escolha Aceitar descobertas.

Administrador e DevOps engenheiro da AWS
TarefaDescriçãoHabilidades necessárias

Permita CodeBuild a execução de comandos Helm ou kubectl no cluster Amazon EKS.

CodeBuild Para ser autenticado para usar o Helm ou kubectl comandos com o cluster EKS, você deve adicionar as funções do IAM ao. aws-auth ConfigMapNesse caso, adicione o ARN da função IAMEksCodeBuildkubeRoleARN, que é a função IAM criada para que o CodeBuild serviço acesse o cluster EKS e implante cargas de trabalho nele. Essa é uma atividade feita uma única vez.

Importante: O procedimento a seguir deve ser concluído antes do estágio de aprovação da implantação CodePipeline.

  1. Abra o script de shell cf_templates/kube_aws_auth_configmap_patch.sh em seu ambiente Amazon Linux ou macOS.

  2. Autentique-se no cluster do Amazon EKS executando o comando a seguir.

    aws eks --region <aws-region> update-kubeconfig --name <eks-cluster-name>
  3. Execute o script de shell usando o comando a seguir, substituindo <rolearn-eks-codebuild-kubectl> pelo valor ARN de EksCodeBuildkubeRoleARN que você registrou anteriormente.

    bash cf_templates/kube_aws_auth_configmap_patch.sh <rolearn-eks-codebuild-kubectl> 

O aws_authConfigMap está configurado e o acesso é concedido.

DevOps
TarefaDescriçãoHabilidades necessárias

Verifique se o pipeline de CI/CD é inicializado automaticamente.

  1. O estágio de CodeSecurity verificação no pipeline geralmente falhará se o Checkov detectar vulnerabilidades nos gráficos do Dockerfile ou do Helm. No entanto, o objetivo deste exemplo é estabelecer um processo de identificação de possíveis vulnerabilidades de segurança em vez de corrigi-las por meio do pipeline de CI/CD, normalmente um processo. DevSecOps No arquivo buildspec/buildspec_secscan.yaml, o comando checkov usa o sinalizador --soft-fail para evitar falhas no pipeline.

    - echo -e "\n Running Dockerfile Scan" - checkov -f code/app/Dockerfile --framework dockerfile --soft-fail --summary-position bottom - echo -e "\n Running Scan of Helm Chart files" - cp -pv helm_charts/$EKS_CODEBUILD_APP_NAME/values.dev.yaml helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml - checkov -d helm_charts/$EKS_CODEBUILD_APP_NAME --framework helm --soft-fail --summary-position bottom - rm -rfv helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml

    Para que o pipeline falhe quando vulnerabilidades forem relatadas no Dockerfile e nos charts do Helm, a opção --soft-fail deve ser removida do comando checkov. Os desenvolvedores ou engenheiros podem então corrigir as vulnerabilidades e confirmar as alterações no repositório do CodeCommit código-fonte.

  2. Semelhante ao CodeSecurity Scan, o estágio Build usa o Aqua Security Trivy para identificar vulnerabilidades de imagem altas e críticas do Docker antes de enviar o aplicativo para o Amazon ECR. Neste exemplo, não estamos fazendo com que o pipeline falhe para vulnerabilidades de imagem do Docker. No arquivo buildspec/buildspec.yml, o comando trivy inclui o sinalizador --exit-code com um valor 0, que é o motivo de o pipeline não falhar quando as vulnerabilidades ALTAS e CRÍTICAS da imagem do Docker são relatadas.

    - AWS_REGION=$AWS_DEFAULT_REGION AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID trivy -d image --no-progress --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL --format template --template "@securityhub/asff.tpl" -o securityhub/report.asff $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_RESOLVED_SOURCE_VERSION

    Para que o pipeline falhe quando as vulnerabilidades HIGH, CRTICAL forem relatadas, altere o valor de --exit-code para 1.

    Os desenvolvedores ou engenheiros podem então corrigir as vulnerabilidades e confirmar as alterações no repositório do CodeCommit código-fonte.

  3. As vulnerabilidades de imagem do Docker relatadas pelo Aqua Security Trivy são enviadas para o Security Hub. No console do AWS Security Hub, navegue até Descobertas. Filtre as descobertas com Record State = Active e Product = Aqua Security. Isso listará as vulnerabilidades da imagem do Docker no Security Hub. Pode levar de 15 minutos a 1 hora para que as vulnerabilidades apareçam no Security Hub.

Para obter mais informações sobre como iniciar o pipeline usando CodePipeline, consulte Iniciar um pipeline em CodePipeline, Iniciar um pipeline manualmente e Iniciar um pipeline de acordo com um cronograma na CodePipeline documentação da AWS.

DevOps

Aprove a implantação.

  1. Depois que a fase de compilação estiver concluída, haverá um portão de aprovação de implantação. O revisor ou um gerente de lançamento deve inspecionar a compilação e, se todos os requisitos forem atendidos, aprová-la. Essa é a abordagem recomendada para equipes que usam entrega contínua para implantação de aplicativos.

  2. Após a aprovação, o pipeline inicia o estágio de implantação.

  3. Depois que o estágio de implantação for bem-sucedido, o CodeBuild log desse estágio fornecerá a URL do aplicativo. Use o URL para validar a disponibilidade do aplicativo.

DevOps

Valide o perfil do aplicativo.

Depois que a implantação for concluída e o pod do aplicativo for implantado no Amazon EKS, o agente Amazon CodeGuru Profiler configurado no aplicativo tentará enviar dados de perfil do aplicativo (CPU, resumo da pilha, latência e gargalos) para o Amazon Profiler. CodeGuru

Para a implantação inicial de um aplicativo, o Amazon CodeGuru Profiler leva cerca de 15 minutos para visualizar os dados de criação de perfil.

AWS DevOps

Recursos relacionados

Mais informações

CodeGuru O Profiler não deve ser confundido com o serviço AWS X-Ray em termos de funcionalidade. CodeGuru O Profiler é o preferido para identificar as linhas de código mais caras, que podem causar gargalos ou problemas de segurança, e corrigi-las antes que se tornem um risco potencial. O AWS X-Ray Service é para monitoramento de desempenho de aplicações.

Neste padrão, as regras de eventos são associadas ao barramento de eventos padrão. Se necessário, você pode estender o padrão para usar um barramento de eventos personalizado.

Esse padrão usa o CodeGuru Reviewer como uma ferramenta estática de teste de segurança de aplicativos (SAST) para o código do aplicativo. Você também pode usar esse pipeline para outras ferramentas, como SonarQube o Checkmarx. As instruções de configuração de escaneamento correspondentes de qualquer uma dessas ferramentas podem ser adicionadasbuildspec/buildspec_secscan.yaml, substituindo as instruções de escaneamento do CodeGuru.