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á.
Criar pipelines dinâmicos de CI para projetos Java e Python automaticamente
Criado por Aromal Raj Jayarajan (AWS), Amarnath Reddy (), () e Vijesh Vijayakumaran AWS Nair () MAHESH RAGHUNANDANAN AWS AWS
Repositório de códigos: automated-ci-pipeline-creation | Ambiente: PoC ou piloto | Tecnologias: DevOps; Infraestrutura; Sem servidor |
Workload: todas as outras workloads | AWSserviços: AWS CodeBuild; AWS CodePipeline; AWS Lambda; AWS Step Functions; AWS CodeCommit |
Resumo
Aviso: não AWS CodeCommit está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais
Esse padrão mostra como criar pipelines dinâmicos de integração contínua (CI) para projetos Java e Python automaticamente AWS usando ferramentas de desenvolvedor.
À medida que as pilhas de tecnologia se diversificam e as atividades de desenvolvimento aumentam, pode se tornar difícil criar e manter pipelines de CI consistentes em toda a organização. Ao automatizar o processo em AWS Step Functions, você pode garantir que seus pipelines de CI sejam consistentes em seu uso e abordagem.
Para automatizar a criação de pipelines dinâmicos de CI, esse padrão usa as seguintes entradas variáveis:
Linguagem de programação (somente Java ou Python)
Nome do pipeline
Etapas necessárias do pipeline
Observação: o Step Functions orquestra a criação do pipeline usando vários AWS serviços. Para obter mais informações sobre os AWS serviços usados nessa solução, consulte a seção Ferramentas desse padrão.
Pré-requisitos e limitações
Pré-requisitos
Uma AWS conta ativa
Um bucket do Amazon S3 na mesma AWS região em que esta solução está sendo implantada
Um diretor do AWS Identity and Access Management (IAM) que tem as AWS CloudFormation permissões necessárias para criar os recursos necessários para essa solução
Limitações
Este padrão é compatível somente com projetos Java e Python.
As IAM funções provisionadas nesse padrão seguem o princípio do menor privilégio. As permissões IAM das funções devem ser atualizadas com base nos recursos específicos que seu pipeline de CI precisa criar.
Arquitetura
Pilha de tecnologias de destino
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
IAM
Amazon Simple Storage Service (Amazon S3)
AWS Systems Manager
AWS Step Functions
AWSLambda
Amazon DynamoDB
Arquitetura de destino
O diagrama a seguir mostra um exemplo de fluxo de trabalho para criar pipelines dinâmicos de CI para projetos Java e Python automaticamente AWS usando ferramentas de desenvolvedor.
O diagrama mostra o seguinte fluxo de trabalho:
Um AWS usuário fornece os parâmetros de entrada para a criação do pipeline de CI em JSON formato. Essa entrada inicia um fluxo de trabalho do Step Functions (máquina de estado) que cria um pipeline de CI usando ferramentas de AWS desenvolvedor.
Uma função do Lambda lê uma pasta chamada input-reference, que é armazenada em um bucket do Amazon S3 e, em seguida, gera um arquivo buildspec.yml. Esse arquivo gerado define os estágios do pipeline de CI e é armazenado novamente no mesmo bucket do Amazon S3 que armazena as referências de parâmetros.
O Step Functions verifica se há alterações nas dependências do fluxo de trabalho de criação do pipeline de CI e atualiza a pilha de dependências conforme necessário.
O Step Functions cria os recursos do pipeline de CI em uma CloudFormation pilha, incluindo um CodeCommit repositório, um CodeBuild projeto e um CodePipeline pipeline.
A CloudFormation pilha copia o código-fonte de amostra para a pilha de tecnologia selecionada (Java ou Python) e o arquivo buildspec.yml para o repositório. CodeCommit
Os detalhes do runtime do pipeline de CI são armazenados em uma tabela do DynamoDB.
Automação e escala
Este padrão deve ser usado somente em um único ambiente de desenvolvimento. As alterações de configuração são necessárias para uso em vários ambientes de desenvolvimento.
Para adicionar suporte para mais de uma CloudFormation pilha, você pode criar CloudFormation modelos adicionais. Para obter mais informações, consulte Introdução AWS CloudFormation na CloudFormation documentação.
Ferramentas
Ferramentas
AWSO Step Functions é um serviço de orquestração sem servidor que ajuda você a combinar funções AWS Lambda e outros AWS serviços para criar aplicativos essenciais para os negócios.
AWSO Lambda é um serviço de computação que ajuda você a executar código sem precisar provisionar ou gerenciar servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
AWS CodeBuildé um serviço de compilação totalmente gerenciado que ajuda você a compilar o código-fonte, executar testes de unidade e produzir artefatos prontos para implantação.
AWS CodeCommité 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.
AWS CodePipelineajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software e automatizar as etapas necessárias para liberar as alterações de software continuamente.
AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
AWSO Key Management Service (AWSKMS) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
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.
AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas AWS as contas e regiões.
O Amazon DynamoDB é um serviço SQL sem banco de dados totalmente gerenciado que fornece desempenho rápido, previsível e escalável.
AWSO Systems Manager Parameter Store fornece armazenamento seguro e hierárquico para gerenciamento de dados de configuração e gerenciamento de segredos.
Código
O código desse padrão está disponível no GitHub automated-ci-pipeline-creation
Práticas recomendadas
Não insira credenciais (segredos), como tokens ou senhas, diretamente nos CloudFormation modelos ou nas configurações de ação do Step Functions. Se você fizer isso, as informações serão exibidas nos logs do DynamoDB. Em vez disso, use o AWS Secrets Manager para configurar e armazenar segredos. Em seguida, faça referência aos segredos armazenados no Secrets Manager nos CloudFormation modelos e nas configurações de ação do Step Functions, conforme necessário. Para obter mais informações, consulte O que é o AWS Secrets Manager na documentação do Secrets Manager.
Configure a criptografia do lado do servidor para CodePipeline artefatos armazenados no Amazon S3. Para obter mais informações, consulte Configurar a criptografia do lado do servidor para artefatos armazenados no Amazon S3 na documentação. CodePipeline CodePipeline
Aplique permissões de privilégio mínimo ao configurar funções. IAM Para obter mais informações, consulte Aplicar permissões de privilégios mínimos na documentação. IAM
Certifique-se de que seu bucket do Amazon S3 não esteja acessível publicamente. Para obter mais informações, consulte Configuração da definição de bloqueio de acesso público para seus buckets do S3 na documentação do Amazon S3.
Certifique-se de ativar o versionamento do seu bucket do Amazon S3. Para obter mais informações, consulte Usar o versionamento em buckets do S3 na documentação do Amazon S3.
Use o IAM Access Analyzer ao configurar políticas. IAM A ferramenta fornece recomendações práticas para ajudá-lo a criar IAM políticas seguras e funcionais. Para obter mais informações, consulte Usando o AWS Identity and Access Management Access Analyzer na IAM documentação.
Quando possível, defina condições de acesso específicas ao configurar IAM políticas.
Ative o CloudWatch registro na Amazon para fins de monitoramento e auditoria. Para obter mais informações, consulte O que é o Amazon CloudWatch Logs? na CloudWatch documentação.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie um bucket do Amazon S3. | Crie um bucket do Amazon S3 (ou use um bucket existente) para armazenar os CloudFormation modelos, o código-fonte e os arquivos de entrada necessários para a solução. Para obter mais informações, consulte Etapa 1: Criar o seu primeiro bucket do S3 na documentação do Amazon S3. Observação: o bucket do Amazon S3 deve estar na mesma AWS região em que você está implantando a solução. | AWS DevOps |
Clone o GitHub repositório. | Clone o GitHub automated-ci-pipeline-creation
Para obter mais informações, consulte Clonar um repositório | AWS DevOps |
Faça o upload da pasta Solution Templates do GitHub repositório clonado para seu bucket do Amazon S3. | Copie o conteúdo da pasta Solution-Templates clonada e faça o upload no bucket do Amazon S3 que você criou. Para obter mais informações, consulte Fazendo upload de objetos na documentação do Amazon S3. Observação: certifique-se de fazer o upload somente o conteúdo da pasta Solution-Templates. Você pode fazer upload dos arquivos somente no nível raiz do bucket do Amazon S3. | AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie uma CloudFormation pilha para implantar a solução usando o arquivo template.yml no repositório clonado. GitHub |
Observação: enquanto sua pilha está sendo criada, ela é listada na página Pilhas com o status _IN_. CREATE PROGRESS Certifique-se de esperar que o status da pilha mude para CREATE_ COMPLETE antes de concluir as etapas restantes desse padrão. | AWSadministrador, AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Selecione a função que você criou. |
JSONformatação
Exemplo JSON de entrada Java
Exemplo de entrada em Python JSON
| AWSadministrador, AWS DevOps |
Confirme se o CodeCommit repositório do pipeline de CI foi criado. |
| AWS DevOps |
Verifique os recursos CodeBuild do projeto. |
| AWS DevOps |
Valide os CodePipeline estágios. |
| AWS DevOps |
Confirme se o pipeline de CI foi executado com êxito. |
| AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Exclua a pilha de recursos. CloudFormation | Exclua a pilha de recursos do pipeline de CI. CloudFormation Para obter mais informações, consulte Excluindo uma pilha no AWS CloudFormation console na CloudFormation documentação. Observação: certifique-se de excluir a pilha chamada <project_name>-stack. | AWS DevOps |
Exclua as dependências do pipeline de CI no Amazon S3 e. CloudFormation |
Nota: Certifique-se de excluir a pilha chamada pipeline-creation-dependencies-stack. | AWS DevOps |
Consulte Excluir o bucket do modelo do Amazon S3. | Exclua o bucket do Amazon S3 que você criou na seção Configurar os pré-requisitos deste padrão, que armazena os modelos para esta solução. Para obter mais informações, consulte Excluir o bucket na documentação do Amazon S3. | AWS DevOps |
Recursos relacionados
Criação de uma máquina de estado do Step Functions que usa Lambda (documentação do AWS Step Functions)
AWSStep Functions WorkFlow Studio (documentação do AWS Step Functions)
Como AWS CloudFormation funciona? (AWS CloudFormation documentação)
CI/CD completo com AWS CodeCommit,, AWS CodeBuild AWS CodeDeploy, e AWS CodePipeline
(AWSpostagem do blog) IAMe AWS STS cotas, requisitos de nome e limites de caracteres (IAMdocumentação)