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á.
Implemente o Account Factory for Terraform (AFT) usando um pipeline de bootstrap
Criado por Vinicius Elias (AWS) e Edgar Costa Filho () AWS
Repositório de códigos: aft-bootstrap-pipeline | Ambiente: produção | Tecnologias: Gestão e governança; Infraestrutura |
Workload: código aberto | AWSserviços: AWS CodeBuild; AWS CodeCommit; AWS CodePipeline AWS Control Tower; AWS Organizations |
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 fornece um método simples e seguro para implantar o AWS Control Tower Account Factory for Terraform (AFT) a partir da conta de gerenciamento do. AWS Organizations O núcleo da solução é um AWS CloudFormation modelo que automatiza a AFT configuração criando um pipeline do Terraform, que é estruturado para ser facilmente adaptável à implantação inicial ou às atualizações subsequentes.
A segurança e a integridade dos dados são as principais prioridades AWS, portanto, o arquivo de estado do Terraform, que é um componente essencial que rastreia o estado da infraestrutura e das configurações gerenciadas, é armazenado com segurança em um bucket do Amazon Simple Storage Service (Amazon S3). Esse bucket é configurado com várias medidas de segurança, incluindo criptografia do lado do servidor e políticas para bloquear o acesso público, para ajudar a garantir que seu estado do Terraform seja protegido contra acesso não autorizado e violações de dados.
A conta de gerenciamento organiza e supervisiona todo o ambiente, portanto, é um recurso essencial em. AWS Control Tower Esse padrão segue as AWS melhores práticas e garante que o processo de implantação não seja apenas eficiente, mas também esteja alinhado aos padrões de segurança e governança, para oferecer uma maneira abrangente, segura e eficiente de implantar AFT em seu AWS ambiente.
Para obter mais informações sobreAFT, consulte a AWS Control Tower documentação.
Pré-requisitos e limitações
Pré-requisitos
Um ambiente básico de AWS várias contas com, no mínimo, as seguintes contas: conta de gerenciamento, conta de arquivamento de registros, conta de auditoria e uma conta adicional para AFT gerenciamento.
Um AWS Control Tower ambiente estabelecido. A conta de gerenciamento deve ser configurada adequadamente, pois o CloudFormation modelo será implantado nela.
As permissões necessárias na conta AWS de gerenciamento. Você precisará de permissões suficientes para criar e gerenciar recursos, como buckets, AWS Lambda funções, AWS Identity and Access Management (IAM) funções e AWS CodePipeline projetos do S3.
Familiaridade com o Terraform. Compreender os principais conceitos e o fluxo de trabalho do Terraform é importante porque a implantação envolve a geração e o gerenciamento das configurações do Terraform.
Limitações
Esteja ciente das cotas AWS de recursos em sua conta. A implantação pode criar vários recursos e encontrar cotas de serviço pode impedir o processo de implantação.
O modelo foi desenvolvido para versões específicas do Terraform e. Serviços da AWS A atualização ou alteração de versões pode exigir modificações no modelo.
Versões do produto
Terraform versão 1.5.7 ou posterior
AFTversão 1.11.1 ou posterior
Arquitetura
Pilha de tecnologias de destino
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon EventBridge
IAM
AWS Lambda
Amazon S3
Arquitetura de destino
O diagrama a seguir ilustra a implementação discutida nesse padrão.
O fluxo de trabalho consiste em três tarefas principais: criar os recursos, gerar o conteúdo e executar o pipeline.
Criando os recursos
O CloudFormation modelo fornecido com esse padrão
Um CodeCommit repositório para armazenar o código bootstrap do AFT Terraform
Um bucket S3 para armazenar o arquivo de estado do Terraform associado à implementação AFT
Um CodePipeline gasoduto
Dois CodeBuild projetos para implementar o plano Terraform e aplicar comandos em diferentes estágios do pipeline
IAMfunções CodeBuild e CodePipeline serviços
Um segundo bucket S3 para armazenar artefatos de tempo de execução do pipeline
Uma EventBridge regra para capturar alterações no CodeCommit repositório na ramificação
main
Outro IAM papel para a EventBridge regra
Além disso, se você definir o Generate AFT Files
parâmetro no CloudFormation modelo comotrue
, o modelo criará esses recursos adicionais para gerar o conteúdo:
Um bucket S3 para armazenar o conteúdo gerado e ser usado como fonte do CodeCommit repositório
Uma função Lambda para processar os parâmetros fornecidos e gerar o conteúdo apropriado
Uma IAM função para executar a função Lambda
Um recurso CloudFormation personalizado que executa a função Lambda quando o modelo é implantado
Gerando o conteúdo
Para gerar os arquivos AFT bootstrap e seu conteúdo, a solução usa uma função Lambda e um bucket S3. A função cria uma pasta no bucket e, em seguida, cria dois arquivos dentro da pasta: main.tf
backend.tf
e. A função também processa os CloudFormation parâmetros fornecidos e preenche esses arquivos com código predefinido, substituindo os respectivos valores dos parâmetros.
Para visualizar o código usado como modelo para gerar os arquivos, consulte o GitHub repositório
main.tf
module "aft" { source = "github.com/aws-ia/terraform-aws-control_tower_account_factory?ref=<aft_version>" # Required variables ct_management_account_id = "<ct_management_account_id>" log_archive_account_id = "<log_archive_account_id>" audit_account_id = "<audit_account_id>" aft_management_account_id = "<aft_management_account_id>" ct_home_region = "<ct_home_region>" # Optional variables tf_backend_secondary_region = "<tf_backend_secondary_region>" aft_metrics_reporting = "<false|true>" # AFT Feature flags aft_feature_cloudtrail_data_events = "<false|true>" aft_feature_enterprise_support = "<false|true>" aft_feature_delete_default_vpcs_enabled = "<false|true>" # Terraform variables terraform_version = "<terraform_version>" terraform_distribution = "<terraform_distribution>" }
backend.tf
terraform { backend "s3" { region = "<aft-main-region>" bucket = "<s3-bucket-name>" key = "aft-setup.tfstate" } }
Durante a criação do CodeCommit repositório, se você definir o Generate AFT Files
parâmetro comotrue
, o modelo usará o bucket do S3 com o conteúdo gerado como a origem da main
ramificação para preencher automaticamente o repositório.
Executando o pipeline
Depois que os recursos foram criados e os arquivos de bootstrap foram configurados, o pipeline é executado. O primeiro estágio (Fonte) busca o código-fonte da ramificação principal do repositório e o segundo estágio (Construção) executa o comando de plano do Terraform e gera os resultados a serem revisados. No terceiro estágio (Aprovação), o pipeline aguarda uma ação manual para aprovar ou rejeitar o último estágio (Implantação). No último estágio, o pipeline executa o apply
comando do Terraform usando o resultado do comando anterior do Terraform como plan
entrada. Finalmente, uma função entre contas e as permissões na conta de gerenciamento são usadas para criar os AFT recursos na conta AFT de gerenciamento.
Ferramentas
AWSserviços
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.
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 código-fonte.
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 alterações de software continuamente.
AWS Lambdaé um serviço de computação que executa seu código em resposta a eventos e gerencia automaticamente os recursos de computação, fornecendo uma maneira rápida de criar um aplicativo moderno e sem servidor para produção.
AWS SDK for Python (Boto3)
é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python aos AWS serviços.
Outras ferramentas
O Terraform
é uma ferramenta de infraestrutura como código (IaC) que permite criar, alterar e criar versões da infraestrutura com segurança e eficiência. Isso inclui componentes de baixo nível, como instâncias de computação, armazenamento e rede; e componentes de alto nível, como entradas DNS e recursos SaaS. Python
é uma linguagem de programação poderosa e fácil de aprender. Ele tem estruturas de dados eficientes de alto nível e fornece uma abordagem simples, mas eficaz, para a programação orientada a objetos.
Repositório de código
O código desse padrão está disponível no repositório do pipeline GitHub AFT bootstrap
Para o AFT repositório oficial, consulte AWSControl Tower Account Factory for Terraform
Práticas recomendadas
AFTAo implantar usando o CloudFormation modelo fornecido, recomendamos que você siga as melhores práticas para ajudar a garantir uma implementação segura, eficiente e bem-sucedida. As principais diretrizes e recomendações para implementar e operar o AFT incluem o seguinte.
Revisão completa dos parâmetros: analise e compreenda cuidadosamente cada parâmetro no CloudFormation modelo. A configuração precisa dos parâmetros é crucial para a configuração e o funcionamento corretos doAFT.
Atualizações regulares do modelo: mantenha o modelo atualizado com os AWS recursos mais recentes e as versões do Terraform. As atualizações regulares ajudam você a aproveitar as novas funcionalidades e manter a segurança.
Controle de versão: fixe a versão do seu AFT módulo e use uma AFT implantação separada para testar, se possível.
Escopo: use AFT somente para implantar proteções e personalizações de infraestrutura. Não o use para implantar seu aplicativo.
Linting e validação: o AFT pipeline requer uma configuração do Terraform vinculada e validada. Execute o lint, valide e teste antes de enviar a configuração para os repositórios. AFT
Módulos do Terraform: crie código reutilizável do Terraform como módulos e sempre especifique as versões do Terraform e do AWS provedor de acordo com os requisitos da sua organização.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Prepare o AWS Control Tower ambiente. | Instale e configure AWS Control Tower em seu AWS ambiente para garantir gerenciamento e governança centralizados para seu Contas da AWS. Para obter mais informações, consulte Introdução AWS Control Tower na AWS Control Tower documentação. | Administrador de nuvem |
Inicie a conta AFT de gerenciamento. | Use o AWS Control Tower Account Factory para lançar uma nova Conta da AWS para servir como sua conta AFT de gerenciamento. Para obter mais informações, consulte Provisionar contas com AWS Service Catalog Account Factory na AWS Control Tower documentação. | Administrador de nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Inicie o CloudFormation modelo. | Neste épico, você implanta o CloudFormation modelo fornecido com essa solução para configurar o pipeline de AFT bootstrap em sua conta AWS de gerenciamento. O pipeline implanta a AFT solução na conta AFT de gerenciamento que você configurou no épico anterior. Etapa 1: abrir o AWS CloudFormation console
Etapa 2: criar uma nova pilha
Etapa 3: configurar os parâmetros da pilha
Etapa 4: decidir sobre a geração de arquivos
Etapa 5: preencha os AWS Control Tower detalhes AFT da conta
Etapa 6: configurar AFT as opções
Etapa 7: especificar versões
Etapa 8: revisar e criar a pilha
Etapa 9: Monitorar a criação da pilha
Etapa 10: Verificar a implantação
| Administrador de nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Preencha o repositório AFT bootstrap. | (Opcional) Depois de implantar o CloudFormation modelo, você pode preencher ou validar o conteúdo no repositório AFT bootstrap recém-criado e testar se o pipeline foi executado com êxito. Se você definir o Etapa 1: preencher o repositório
Etapa 2: confirme e promova suas alterações
| Administrador de nuvem |
Valide o pipeline de AFT bootstrap. | Etapa 1: Visualizar o pipeline
Etapa 2: Aprovar os resultados do plano Terraform
Etapa 3: Aguarde a implantação
Etapa 4: verificar os recursos criados
| Administrador de nuvem |
Solução de problemas
Problema | Solução |
---|---|
A função Lambda personalizada incluída no CloudFormation modelo falha durante a implantação. | Verifique os CloudWatch registros da Amazon para a função Lambda para identificar o erro. Os registros fornecem informações detalhadas e podem ajudar a identificar o problema específico. Confirme se a função Lambda tem as permissões necessárias e se as variáveis de ambiente foram definidas corretamente. |
Você encontra falhas na criação ou no gerenciamento de recursos causadas por permissões inadequadas. | Analise as IAM funções e políticas associadas à função Lambda e outros serviços envolvidos na implantação. CodeBuild Confirme se eles têm as permissões necessárias. Se houver problemas de permissão, ajuste as IAM políticas para conceder o acesso necessário. |
Você está usando uma versão desatualizada do CloudFormation modelo com versões mais recentes Serviços da AWS ou do Terraform. | Atualize regularmente o CloudFormation modelo para ser compatível com as versões mais recentes AWS e do Terraform. Verifique as notas de lançamento ou a documentação para ver se há alterações ou requisitos específicos da versão. |
Você atinge as AWS service (Serviço da AWS) cotas durante a implantação. | Antes de implantar o pipeline, verifique as AWS service (Serviço da AWS) cotas de recursos como buckets do S3, IAM funções e funções Lambda. A solicitação aumenta, se necessário. Para obter mais informações, consulte AWS service (Serviço da AWS) as cotas no AWS site. |
Você encontra erros devido a parâmetros de entrada incorretos no CloudFormation modelo. | Verifique novamente todos os parâmetros de entrada em busca de erros de digitação ou valores incorretos. Confirme se os identificadores de recursos, como nomes de conta IDs e região, estão corretos. |
Recursos relacionados
Para implementar esse padrão com sucesso, revise os recursos a seguir. Esses recursos fornecem informações e orientações adicionais que podem ser inestimáveis para configurar e gerenciar AFT usando AWS CloudFormation.
AWSdocumentação:
AWS Control Tower O Guia do usuário oferece informações detalhadas sobre configuração e gerenciamento AWS Control Tower.
AWS CloudFormation a documentação fornece informações sobre CloudFormation modelos, pilhas e gerenciamento de recursos.
IAMpolíticas e melhores práticas:
As melhores práticas de segurança IAM explicam como ajudar a proteger AWS recursos usando IAM funções e políticas.
Terraform em AWS:
A documentação do Terraform AWS Provider
fornece informações abrangentes sobre como usar o Terraform com. AWS
AWS service (Serviço da AWS) cotas:
AWS service (Serviço da AWS) as cotas fornecem informações sobre como visualizar as AWS service (Serviço da AWS) cotas e como solicitar aumentos.