

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

# Ferramentas de desenvolvedor
<a name="developer-tools-pattern-list"></a>

**Topics**
+ [DevOps](devops-pattern-list.md)
+ [Infraestrutura](infrastructure-pattern-list.md)
+ [Aplicações para web ou dispositivos móveis](websitesandwebapps-pattern-list.md)

# DevOps
<a name="devops-pattern-list"></a>

**Topics**
+ [Acelere MLOps com os modelos de Backstage e de autoatendimento da Amazon AI SageMaker](accelerate-mlops-with-backstage-and-sagemaker-templates.md)
+ [Automatize as operações de AWS infraestrutura usando o Amazon Bedrock](automate-aws-infrastructure-operations-by-using-amazon-bedrock.md)
+ [Automatize CloudFront as atualizações quando os endpoints do balanceador de carga mudarem usando o Terraform](automate-cloudfront-updates-when-load-balancer-endpoints-change.md)
+ [Automatize as CodeGuru avaliações da Amazon para aplicativos AWS CDK Python usando o Actions GitHub](automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.md)
+ [Automatize a implantação de Cadeia de Suprimentos AWS data lakes em uma configuração de vários repositórios usando GitHub Actions, Artifactory e Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatize a avaliação de recursos da AWS](automate-aws-resource-assessment.md)
+ [Instale sistemas SAP automaticamente usando ferramentas de código aberto](install-sap-systems-automatically-by-using-open-source-tools.md)
+ [Automatize o portfólio e a implantação de produtos do AWS Service Catalog usando o AWS CDK](automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.md)
+ [Automatize o gerenciamento dinâmico de pipelines para implantar soluções de hotfix em ambientes Gitflow usando e AWS Service Catalog AWS CodePipeline](automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.md)
+ [Automatize a exclusão de AWS CloudFormation pilhas e recursos associados](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatização da ingestão e da visualização de métricas personalizadas do Amazon MWAA no Amazon Managed Grafana usando o Terraform](automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.md)
+ [Automatize a implantação de conjuntos de pilhas usando a AWS e a AWS CodePipeline CodeBuild](automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.md)
+ [Anexe automaticamente uma política gerenciada da AWS para Systems Manager aos perfis de EC2 instância usando o Cloud Custodian e o AWS CDK](automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.md)
+ [Crie CI/CD pipelines e clusters do Amazon ECS automaticamente para microsserviços usando o AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Crie e envie imagens do Docker para o Amazon ECR usando GitHub Actions e Terraform](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Crie e teste aplicativos iOS com AWS CodeCommit CodePipeline, AWS e AWS Device Farm](build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm.md)
+ [Configurar a autenticação de TLS mútuo para aplicativos em execução no Amazon EKS](configure-mutual-tls-authentication-for-applications-running-on-amazon-eks.md)
+ [Automatize a criação de recursos da Amazon WorkSpaces Applications usando AWS CloudFormation](automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.md)
+ [Crie um analisador de log personalizado para o Amazon ECS usando um roteador de log Firelens](create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.md)
+ [Crie uma estrutura de orquestração de recursos baseada em API usando Actions e Terragrunt GitHub](create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.md)
+ [Crie pull requests automatizados para a AWS infraestrutura gerenciada pelo Terraform usando Actions GitHub](create-automated-pull-requests-for-terraform-managed-aws-infrastructure.md)
+ [Criar pipelines dinâmicos de CI para projetos Java e Python automaticamente](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Implante canários CloudWatch Synthetics usando o Terraform](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Implemente uma ChatOps solução para gerenciar os resultados do escaneamento SAST usando o Amazon Q Developer em aplicativos de bate-papo, ações personalizadas e CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Implantação de sistemas agênticos no Amazon Bedrock com a estrutura do CrewAI usando o Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Implante um trabalho do AWS Glue com um pipeline de CodePipeline CI/CD da AWS](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Implemente código em várias regiões da AWS usando AWS CodePipeline CodeCommit, AWS e AWS CodeBuild](deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild.md)
+ [Implante cargas de trabalho dos DevOps pipelines do Azure em clusters privados do Amazon EKS](deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.md)
+ [Execução de consultas SQL no Amazon Redshift usando o Terraform](execute-redshift-sql-queries-using-terraform.md)
+ [Exporte relatórios do AWS Backup de toda a organização no AWS Organizations como um arquivo CSV](export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.md)
+ [Exportar tags de uma lista de EC2 instâncias da Amazon para um arquivo CSV](export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.md)
+ [Gere um CloudFormation modelo da AWS contendo regras gerenciadas do AWS Config usando o Troposphere](generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.md)
+ [Conceda às instâncias do SageMaker notebook acesso temporário a um CodeCommit repositório em outra conta da AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Implemente uma estratégia GitHub de ramificação do Flow para ambientes com várias contas DevOps](implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.md)
+ [Implemente uma estratégia de ramificação do Gitflow para ambientes com várias contas DevOps](implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.md)
+ [Implemente uma estratégia de ramificação de troncos para ambientes com várias contas DevOps](implement-a-trunk-branching-strategy-for-multi-account-devops-environments.md)
+ [Implemente o escaneamento Checkov personalizado e centralizado para aplicar a política antes de implantar a infraestrutura AWS](centralized-custom-checkov-scanning.md)
+ [Implementação de diagnósticos e solução de problemas com base em IA no Kubernetes usando a integração do K8sGPT e do Amazon Bedrock](implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.md)
+ [Detecte alterações automaticamente e inicie diferentes CodePipeline pipelines para um monorepo em CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Integre um repositório Bitbucket com o AWS Amplify usando a AWS CloudFormation](integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.md)
+ [Lance um CodeBuild projeto em várias contas da AWS usando Step Functions e uma função de proxy Lambda](launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.md)
+ [Gerenciamento do failover multi-AZ para clusters do EMR usando o Controlador de Recuperação de Aplicações](multi-az-failover-spark-emr-clusters-arc.md)
+ [Gerencie blue/green implantações de microsserviços em várias contas e regiões usando os serviços de código da AWS e as chaves multirregionais do AWS KMS](manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.md)
+ [Monitore os repositórios do Amazon ECR para obter permissões curinga usando o AWS e o AWS Config CloudFormation](monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.md)
+ [Otimize implantações sem servidor de várias contas usando os fluxos de trabalho e Actions AWS CDK GitHub](optimize-multi-account-serverless-deployments.md)
+ [Provisione AWS Service Catalog produtos com base em AWS CloudFormation modelos usando GitHub Ações](provision-aws-service-catalog-products-using-github-actions.md)
+ [Provisione funções do IAM com privilégios mínimos implantando uma solução de máquina de venda automática de funções](provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.md)
+ [Publique CloudWatch métricas da Amazon em um arquivo CSV](publish-amazon-cloudwatch-metrics-to-a-csv-file.md)
+ [Remova EC2 as entradas Contas da AWS da Amazon em frente AWS Managed Microsoft AD usando a AWS Lambda automação](remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.md)
+ [Remova EC2 as entradas da Amazon na mesma forma Conta da AWS AWS Managed Microsoft AD usando a AWS Lambda automação](remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.md)
+ [Execute testes de unidade para trabalhos de ETL do Python AWS Glue usando a estrutura pytest](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Configure um CI/CD pipeline usando a AWS CodePipeline e o AWS CDK](set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.md)
+ [Configuração do registro em log centralizado em escala empresarial usando o Terraform](set-up-centralized-logging-at-enterprise-scale-by-using-terraform.md)
+ [Configure a end-to-end criptografia para aplicativos no Amazon EKS usando cert-manager e Let's Encrypt](set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.md)
+ [Simplificação da implantação de aplicações multilocatário no Amazon EKS usando o Flux](simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.md)
+ [Desenvolvimento e implantação simplificados de bots do Amazon Lex usando um fluxo de trabalho automatizado](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Coordene a dependência de recursos e a execução de tarefas usando a AWS Fargate WaitCondition construção de gancho](use-the-aws-fargate-waitcondition-hook-construct.md)
+ [Use repositórios de origem Git de terceiros na AWS CodePipeline](use-third-party-git-source-repositories-in-aws-codepipeline.md)
+ [Crie um CI/CD pipeline para validar as configurações do Terraform usando a AWS CodePipeline](create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.md)
+ [Mais padrões](devops-more-patterns-pattern-list.md)

# Acelere MLOps com os modelos de Backstage e de autoatendimento da Amazon AI SageMaker
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates"></a>

*Ashish Bhatt, Shashank Hirematt e Shivanshu Suryakar, Amazon Web Services*

## Resumo
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-summary"></a>

Organizações que usam sistemas de operações de aprendizado de máquina (MLOps) enfrentam desafios significativos para escalar, padronizar e proteger sua infraestrutura de ML. Esse padrão introduz uma abordagem transformadora que combina o [Backstage](https://backstage.io/), um portal de desenvolvedores de código aberto, com a [ SageMaker IA da Amazon](https://aws.amazon.com/sagemaker/) e módulos de infraestrutura reforçada como código (IaC) para melhorar a forma como suas equipes de ciência de dados podem desenvolver, implantar e gerenciar fluxos de trabalho de ML.

Os módulos IaC para esse padrão são fornecidos no repositório de GitHub [AWS AIOps módulos](https://github.com/awslabs/aiops-modules/tree/main/modules/sagemaker). Esses módulos oferecem modelos predefinidos para configurar a infraestrutura de ML e criar ambientes de ML consistentes. No entanto, os cientistas de dados geralmente têm dificuldade em usar esses modelos diretamente porque eles exigem experiência em infraestrutura. Adicionar um portal para desenvolvedores, como o Backstage, é uma alternativa que facilita para os cientistas de dados implantarem ambientes de ML padronizados sem precisarem entender os detalhes da infraestrutura subjacente.

Ao usar o Backstage como uma plataforma de autoatendimento e integrar modelos de SageMaker IA pré-configurados, você pode:
+ Acelerar o tempo de geração de valor de suas iniciativas de ML.
+ Ajudar a impor segurança e governança consistentes.
+ Fornecer aos cientistas de dados ambientes padronizados e compatíveis.
+ Reduzir a sobrecarga operacional e a complexidade da infraestrutura.

Esse padrão fornece uma solução que aborda os desafios críticos MLOps e também fornece uma estrutura escalável e repetível que permite a inovação enquanto mantém os padrões organizacionais.

**Público-alvo**

Este padrão é destinado a um amplo público envolvido em ML, arquitetura de nuvem e engenharia de plataforma em uma organização. Isso inclui:
+ **Engenheiros de ML** que desejam padronizar e automatizar implantações de fluxo de trabalho de ML.
+ **Cientistas de dados** que desejam ter acesso por autoatendimento a ambientes de ML pré-configurados e compatíveis.
+ **Engenheiros de plataforma** responsáveis por criar e manter plataformas internas para desenvolvedores e infraestrutura compartilhada.
+ **Arquitetos de nuvem** que projetam soluções de nuvem escaláveis, seguras e econômicas para. MLOps
+ **DevOps engenheiros** interessados em estender as práticas de integração contínua e entrega contínua (CI/CD) ao provisionamento e fluxos de trabalho da infraestrutura de ML.
+ **Gestores e líderes técnicos** que supervisionam as iniciativas de ML e desejam melhorar a produtividade da equipe, a governança e o tempo de lançamento no mercado.

Para obter mais informações sobre MLOps desafios, MLOps módulos de SageMaker IA e como a solução fornecida por esse padrão pode atender às necessidades de suas equipes de ML, consulte a seção [Informações adicionais](#accelerate-mlops-with-backstage-and-sagemaker-templates-additional).

## Pré-requisitos e limitações
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-prereqs"></a>

**Pré-requisitos **
+ AWS Identity and Access Management (IAM) [funções e permissões](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#prerequisites) para provisionar recursos em seu Conta da AWS
+ Uma compreensão dos conceitos do [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html), [SageMaker Projects](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-whatis.html), [SageMaker Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-overview.html) e [SageMaker Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html)
+ Um entendimento dos princípios da IaC e experiência com ferramentas como o [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)

**Limitações**
+ **Cobertura limitada de modelos**. Atualmente, a solução oferece suporte somente SageMaker aos AIOps módulos relacionados à IA da [AIOps solução](https://github.com/awslabs/aiops-modules) mais ampla. Outros módulos, como o Ray no Amazon Elastic Kubernetes Service (Amazon EKS) MLflow, o Apache Airflow e o ajuste fino do Amazon Bedrock, ainda não estão disponíveis como modelos do Backstage.
+ **Configurações padrão que não podem ser alteradas**. Os modelos usam configurações padrão fixas dos AIOps SageMaker módulos sem personalização. Você não pode modificar tipos de instância, tamanhos de armazenamento, configurações de rede ou políticas de segurança por meio da interface do Backstage, o que limita a flexibilidade para casos de uso específicos.
+ **Suporte somente para a AWS**. A plataforma foi projetada exclusivamente para AWS implantações e não oferece suporte a cenários de várias nuvens. Organizações que usam serviços de nuvem fora do país Nuvem AWS não podem usar esses modelos para suas necessidades de infraestrutura de ML.
+ **Gerenciamento manual de credenciais**. Você deve fornecer manualmente suas AWS credenciais para cada implantação. Essa solução não fornece integração com provedores de identidade corporativa nem rotação automática de credenciais. Centro de Identidade do AWS IAM
+ **Gerenciamento limitado do ciclo de vida**. Os modelos não têm recursos abrangentes de gerenciamento do ciclo de vida de atributos, como políticas de limpeza automatizadas, recomendações de otimização de custos e detecção de desvios na infraestrutura. Você deve gerenciar e monitorar manualmente os recursos implantados após a criação.

## Arquitetura
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-architecture"></a>

O diagrama a seguir mostra a arquitetura da solução para um portal unificado do desenvolvedor que padroniza e acelera a implantação da infraestrutura de ML com SageMaker IA em todos os ambientes.

![\[Arquitetura para um portal unificado para desenvolvedores com Backstage, CNOE, GitHub Actions e Seed-Farmer.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/c16160cf-d637-423e-93a7-485ffbb28646/images/233adab3-83cf-42f3-a1de-72d0b8ade5ae.png)


Nesta arquitetura:

1. [AWS Os planos de modernização de aplicativos](https://github.com/aws-samples/appmod-blueprints.git) provisionam a configuração da infraestrutura com um cluster [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) como base para a estrutura [Cloud Native Operational Excellence (CNOE](https://cnoe.io/)). Essa solução abrangente aborda desafios complexos de gerenciamento de infraestrutura nativa da nuvem, fornecendo uma plataforma interna para desenvolvedores (IDP) escalável. Os esquemas oferecem uma abordagem estruturada para configurar uma infraestrutura robusta e flexível que pode se adaptar às suas necessidades organizacionais em evolução.

1. A estrutura de código aberto CNOE consolida DevOps ferramentas e resolve a fragmentação do ecossistema por meio de uma abordagem unificada de engenharia de plataforma. Ao reunir ferramentas e tecnologias diferentes, isso simplifica o cenário complexo do desenvolvimento nativo da nuvem, para que suas equipes possam se concentrar na inovação, em vez do gerenciamento da cadeia de ferramentas. A estrutura fornece uma metodologia padronizada para selecionar, integrar e gerenciar ferramentas de desenvolvimento.

1. Com o CNOE, o Backstage é implantado como uma out-of-the-box solução dentro do cluster Amazon EKS. O Backstage vem com autenticação robusta por meio do [Keycloak](https://www.keycloak.org/) e fluxos de trabalho de implantação abrangentes por meio do [Argo CD](https://argo-cd.readthedocs.io/en/stable/). Essa plataforma integrada cria um ambiente centralizado para gerenciar processos de desenvolvimento e fornece um único local para as equipes acessarem, implantarem e monitorarem sua infraestrutura e aplicações em vários ambientes.

1. Um GitHub repositório contém modelos de AIOps software pré-configurados que abrangem todo o ciclo de vida da SageMaker IA. Esses modelos atendem às necessidades críticas de infraestrutura de ML, incluindo provisionamento de SageMaker estúdio, treinamento de modelos, pipelines de inferência e monitoramento de modelos. Esses modelos ajudam você a acelerar suas iniciativas de ML e garantir a consistência em diferentes projetos e equipes.

1. GitHub [O [Actions](https://github.com/features/actions) implementa um fluxo de trabalho automatizado que aciona dinamicamente o provisionamento de recursos por meio do utilitário Seed-Farmer.](https://github.com/awslabs/seed-farmer) Essa abordagem integra o catálogo do Backstage com o repositório de AIOps módulos e cria um processo simplificado de implantação de infraestrutura. A automação reduz a intervenção manual, minimiza erros humanos e garante a criação rápida e consistente da infraestrutura em diferentes ambientes.

1. O [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html) ajuda você a definir e provisionar a infraestrutura como código e garante a implantação de recursos de maneira repetível, segura e compatível em todas as Contas da AWS especificadas. Essa abordagem fornece o máximo de governança com o mínimo de intervenção manual, para que você possa criar modelos padronizados de infraestrutura que possam ser facilmente replicados, controlados por versão e auditados.

## Ferramentas
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
+ [O Amazon Elastic Kubernetes Service (Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
+ O [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/) é um serviço gerenciado de ML que ajuda você a criar e treinar modelos de ML e depois implantá-los em um ambiente hospedado pronto para produção.

**Outras ferramentas**
+ O [Backstage](https://backstage.io/) é uma estrutura de código aberto que ajuda você a criar portais internos para desenvolvedores.
+ GitHub O [Actions](https://github.com/features/actions) é uma CI/CD plataforma que automatiza os fluxos de trabalho de desenvolvimento de software, incluindo tarefas como criar, testar e implantar código.

**Repositórios de códigos**

Esse padrão usa código e modelos dos seguintes GitHub repositórios:
+ [AIOps plataforma interna de desenvolvedores (IDP) com repositório Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/)
+ SageMaker Módulos relacionados à IA do repositório de [AWS AIOps módulos](https://github.com/awslabs/aiops-modules)
+ Repositório [Modern engineering on AWS](https://github.com/aws-samples/appmod-blueprints)

**Implementação**

Essa implementação usa um padrão de implantação de nível de produção para o Backstage do repositório [Modern engineering on AWS](https://github.com/aws-samples/appmod-blueprints). Essa abordagem simplifica significativamente o processo de configuração e, ao mesmo tempo, incorpora as AWS melhores práticas de segurança e escalabilidade.

A seção [Épicos](#accelerate-mlops-with-backstage-and-sagemaker-templates-epics) deste padrão descreve a abordagem de implementação. Para obter instruções detalhadas de step-by-step implantação, consulte o [guia abrangente de implantação](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md) disponível na [plataforma AIOps interna do desenvolvedor (IDP) com o repositório Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/). A implementação inclui:
+ Implantação inicial da plataforma Backstage
+ Integração de modelos de SageMaker software com o Backstage
+ Utilização e manutenção de modelos do Backstage

O guia de implantação também inclui orientações para manutenção contínua, solução de problemas e escalabilidade da plataforma.

## Práticas recomendadas
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-best-practices"></a>

Siga essas melhores práticas para ajudar a garantir a segurança, a governança e a excelência operacional em suas implementações de MLOps infraestrutura.

**Gerenciamento de modelos**
+ Nunca faça alterações significativas nos modelos ativos.
+ Sempre teste minuciosamente as atualizações antes da implantação na produção.
+ Mantenha as versões de modelos claras e bem documentadas.

**Segurança**
+ Fixe GitHub ações em algoritmos de hash seguros de confirmação específicos (SHAs) para ajudar a evitar ataques à cadeia de suprimentos.
+ Use perfis do IAM com privilégios mínimos com permissões granulares.
+ Armazene credenciais confidenciais em [GitHub Segredos](https://docs.github.com/en/actions/concepts/security/secrets) e. [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ Nunca codifique credenciais em modelos.

**Governança e rastreamento**
+ Implemente padrões abrangentes de marcação de recursos.
+ Permita o controle preciso dos custos e o monitoramento da conformidade.
+ Mantenha trilhas de auditoria claras para alterações na infraestrutura.

Este guia fornece uma base sólida para implementar essas melhores práticas usando os módulos Backstage, SageMaker AI e IaC.

## Épicos
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-epics"></a>

### Configurar o ambiente de ML
<a name="set-up-your-ml-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o Backstage. | Essa etapa usa os esquemas da [engenharia moderna no AWS](https://github.com/aws-samples/appmod-blueprints) repositório para criar uma infraestrutura robusta e escalável que integra várias para criar um IDP centralizado Serviços da AWS para fluxos de trabalho de ML. Siga as instruções na [seção de implantação do Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#backstage-deployment) do guia de implantação para clonar o repositório, instalar dependências, inicializar as variáveis de ambiente de AWS CDK configuração e implantar a plataforma Backstage.A infraestrutura usa o Amazon EKS como uma plataforma de orquestração de contêineres para implantar componentes de IDP. A arquitetura do Amazon EKS inclui configurações de rede seguras para estabelecer padrões rígidos de isolamento e controle de acesso à rede. A plataforma se integra aos mecanismos de autenticação para ajudar a proteger o acesso do usuário em todos os serviços e ambientes. | Engenheiro de plataforma | 
| Configure seus modelos de SageMaker IA. | Essa etapa usa os scripts na [plataforma GitHub AIOps interna do desenvolvedor (IDP) com o repositório Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/). Siga as instruções na seção de [configuração do SageMaker modelo](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#sagemaker-template-setup) do guia de implantação para clonar o repositório, configurar os pré-requisitos e executar o script de configuração.Esse processo cria um repositório que contém os modelos de SageMaker IA necessários para a integração com o Backstage. | Engenheiro de plataforma | 
| Integre os**** modelos de SageMaker IA com o Backstage. | Siga as instruções na seção [SageMaker de integração de modelos](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#sagemaker-templates-integration) do guia de implantação para registrar seus modelos de SageMaker IA.Essa etapa integra os AIOps módulos (modelos de SageMaker IA da última etapa) à sua implantação do Backstage para que você possa autoatender às suas necessidades de infraestrutura de ML. | Engenheiro de plataforma | 
| Use os modelos de SageMaker IA do Backstage. | Siga as instruções na seção [Usando SageMaker modelos](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#using-sagemaker-templates) do guia de implantação para acessar o portal Backstage e criar o ambiente de ML no SageMaker Studio.No portal Backstage, você pode selecionar entre os modelos de SageMaker IA disponíveis, incluindo opções para ambientes SageMaker Studio, SageMaker cadernos, modelos de SageMaker projetos personalizados e pipelines de implantação de modelos. Depois de fornecer os parâmetros de configuração, a plataforma cria repositórios dedicados automaticamente e provisiona AWS recursos por meio do GitHub Actions e do Seed-Farmer. Você pode monitorar o progresso por meio dos registros de GitHub ações e do catálogo de componentes do Backstage. | Cientista de dados, engenheiro de dados, desenvolvedor | 

### Gerenciar modelos para governança e conformidade
<a name="manage-templates-for-governance-and-compliance"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize os modelos de SageMaker IA. | Para atualizar um modelo de SageMaker IA no Backstage, siga estas etapas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/accelerate-mlops-with-backstage-and-sagemaker-templates.html) | Engenheiro de plataforma | 
| Crie e gerencie várias versões de um modelo. | Para alterações ou atualizações significativas, talvez você queira criar várias versões de um modelo de SageMaker IA.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/accelerate-mlops-with-backstage-and-sagemaker-templates.html) | Engenheiro de plataforma | 

### Estender o ambiente de ML
<a name="extend-your-ml-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Expanda a cobertura de modelos além da SageMaker IA. | A solução atual implementa somente modelos SageMaker relacionados à IA AIOps . Você pode estender o ambiente de ML adicionando [AIOps módulos](https://github.com/awslabs/aiops-modules) e integrando modelos de software personalizados para aplicativos adicionais Serviços da AWS . É possível criá-los usando a interface do designer de modelos no Backstage, implementando ações personalizadas de scaffolder ou mantendo repositórios de modelos com metadados padrão. A plataforma oferece suporte ao versionamento de modelos, compartilhamento entre equipes e fluxos de trabalho de validação para fins de consistência. Para obter mais informações, consulte a [documentação do Backstage](https://backstage.io/docs/overview/what-is-backstage/).Você também pode implementar padrões de herança de modelos para criar versões especializadas de modelos de base. Essa extensibilidade permite que você gerencie diversos AWS recursos e aplicativos além da SageMaker IA, preservando a experiência simplificada do desenvolvedor e mantendo os padrões da sua organização. | Engenheiro de plataforma | 
| Use injeção dinâmica de parâmetros. | Os modelos atuais usam configurações padrão sem personalização e executam a CLI do Seed-Farmer para implantar recursos com variáveis padrão. Você pode estender a configuração padrão usando a injeção dinâmica de parâmetros para configurações específicas do módulo. | Engenheiro de plataforma | 
| Aumente a segurança e a conformidade. | Para aumentar a segurança na criação de recursos da AWS, você pode habilitar a integração do controle de acesso baseado em perfis (RBAC) com autenticação única (SSO), SAML, OpenID Connect (OIDC) e imposição de políticas como código. | Engenheiro de plataforma | 
| Adicione a limpeza automatizada de recursos. | Você pode habilitar atributos para políticas de limpeza automatizadas e adicionar detecção e remediação de desvios na infraestrutura. | Engenheiro de plataforma | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Remova a infraestrutura do Backstage e os recursos de SageMaker IA. | Ao terminar de usar seu ambiente de ML, siga as instruções na seção [Limpeza e gerenciamento de recursos](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#cleanup-and-resource-management) do guia de implantação para remover a infraestrutura do Backstage e excluir os recursos de SageMaker IA em seu ambiente de ML. | Engenheiro de plataforma | 

## Solução de problemas
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| AWS CDK falhas de bootstrap |  Verifique AWS as credenciais e a configuração da região. | 
| Problemas de acesso a clusters do Amazon EKS | Verifique a configuração **kubectl** e as permissões do IAM. | 
| Problemas de conectividade do Application Load Balancer | Certifique-se de que os grupos de segurança permitam o tráfego de entrada na porta 80/443. | 
| GitHub problemas de integração | Verifique as permissões GitHub do token e o acesso à organização. | 
| SageMaker Falhas na implantação de IA | Verifique as [cotas do AWS service (Serviço da AWS)](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker) e as permissões do IAM. | 

## Recursos relacionados
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-resources"></a>
+ [Platform engineering](https://docs.aws.amazon.com/prescriptive-guidance/latest/aws-caf-platform-perspective/platform-eng.html) (no guia *AWS Cloud Adoption Framework: Platform perspective*)
+ [Documentação da Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/)
+ [Backstage Software Templates](https://backstage.io/docs/features/software-templates/) (site do Backstage)
+ [AIOps repositório de módulos](https://github.com/awslabs/aiops-modules) (coleção de módulos IaC reutilizáveis para ML)
+ [AIOps plataforma interna de desenvolvedores (IDP) com repositório Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/)
+ Repositório [Modern engineering on AWS](https://github.com/aws-samples/appmod-blueprints)
+ [Site da Cloud Native Operational Excellence (CNOE)](https://cnoe.io/)

## Mais informações
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-additional"></a>

**Desafios comerciais**

Organizações que iniciam ou expandem suas MLOps iniciativas frequentemente enfrentam os seguintes desafios comerciais e técnicos:
+ **Ambientes inconsistentes**. A falta de ambientes padronizados de desenvolvimento e implantação dificulta a colaboração e aumenta os riscos da implantação.
+ **Sobrecarga de provisionamento manual**. Configurar manualmente uma infraestrutura de ML com o SageMaker Studio, buckets do Amazon Simple Storage Service (Amazon S3), funções do IAM CI/CD e pipelines é demorado e propenso a erros, além de desviar os cientistas de dados de sua tarefa principal de desenvolvimento de modelos.
+ **Falta de capacidade de descoberta e reutilização**. A falta de um catálogo centralizado dificulta a localização de conjuntos de dados, pipelines e modelos de ML existentes. Isso leva ao trabalho redundante e à perda de oportunidades de reutilização.
+ **Governança e conformidade complexas**. Garantir que os projetos de ML respeitem as políticas de segurança organizacionais, regulamentos de privacidade de dados e normas de conformidade, como a Lei de Portabilidade e Responsabilidade de Provedores de Saúde (HIPAA) e o Regulamento Geral de Proteção de Dados (RGDP), pode ser um desafio sem barreiras de proteção automatizadas.
+ **Muito tempo para a geração de valor**. O efeito cumulativo desses desafios resulta em ciclos de vida prolongados do projeto de ML e atrasa a obtenção do valor comercial dos investimentos em ML.
+ **Riscos de segurança**. Configurações inconsistentes e processos manuais podem introduzir vulnerabilidades de segurança que dificultam a aplicação de privilégios mínimos e o isolamento da rede.

Esses problemas prolongam os ciclos de desenvolvimento, aumentam a sobrecarga operacional e introduzem riscos de segurança. A natureza iterativa de ML exige fluxos de trabalho repetíveis e colaboração eficiente.

A Gartner prevê que até 2026, 80% das organizações de engenharia de software terão equipes de plataforma. (Consulte [Platform Engineering Empowers Developers to be Better, Faster, Happier](https://www.gartner.com/en/experts/top-tech-trends-unpacked-series/platform-engineering-empowers-developers) no site da Gartner.) Essa previsão destaca como uma IDP pode acelerar a entrega de software. Como uma IDP, o Backstage ajuda a restaurar a ordem em uma infraestrutura complexa para que as equipes possam fornecer código de alta qualidade com rapidez e segurança. A integração do Backstage com AIOps módulos reforçados ajuda você a mudar da solução de problemas reativa para a prevenção proativa.

**MLOps SageMaker módulos**

Os [AIOps módulos](https://github.com/awslabs/aiops-modules) no GitHub repositório usados para esse padrão fornecem uma base valiosa para padronização MLOps por AWS meio de IaC reutilizável e reforçado. Esses módulos resumem as melhores práticas para SageMaker projetos de provisionamento, pipelines e recursos de rede e armazenamento associados, com o objetivo de reduzir a complexidade e acelerar a configuração de ambientes de ML. Você pode usar esses modelos em vários casos de MLOps uso para estabelecer padrões de implantação consistentes e seguros que promovam uma abordagem mais governada e eficiente aos fluxos de trabalho de ML. 

O uso direto dos AIOps módulos geralmente exige que as equipes da plataforma implantem e gerenciem esses modelos de IaC, o que pode representar desafios para cientistas de dados que desejam acesso por autoatendimento. Descobrir e entender os modelos disponíveis, configurar os parâmetros necessários e acionar sua implantação pode exigir a navegação nos AWS service (Serviço da AWS) consoles ou a interação direta com as ferramentas de IaC. Isso pode criar atrito, aumentar a carga cognitiva para cientistas de dados que preferem se concentrar em tarefas de ML e possivelmente resultar em parametrização inconsistente ou desvios dos padrões organizacionais se esses modelos não forem gerenciados por meio de uma interface centralizada e fácil de usar. A integração desses AIOps módulos poderosos com um IDP, como o Backstage, ajuda a enfrentar esses desafios, fornecendo uma experiência simplificada de autoatendimento, maior capacidade de descoberta e controles de governança mais fortes para o uso desses componentes padronizados. MLOps 

**Backstage como uma IDP**

Uma plataforma interna para desenvolvedores (IDP) é uma camada de autoatendimento criada por equipes de plataforma para simplificar e padronizar a forma como os desenvolvedores criam, implantam e gerenciam aplicações. Ela abstrai a complexidade da infraestrutura e fornece aos desenvolvedores acesso fácil a ferramentas, ambientes e serviços por meio de uma interface unificada.

O objetivo principal de uma IDP é aprimorar a experiência e a produtividade dos desenvolvedores ao:
+ Habilitar o autoatendimento para tarefas como criação e implantação de serviços.
+ Promover a consistência e a conformidade por meio de modelos padrão.
+ Integrar ferramentas em todo o ciclo de vida do desenvolvimento (CI/CD, monitoramento e documentação).

O Backstage é um portal para desenvolvedores de código aberto criado pela Spotify e que agora faz parte da Cloud Native Computing Foundation (CNCF). Ele ajuda as organizações a criar sua própria IDP fornecendo uma plataforma centralizada e extensível para gerenciar componentes de software, ferramentas e documentação. Com o Backstage, os desenvolvedores podem:
+ Descubra e gerencie todos os serviços internos por meio de um catálogo de software.
+ Crie novos projetos usando modelos predefinidos por meio do plug-in scaffolder.
+ Acesse ferramentas integradas, como CI/CD pipelines, painéis do Kubernetes e sistemas de monitoramento em um único local.
+ Mantenha uma documentação consistente e baseada em remarcações por meio de. TechDocs

**PERGUNTAS FREQUENTES**

**Qual é a diferença entre usar esse modelo do Backstage e implantar o SageMaker Studio manualmente por meio do SageMaker console?**

O modelo Backstage oferece várias vantagens em relação à implantação manual do AWS console, incluindo configurações padronizadas que seguem as melhores práticas organizacionais, implantação automatizada de IaC usando o Seed-Farmer e o AWS CDK, políticas de segurança e medidas de conformidade integradas e integração com os fluxos de trabalho de desenvolvedores de sua organização. GitHub O modelo também cria implantações reproduzíveis com controle de versão, o que facilita a replicação de ambientes em diferentes estágios (desenvolvimento, preparação, produção) e mantém a consistência entre as equipes. Além disso, o modelo inclui recursos de limpeza automatizados e se integra ao sistema de gerenciamento de identidade da sua organização por meio do Backstage. A implantação manual por meio do console exige profundo AWS conhecimento e não fornece controle de versão ou o mesmo nível de padronização e governança que o modelo oferece. Por esses motivos, as implantações de console são mais adequadas para experimentos únicos do que ambientes de ML de produção.

**O que é o Seed-Farmer e por que a solução usa essa ferramenta?**

O Seed-Farmer é uma ferramenta de orquestração de AWS implantação que gerencia módulos de infraestrutura usando o. AWS CDK Esse padrão usa o Seed-Farmer porque fornece componentes de infraestrutura padronizados e reutilizáveis que são projetados especificamente para AI/ML cargas de trabalho, manipula dependências complexas entre si Serviços da AWS automaticamente e garante implantações consistentes em diferentes ambientes.

**Preciso instalar o AWS CLI para usar esses modelos?**

Não, você não precisa instalar o AWS CLI no seu computador. Os modelos são executados inteiramente por meio de GitHub ações na nuvem. Você fornece suas AWS credenciais (chave de acesso, chave secreta e token de sessão) por meio da interface do Backstage, e a implantação acontece automaticamente no ambiente GitHub Actions.

**Quanto tempo é necessário para implantar um ambiente SageMaker Studio?**

Uma implantação típica do SageMaker Studio leva de 15 a 25 minutos para ser concluída. Isso inclui AWS CDK inicialização (2 a 3 minutos), configuração do conjunto de ferramentas Seed-Farmer (3 a 5 minutos) e criação de recursos (10 a 15 minutos). O tempo exato depende de você Região da AWS e da complexidade de sua configuração de rede.

**Posso implantar vários SageMaker ambientes no mesmo ambiente Conta da AWS?**

Sim. Cada implantação cria recursos com nomes exclusivos com base no nome do componente que você fornece no modelo. No entanto, esteja ciente das AWS service (Serviço da AWS) cotas: cada conta pode ter um número limitado de SageMaker domínios por região, portanto, [verifique suas cotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker) antes de criar vários ambientes.

# Automatize as operações de AWS infraestrutura usando o Amazon Bedrock
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock"></a>

*Ishwar Chauthaiwale e Anand Bukkapatnam Tirumala, Amazon Web Services*

## Resumo
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-summary"></a>

Em soluções nativas da nuvem, automatizar operações comuns de infraestrutura desempenha um papel fundamental na manutenção de ambientes eficientes, seguros e econômicos. Realizar operações de forma manual é um processo demorado e propenso a erros por parte dos humanos. Além disso, membros da equipe com diferentes níveis de AWS especialização precisam realizar essas tarefas e, ao mesmo tempo, garantir a conformidade com os protocolos de segurança. Esse padrão demonstra como usar o Amazon Bedrock para automatizar operações comuns de AWS infraestrutura por meio do processamento de linguagem natural (NLP).

Com este padrão, as organizações podem desenvolver código modular, reutilizável e seguro para a implantação de infraestrutura baseada em IA generativa em diversos ambientes. Por meio de seu foco na infraestrutura como código (IaC) e na automação, ela oferece DevOps os principais benefícios, incluindo controle de versão, implantações consistentes, redução de erros, provisionamento mais rápido e colaboração aprimorada.

O padrão implementa uma arquitetura segura que permite que as equipes gerenciem operações relacionadas à chave Serviços da AWS , incluindo:
+ Gerenciamento de versionamento de buckets do Amazon Simple Storage Service (Amazon S3)
+ Criação de snapshots do Amazon Relational Database Service (Amazon RDS)
+ Gerenciamento de instâncias do Amazon Elastic Compute Cloud (Amazon EC2)

A arquitetura emprega endpoints e redes privadas da Amazon Virtual Private Cloud (Amazon VPC) para comunicação segura, AWS Lambda com funções operando como executores de tarefas em sub-redes privadas. O Amazon S3 fornece gerenciamento de dados e implementa funções e permissões abrangentes AWS Identity and Access Management (IAM) para garantir controles de acesso adequados. Esta solução não inclui um recurso de histórico para chat, e as conversas não são armazenadas.

## Pré-requisitos e limitações
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-prereqs"></a>
+ Um ativo Conta da AWS.
+ Medidas adequadas de controle de acesso devem estar implementadas para ajudar a proteger e a gerenciar o acesso. Exemplos de controle de acesso incluem o uso de acesso a modelos básicos AWS Systems Manager, uma função do IAM para implantação e funções baseadas em serviços, a desativação do acesso público aos buckets do Amazon S3 e a configuração de uma fila de mensagens mortas.
+ Uma [chave AWS Key Management Service (AWS KMS) gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).
+ AWS Command Line Interface (AWS CLI) versão 2 ou posterior, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) no ambiente de implantação.
+ Terraform AWS Provider versão 4 ou posterior [instalado](https://registry.terraform.io/providers/-/aws/latest/docs/guides/version-4-upgrade) e configurado.
+ O Terraform, na versão 1.5.7 ou em versões posteriores, [instalado](https://developer.hashicorp.com/terraform/install) e configurado.
+ Analise e [defina os esquemas da OpenAPI para os grupos de ação do seu agente no Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-api-schema.html), com o objetivo de prevenir acessos não autorizados e garantir a integridade dos dados.
+ [Acesso habilitado](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) [em seu Conta da AWS para os modelos Amazon Titan Text Embeddings v2 necessários e para os modelos Claude 3.5 Sonnet ou Claude 3 Haiku Foundation.](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) Para evitar falhas na implantação, confirme se a implantação de destino é Região da AWS [compatível com os modelos necessários](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html).
+ Uma nuvem privada virtual (VPC) configurada com base nas práticas recomendadas do [AWS Well Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec-design.html).
+ Análise da [política de uso responsável de IA da Amazon](https://aws.amazon.com/ai/responsible-ai/policy/) concluída.

**Versões do produto**
+ Incorporador de Texto do Amazon Titan v2
+ Claude 3.5 Sonnet ou Claude 3 Haiku da Anthropic
+ Terraform AWS Provider versão 4 ou posterior
+ Terraform versão 1.5.7 ou posterior

## Arquitetura
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-architecture"></a>

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

![\[Fluxo de trabalho para automatizar operações conhecidas de infraestrutura da AWS usando o Amazon Bedrock.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/924e503f-bfc5-4452-abdf-d72a58d4d36f/images/bd56ad29-b435-4543-8ee8-dc4e1d38df18.png)


A arquitetura da solução consiste em várias camadas que trabalham juntas para processar solicitações de linguagem natural e executar AWS as operações correspondentes:

1. O usuário realiza solicitações de operações por meio do console de chat do Amazon Bedrock.

1. O chatbot usa as Bases de Conhecimento para Amazon Bedrock para o processamento das solicitações. Esse chatbot implementa o modelo Incorporador de Texto do Amazon Titan v2 para o processamento da linguagem natural.

1. Se o prompt fornecido pelo usuário incluir uma solicitação de ação, o grupo de ações do Amazon Bedrock usará o modelo Claude 3 Haiku ou Claude 3.5 Sonnet da Anthropic, com base na sua escolha, para determinar a lógica de execução e definir as operações por meio de um esquema da OpenAPI.

1. O grupo de ação alcança os [endpoints](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html) da Amazon VPC usando AWS PrivateLink para comunicação segura de serviços.

1. A AWS Lambda função é alcançada por meio de endpoints Amazon VPC para serviços Amazon Bedrock.

1. As funções do Lambda são o principal mecanismo de execução. Com base na solicitação, a função do Lambda chama a API para executar ações nos serviços da Serviços da AWS. Além disso, a função do Lambda gerencia o roteamento e a execução das operações.

1. A solicitação Serviços da AWS get the API da função Lambda e as operações correspondentes são executadas.

1. A função do Lambda gera uma carga útil de saída que é compreendida pelo Amazon Bedrock.

1. Essa carga é enviada para o Amazon Bedrock usando PrivateLink para comunicação segura de serviços. O grande modelo de linguagem (LLM) empregado pelo Amazon Bedrock compreende essa carga útil e a converte em um formato compreensível por humanos.

1. Em seguida, a saída é apresentada ao usuário no console de chat do Amazon Bedrock.

A solução possibilita as seguintes operações principais:
+ Amazon S3: habilitar o versionamento de buckets para controle de versões.
+ Amazon RDS: criar snapshots de bancos de dados para backup.
+ Amazon EC2: listar instâncias e controlar o início e a interrupção das instâncias.

## Ferramentas
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-tools"></a>

**Serviços da AWS**
+ [O Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) é um serviço totalmente gerenciado que disponibiliza modelos básicos de alto desempenho (FMs) das principais startups de IA e da Amazon para seu uso por meio de uma API unificada.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ O [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) oferece capacidade de computação escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [O Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) é uma configuração sem servidor sob demanda para o Amazon Service. OpenSearch 
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)ajuda você a criar conexões unidirecionais e privadas de suas nuvens privadas virtuais (VPCs) para serviços fora da VPC.
+ O [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ O [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ajuda você a gerenciar suas aplicações e infraestrutura em execução na Nuvem AWS. Ele simplifica o gerenciamento de aplicativos e recursos, reduz o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus AWS recursos com segurança em grande escala.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

**Outras ferramentas**
+ O [Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [infra-ops-orchestratoraws-samples/](https://github.com/aws-samples/infra-ops-orchestrator).

## Práticas recomendadas
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-best-practices"></a>
+ Monitore regularmente os logs de execução do Lambda. Para obter mais informações, consulte [Monitorar e solucionar problemas de funções do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Para obter mais informações sobre as melhores práticas, consulte [Práticas recomendadas para trabalhar com AWS Lambda funções](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).
+ Analise periodicamente as configurações de segurança para garantir a conformidade com os requisitos da sua organização. Para obter mais informações, consulte [Security best practices](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec-bp.html).
+ Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

## Épicos
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-epics"></a>

### Implante a solução
<a name="deploy-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o repositório em sua máquina local, execute o seguinte comando:<pre>git clone "git@github.com:aws-samples/infra-ops-orchestrator.git"<br />cd infra-ops-orchestrator</pre> | AWS DevOps, DevOps engenheiro | 
| Edite as variáveis de ambiente. | Edite o arquivo `terraform.tfvars` no diretório raiz do repositório clonado. Analise os espaços reservados indicados por `[XXXXX]` e atualize-os de acordo com o seu ambiente. | AWS DevOps, DevOps engenheiro | 
| Crie a infraestrutura. | Para criar a infraestrutura, execute os seguintes comandos:<pre>terraform init</pre><pre>terraform plan</pre>Analise cuidadosamente o plano de execução. Se as alterações propostas estiverem adequadas, execute o seguinte comando:<pre>terraform apply --auto-approve</pre> | AWS DevOps, DevOps engenheiro | 

### Acesso à solução
<a name="access-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Acesse a solução. | Após a implantação com êxito, siga estas etapas para usar a interface baseada em chat:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-infrastructure-operations-by-using-amazon-bedrock.html) | AWS DevOps, DevOps engenheiro | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os recursos criados. | Para excluir toda a infraestrutura criada por este padrão, execute o seguinte comando:<pre>terraform plan -destroy </pre>Analise cuidadosamente o plano de exclusão. Se as exclusões propostas estiverem adequadas, execute o seguinte comando:<pre>terraform destroy</pre>Observação: este comando excluirá permanentemente todos os recursos criados por este padrão. O comando solicitará confirmação antes de remover quaisquer recursos. | AWS DevOps, DevOps engenheiro | 

## Solução de problemas
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Comportamento do agente  | Para obter informações sobre este problema, consulte [Test and troubleshoot agent behavior](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) na documentação do Amazon Bedrock. | 
| Problemas de rede relacionados ao Lambda | Para obter informações sobre estes problemas, consulte [Solucionar problemas de redes no Lambda](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) na documentação do Lambda. | 
| permissões do IAM | Para obter informações sobre estes problemas, consulte [Solucionar problemas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html) na documentação do IAM. | 

## Recursos relacionados
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-resources"></a>
+ [Criação de um DB snapshot para uma instância de banco de dados Single-AZ para o Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)
+ [Define OpenAPI schemas for your agent's action groups in Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-api-schema.html)
+ [Ativando o controle de versão em buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)
+ [Como o Amazon Bedrock Agents funciona](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [Retrieve data and generate AI responses with Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/aws-privatelink.html)
+ [Acesse com segurança os serviços em AWS PrivateLink](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/aws-privatelink.html)
+ [Pare e inicie instâncias do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)
+ [Use grupos de ação para definir ações para seu agente realizar](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html)

# Automatize CloudFront as atualizações quando os endpoints do balanceador de carga mudarem usando o Terraform
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change"></a>

*Tamilselvan P, Mohan Annam e Naveen Suthar, Amazon Web Services*

## Resumo
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-summary"></a>

Quando usuários do Amazon Elastic Kubernetes Service (Amazon EKS) excluem e instalam novamente a configuração de entrada por meio de charts do Helm, um novo Application Load Balancer (ALB) é criado. Isso cria um problema porque CloudFront a Amazon continua referenciando o antigo registro DNS do ALB. Como resultado, os serviços destinados a este endpoint não estarão acessíveis. (Para obter mais detalhes sobre este fluxo de trabalho com problemas, consulte [Informações adicionais](#automate-cloudfront-updates-when-load-balancer-endpoints-change-additional).)

Para resolver esse problema, esse padrão descreve o uso de uma AWS Lambda função personalizada desenvolvida com Python. Essa função Lambda detecta automaticamente quando um novo ALB é criado por meio das regras da Amazon. EventBridge Usando o AWS SDK para Python (Boto3), a função então atualiza a CloudFront configuração com o novo endereço DNS do ALB, garantindo que o tráfego seja roteado para o endpoint correto.

Essa solução automatizada mantém a continuidade do serviço sem a necessidade de roteamento adicional ou aumento de latência. O processo ajuda a garantir que CloudFront sempre faça referência ao endpoint DNS correto do ALB, mesmo quando a infraestrutura subjacente muda.

## Pré-requisitos e limitações
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Uma aplicação web de amostra para testes e validações, implantada no Amazon EKS usando o Helm. Para obter mais informações, consulte [Deploy applications with Helm on Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) na documentação do Amazon EKS.
+ Configure CloudFront para rotear chamadas para um ALB criado por um controlador de [entrada](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) do Helm. Para obter mais informações, consulte [Instalar o controlador AWS Load Balancer com o Helm](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html) na documentação do Amazon EKS e [Restringir o acesso aos Application Load Balancers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html) na documentação. CloudFront 
+ O Terraform [instalado](https://developer.hashicorp.com/terraform/install?product_intent=terraform) e configurado em um espaço de trabalho local.

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ Terraform versão 1.0.0 ou posterior
+ Terraform [AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) versão 4.20 ou versões posteriores

## Arquitetura
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-architecture"></a>

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

![\[Fluxo de trabalho a ser atualizado CloudFront com o novo endereço DNS do ALB detectado por meio da EventBridge regra.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/03c30b18-4dd7-4dd4-b960-5a5cc58cec63/images/28854767-0902-4398-80af-b19141dd94e4.png)


Esta solução executa as seguintes etapas:

1. O controlador de entrada do Amazon EKS cria um novo Application Load Balancer (ALB) sempre que há reinicialização ou implantação do Helm.

1. EventBridge procura eventos de criação de ALB.

1. O evento de criação do ALB aciona a função do Lambda.

1. A função Lambda foi implantada com base no python 3.9 e usa a API boto3 para fazer chamadas. Serviços da AWS A função Lambda atualiza a CloudFront entrada com o nome DNS mais recente do balanceador de carga, que é recebido dos eventos de criação do balanceador de carga.

## Ferramentas
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-tools"></a>

**Serviços da AWS**
+ [A Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) acelera a distribuição do seu conteúdo da web entregando-o por meio de uma rede mundial de data centers, o que reduz a latência e melhora o desempenho.
+ [O Amazon Elastic Kubernetes Service (Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS

**Outras ferramentas**
+ [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [aws-cloudfront-automation-terraform-samples](https://github.com/aws-samples/aws-cloudfront-automation-terraform-samples).

## Épicos
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-epics"></a>

### Configuração da estação de trabalho local
<a name="set-up-local-workstation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure e ajuste a CLI do Git. | Para instalar e configurar a interface de linha de comandos (CLI) do Git em sua estação de trabalho local, siga as instruções apresentadas em [Getting Started – Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) na documentação oficial do Git. | DevOps engenheiro | 
| Crie a pasta do projeto e adicione os arquivos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps engenheiro | 

### Provisionamento da arquitetura de destino por meio da configuração do Terraform
<a name="provision-the-target-architecture-using-the-terraform-configuration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante a solução. | Para implantar recursos no destino Conta da AWS, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps engenheiro | 

### Verificar a implantação
<a name="verify-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide a implantação. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps engenheiro | 

### Limpeza da infraestrutura
<a name="clean-up-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe a infraestrutura. | Para limpar a infraestrutura que você criou anteriormente, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps engenheiro | 

## Solução de problemas
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Erro ao validar as credenciais do provedor | Ao executar os comandos `apply` ou `destroy` do Terraform em sua máquina local, você pode encontrar um erro semelhante ao seguinte:<pre>Error: configuring Terraform AWS Provider: error validating provider <br />credentials: error calling sts:GetCallerIdentity: operation error STS: <br />GetCallerIdentity, https response error StatusCode: 403, RequestID: <br />123456a9-fbc1-40ed-b8d8-513d0133ba7f, api error InvalidClientTokenId: <br />The security token included in the request is invalid.</pre>Esse erro é causado pela expiração do token de segurança das credenciais usadas na configuração da sua máquina local.Para resolver o erro, consulte [Definir e visualizar as configurações](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) na documentação AWS Command Line Interface (AWS CLI). | 

## Recursos relacionados
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-resources"></a>

**AWS recursos**
+ [Restrinja o acesso aos Application Load Balancers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html)
+ [Roteie o tráfego da Internet com o AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html)

**Documentação do Terraform**
+ [AWS Provedor](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Instalar o Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [Remote State](https://developer.hashicorp.com/terraform/language/state/remote)

## Mais informações
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-additional"></a>

**Fluxo de trabalho com problemas**

![\[Fluxo de trabalho que produz a entrada out-of-date ALB DNS em. CloudFront\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/03c30b18-4dd7-4dd4-b960-5a5cc58cec63/images/bb3c2c93-c749-435d-9b1d-2bbf6f0cf085.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Quando o usuário acessa o aplicativo, a chamada vai para CloudFront.

1. CloudFront encaminha as chamadas para o respectivo Application Load Balancer (ALB).

1. O ALB inclui os endereços IP de destino, que correspondem aos endereços IP dos pods da aplicação. A partir desse ponto, o ALB fornece os resultados esperados ao usuário.

No entanto, esse fluxo de trabalho evidencia um problema. As implantações da aplicação estão sendo realizadas por meio de charts do Helm. Sempre que há uma implantação ou se alguém reinicia o Helm, a entrada correspondente também é recriada. Como resultado, o controlador do balanceador de carga externo recria o ALB. Além disso, a cada recriação, o ALB é recriado com um nome de DNS diferente. Por causa disso, CloudFront terá uma entrada obsoleta nas configurações de origem. Devido a essa entrada desatualizada, a aplicação não ficará acessível para o usuário. Esse problema resulta em tempo de inatividade para os usuários.

**Solução alternativa**

Outra solução possível é criar um [DNS externo](https://github.com/kubernetes-sigs/external-dns) para o ALB e, em seguida, direcioná-lo para o endpoint de zona hospedada privada do Amazon Route 53. CloudFront No entanto, essa abordagem adiciona um salto extra no fluxo da aplicação, o que pode causar latência. A solução baseada na função do Lambda deste padrão não interrompe o fluxo atual.

# Automatize as CodeGuru avaliações da Amazon para aplicativos AWS CDK Python usando o Actions GitHub
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications"></a>

*Vanitha Dontireddy e Sarat Chandra Pothula, Amazon Web Services*

## Resumo
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-summary"></a>

Observação: a partir de 7 de novembro de 2025, você não pode criar novas associações de repositórios no Amazon CodeGuru Reviewer. Para saber mais sobre serviços com recursos semelhantes aos do CodeGuru Reviewer, consulte a [mudança de disponibilidade do Amazon CodeGuru Reviewer na documentação](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) do CodeGuru Reviewer.

Esse padrão mostra a integração das análises de código CodeGuru automatizadas da Amazon para aplicativos AWS Cloud Development Kit (AWS CDK) Python, GitHub orquestradas por meio de ações. A solução implanta uma arquitetura sem servidor definida em Python. AWS CDK Ao automatizar a análise de código especializada no pipeline de desenvolvimento, essa abordagem pode fazer o seguinte para projetos em Python AWS CDK :
+ Código de melhor qualidade.
+ Simplificação dos fluxos de trabalho.
+ Aproveitamento máximo dos benefícios da computação com tecnologia sem servidor.

## Pré-requisitos e limitações
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ AWS Command Line Interface [(AWS CLI) versão 2.9.11 ou posterior, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) e configurada.](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Uma GitHub conta ativa e um GitHub repositório com permissões de fluxo de trabalho de leitura e gravação e criação de pull requests (PR) pela GitHub Actions para garantir que o fluxo de trabalho de PR funcione corretamente.
+ Uma função do OpenID Connect (OIDC) em GitHub Ações para implantar a solução no. Conta da AWS Para criar o perfil, use o [constructo do AWS CDK](https://github.com/aws-samples/github-actions-oidc-cdk-construct).

**Limitações**
+ O Amazon CodeGuru Profiler [oferece suporte a aplicativos](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html#what-is-language-support) escritos em todas as linguagens de máquina virtual Java (JVM) (como Scala e Kotlin) e tempos de execução e Python 3.6 ou posterior.
+ O Amazon CodeGuru Reviewer [oferece suporte a associações](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-repositories.html) com repositórios de código Java e Python somente dos seguintes provedores de origem AWS CodeCommit: Bitbucket GitHub GitHub , Enterprise Cloud e Enterprise Server. GitHub Além disso, os repositórios do Amazon Simple Storage Service (Amazon S3) só são suportados por meio de ações. GitHub 
+ Não existe uma forma automatizada de apresentar as descobertas durante o pipeline de integração contínua e implantação contínua (CI/CD). Em vez disso, esse padrão usa GitHub Ações como um método alternativo para manipular e exibir as descobertas.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-architecture"></a>

O diagrama apresentado a seguir ilustra a arquitetura para esta solução.

![\[Fluxo de trabalho para integrar a revisão de CodeGuru código para aplicativos GitHub Python do AWS CDK usando Actions.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/c5395e3e-ff2a-41cf-bd64-c73cc928b60b/images/18f880a2-9bc3-4d71-a598-bb83b68ee383.png)


Conforme mostrado no diagrama, quando um desenvolvedor cria uma pull request (PR) para análise, o GitHub Actions aciona as seguintes etapas:

1. Suposição da função do IAM — O pipeline usa a função do IAM especificada em GitHub Segredos para realizar tarefas de implantação.

1. Análise de código
   + CodeGuru O revisor analisa o código armazenado no bucket do Amazon S3. Ele identifica defeitos e fornece recomendações para correções e otimizações.
   + CodeGuru Verificações de segurança em busca de violações e vulnerabilidades de políticas.

1. Revisão das descobertas
   + O pipeline apresenta um link para o painel de descobertas na saída do console.
   + Se forem detectadas descobertas críticas, o pipeline falhará imediatamente.
   + Para descobertas com severidade alta, normal ou baixa, o pipeline prosseguirá para a próxima etapa.

1. Aprovação de PR
   + O PR precisa ser aprovado manualmente por um revisor.
   + Caso o PR seja recusado, o pipeline falha e interrompe quaisquer etapas subsequentes de implantação.

1. Implantação do CDK: após a aprovação do PR, o processo de implantação do CDK é iniciado. Ele configura o seguinte Serviços da AWS e os recursos:
   + CodeGuru Perfilador
   + AWS Lambda função
   + Fila do Amazon Simple Queue Service (Amazon SQS)

1. Geração de dados de perfil — Para gerar dados de perfil suficientes para CodeGuru o Profiler:
   + O pipeline invoca a função do Lambda várias vezes, enviando mensagens periodicamente para a fila do Amazon SQS.

## Ferramentas
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
+ O [CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) é um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu AWS CDK aplicativo.
+ [O Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 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](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) usa análise de programas e aprendizado de máquina para detectar possíveis defeitos difíceis de serem encontrados pelos desenvolvedores. Em seguida, o CodeGuru Profiler oferece sugestões para melhorar seu código Java e Python.
+ O Amazon CodeGuru Security é uma ferramenta estática de segurança de aplicativos que usa aprendizado de máquina para detectar violações e vulnerabilidades de políticas de segurança. A ferramenta fornece sugestões para lidar com os riscos de segurança e gera métricas para que você possa acompanhar a postura de segurança das aplicações.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Outras ferramentas**
+ GitHub O [Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [amazon-codeguru-suite-cdk-python](https://github.com/aws-samples/amazon-codeguru-suite-cdk-python).

## Práticas recomendadas
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-best-practices"></a>
+ Siga as práticas apresentadas em [Best practices for developing and deploying cloud infrastructure with the AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html).
+ Siga as [melhores práticas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) ao usar os fluxos Serviços da AWS de trabalho do GitHub Actions, incluindo:
  + Não armazene credenciais no código do seu repositório.
  + [Assuma um perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) para receber credenciais temporárias e use esse tipo de credencial sempre que possível.
  + [Conceda o menor privilégio](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) à função do IAM usada nos fluxos de trabalho do GitHub Actions. Conceda somente as permissões necessárias para realizar as ações em seus fluxos de trabalho de GitHub ações. 
  + [Monitore a atividade](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) da função do IAM usada nos fluxos de trabalho do GitHub Actions.
  + Faça a rotação periódica de quaisquer credenciais de longo prazo que você empregue.

## Épicos
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure as AWS credenciais. | Para exportar as variáveis que definem Conta da AWS e Região da AWS onde você está implantando a pilha, execute os seguintes comandos:<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>As AWS credenciais do AWS CDK são fornecidas por meio de variáveis de ambiente. | AWS DevOps, DevOps engenheiro | 
| Clonar o repositório. | Para clonar o repositório em sua máquina local, execute o seguinte comando:<pre>git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git</pre> | AWS DevOps, DevOps engenheiro | 
| Instale o CDK Toolkit. | Para confirmar que o CDK Toolkit está instalado e verificar a versão, execute o seguinte comando: <pre>cdk --version</pre>Se a versão do CDK Toolkit for anterior à 2.27.0, digite o seguinte comando para atualizá-lo para a versão 2.27.0:<pre>npm install -g aws-cdk@2.27.0</pre>Se o CDK Toolkit *não* estiver instalado, execute o seguinte comando para instalá-lo:<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps engenheiro | 
| Instale as dependências necessárias. | Para instalar as dependências necessárias do projeto, execute o seguinte comando:<pre>python -m pip install --upgrade pip<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps engenheiro | 
| Inicialize o ambiente do CDK. | Para [inicializar](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) um ambiente do AWS CDK, execute os seguintes comandos:<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre>Após inicializar com êxito o ambiente, a seguinte saída deve ser exibida:<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre> | AWS DevOps, DevOps engenheiro | 

### Implante a aplicação do CDK.
<a name="deploy-the-cdk-app"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Sintetize o aplicativo. AWS CDK  | Para sintetizar um AWS CDK aplicativo, execute o seguinte comando:<pre>cdk synth</pre>Para obter mais informações sobre esse comando, consulte [cdk synthesize na documentação](https://docs.aws.amazon.com/cdk/v2/guide/ref-cli-cmd-synth.html). AWS CDK  | AWS DevOps, DevOps engenheiro | 
| Implantar os recursos | Para implantar os recursos, execute o seguinte comando:<pre>cdk deploy --require-approval never</pre>A sinalização `--require-approval never` indica que o CDK aprovará e aplicará todas as alterações de forma automática. Isso inclui alterações que o CDK normalmente sinalizaria para revisão manual, como alterações em políticas do IAM ou remoção de recursos. Certifique-se de que o código e o CI/CD pipeline do CDK estejam bem testados e seguros antes de usar a `--require-approval never` bandeira em ambientes de produção. | AWS DevOps, DevOps engenheiro | 

### Crie GitHub segredos e token de acesso pessoal
<a name="create-github-secrets-and-personal-access-token"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie os segredos necessários em GitHub. | Para permitir que os fluxos de trabalho do GitHub Actions acessem AWS recursos com segurança sem expor informações confidenciais no código do seu repositório, crie segredos. Para criar os segredos em GitHub for`ROLE_TO_ASSUME`,, e `CodeGuruReviewArtifactBucketName``AWS_ACCOUNT_ID`, siga as instruções em [Criação de segredos para um repositório](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) na documentação de GitHub Ações.A seguir, apresentamos mais informações sobre as variáveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps engenheiro | 
| Crie um token de acesso GitHub pessoal. | Para configurar uma forma segura de autenticar e interagir com seus fluxos de trabalho do GitHub Actions GitHub, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps engenheiro | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpar os recursos | Para limpar seu aplicativo AWS CDK Python, execute o seguinte comando:<pre>cdk destroy --all</pre> | DevOps engenheiro | 

## Solução de problemas
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Exibir o link para as descobertas do painel. | Não há como imprimir as descobertas durante o CI/CD pipeline. Em vez disso, esse padrão usa GitHub Ações como um método alternativo para manipular e exibir as descobertas. | 

## Recursos relacionados
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-resources"></a>

**AWS recursos**
+ [AWS Kit de desenvolvimento em nuvem](https://aws.amazon.com/cdk/)
+ [ CodeGuru Documentação da Amazon](https://docs.aws.amazon.com/codeguru/)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [AWS Identity and Access Management](https://aws.amazon.com/iam/)
+ [Amazon Simple Queue Service](https://aws.amazon.com/sqs/)
+ [O que AWS Lambdaé](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

**GitHub documentação**
+ [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [GitHub Ações](https://github.com/features/actions)
+ [Reusing workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows)
+ [Triggering a workflow](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) 

# Automatize a implantação de Cadeia de Suprimentos AWS data lakes em uma configuração de vários repositórios usando GitHub Actions, Artifactory e Terraform
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes"></a>

*Keshav Ganesh, Amazon Web Services*

## Resumo
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-summary"></a>

Esse padrão fornece uma abordagem automatizada para implantar e gerenciar lagos de Cadeia de Suprimentos AWS dados usando uma integração contínua de vários repositórios e uma implantação contínua (recursos). CI/CD) pipeline. It demonstrates two deployment methods: automated deployment using GitHub Actions workflows, or manual deployment using Terraform directly. Both approaches use Terraform for infrastructure as code (IaC), with the automated method adding GitHub Actions and JFrog Artifactory for enhanced CI/CD

A solução utiliza Cadeia de Suprimentos AWS o Amazon Simple Storage Service (Amazon S3) para estabelecer a infraestrutura do data lake, enquanto usa qualquer um dos métodos de implantação para automatizar a configuração e a criação de recursos. AWS Lambda Essa automação elimina as etapas de configuração manual e garante implantações consistentes em todos os ambientes. Além disso, Cadeia de Suprimentos AWS elimina a necessidade de uma profunda experiência em extração, transformação e carregamento (ETL) e pode fornecer informações e análises baseadas no Amazon Quick Sight.

Ao implementar esse padrão, as organizações podem reduzir o tempo de implantação, manter a infraestrutura como código e gerenciar os data lakes da cadeia de suprimentos por meio de um processo automatizado e controlado por versão. A abordagem de vários repositórios fornece controle de acesso refinado e oferece suporte à implantação independente de diferentes componentes. As equipes podem escolher o método de implantação mais adequado às ferramentas e aos processos existentes.

## Pré-requisitos e limitações
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs"></a>

**Pré-requisitos **

Certifique-se de que o seguinte esteja instalado em sua máquina local:
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) versão 2
+ [GitHub CLI](https://docs.github.com/en/get-started/git-basics/set-up-git)
+ [Python v3.13](https://www.python.org/downloads/)
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) v1.12 ou posterior

Certifique-se de que o seguinte esteja em vigor antes da implantação:
+ Um ativo Conta da AWS.
+ Uma [nuvem privada virtual (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) com duas [sub-redes privadas na área](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) de sua Conta da AWS escolha. Região da AWS 
+ Permissões suficientes para a função AWS Identity and Access Management (IAM) usada para implantação nos seguintes serviços:
  + Cadeia de Suprimentos AWS — O Full Access é o preferido para implantar seus componentes, como conjuntos de dados e fluxos de integração, além de acessá-los a partir do. Console de gerenciamento da AWS
  + Amazon CloudWatch Logs — Para criar e gerenciar grupos de CloudWatch registros.
  + Amazon Elastic Compute Cloud (Amazon EC2) — Para grupos de segurança do Amazon EC2 e endpoints do Amazon Virtual Private Cloud (Amazon VPC).
  + Amazon EventBridge — Para uso por Cadeia de Suprimentos AWS.
  + IAM — Para criar funções AWS Lambda de serviço.
  + AWS Key Management Service (AWS KMS) — Para acessar o AWS KMS keys usado para o bucket de artefatos do Amazon S3 e o bucket de armazenamento do Amazon S3. Cadeia de Suprimentos AWS 
  + AWS Lambda — Para criar as funções Lambda que implantam os Cadeia de Suprimentos AWS componentes.
  + Amazon S3 — Para acessar o bucket de artefatos do Amazon S3, o bucket de registro de acesso ao servidor e o bucket de armazenamento. Cadeia de Suprimentos AWS Se você estiver usando a implantação manual, as permissões para o bucket de artefatos do Amazon S3 Terraform também são necessárias.
  + Amazon VPC — Para criar e gerenciar uma VPC.

Se você preferir usar fluxos de trabalho do GitHub Actions para implantação, faça o seguinte:
+ Configure o [OpenID Connect (OIDC)](https://docs.github.com/en/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws#configuring-the-role-and-trust-policy) para a função do IAM com as permissões mencionadas anteriormente.
+ Crie uma função do IAM com permissões semelhantes para acessar Console de gerenciamento da AWS o. Para obter mais informações, consulte [Criar um papel para dar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) na documentação do IAM.

Se você preferir fazer uma implantação manual, faça o seguinte:
+ Crie um usuário do IAM para assumir a função do IAM com as permissões mencionadas anteriormente. Para obter mais informações, consulte [Criar um papel para dar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) na documentação do IAM.
+ [Assuma a função](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-role.html) em seu terminal local.

Se você preferir usar fluxos de trabalho do GitHub Actions para implantação, configure o seguinte:
+ Uma [conta JFrog Artifactory](https://jfrog.com/artifactory/?utm_source=google&utm_medium=cpc_search&utm_campaign=SearchDSKBrandAPACIN202506&utm_term=jfrog%20cloud&gads_network=g&utm_content=u-bin&gads_campaign_id=22674833884&gads_adgroup_id=184501797241&gads_extension_id=233003714635&gads_target_id=aud-312135645780:kwd-1598615735032&gads_matchtype=b&gad_source=1&gad_campaignid=22674833884&gbraid=0AAAAADqV85U5B37iapTR9IIFHBvydF5AQ&gclid=CjwKCAjwiY_GBhBEEiwAFaghvqdNV-odNLZXPHjT7NAwf8lA-QuMtg666hgvDW1oCJ4nn7wvf869_xoCW4IQAvD_BwE) para obter o nome do host, o nome de usuário de login e o token de acesso de login.
+ Uma [chave de JFrog projeto e um repositório](https://jfrog.com/help/r/jfrog-platform-administration-documentation/step-1-set-up-a-new-project) para armazenar artefatos.

**Limitações**
+ A Cadeia de Suprimentos AWS instância não oferece suporte a técnicas complexas de transformação de dados.
+ Cadeia de Suprimentos AWS é mais adequado para domínios da cadeia de suprimentos porque fornece análises e insights integrados. Para qualquer outro domínio, Cadeia de Suprimentos AWS pode ser usado como um armazenamento de dados como parte da arquitetura do data lake.
+ As funções Lambda usadas nessa solução talvez precisem ser aprimoradas para lidar com novas tentativas de API e gerenciamento de memória em uma implantação em escala de produção.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-architecture"></a>

Você pode implantar essa solução usando fluxos de trabalho automatizados de GitHub ações ou manualmente usando o Terraform.

**Implantação automatizada com GitHub ações**

O diagrama a seguir mostra a opção de implantação automatizada que usa fluxos de trabalho de GitHub ações. JFrog Artifactory é usado para gerenciamento de artefatos. Ele armazena informações e saídas de recursos para uso em uma implantação de vários repositórios.

![\[Opção de implantação automatizada que usa fluxos de trabalho de GitHub ações e. JFrog\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/d454a5c5-ed51-421c-a87f-ff74cfcb30be.png)


**Implantação manual com o Terraform**

O diagrama a seguir mostra a opção de implantação manual por meio do Terraform. Em vez de JFrog Artifactory, o Amazon S3 é usado para gerenciamento de artefatos.

![\[Opção de implantação manual usando o Terraform e o Amazon S3.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/1130e728-44d5-4ae7-9586-1e497f54352a.png)


**Fluxo de trabalho de implantação**

O diagrama mostra o seguinte fluxo de trabalho:

1. Implante conjuntos Cadeia de Suprimentos AWS de dados de serviços, infraestrutura e bancos de dados usando um dos seguintes métodos de implantação:
   + **Implantação automatizada** — usa fluxos de trabalho do GitHub Actions para orquestrar todas as etapas de implantação e usa o JFrog Artifactory para gerenciamento de artefatos.
   + **Implantação manual** — executa comandos do Terraform diretamente para cada etapa de implantação e usa o Amazon S3 para gerenciamento de artefatos.

1. Crie os AWS recursos de suporte necessários para a operação Cadeia de Suprimentos AWS do serviço:
   + Endpoints e grupos de segurança da Amazon VPC
   + AWS KMS keys
   + CloudWatch Grupos de registros

1. Crie e implante os seguintes recursos de infraestrutura:
   + Funções Lambda que gerenciam (criam, atualizam e excluem) a instância de Cadeia de Suprimentos AWS serviço, namespaces e conjuntos de dados.
   + Cadeia de Suprimentos AWS preparação do bucket Amazon S3 para ingestão de dados

1. Implante a função Lambda que gerencia os fluxos de integração entre o bucket de preparação e os conjuntos de dados. Cadeia de Suprimentos AWS Após a conclusão da implantação, as etapas restantes do fluxo de trabalho gerenciam a ingestão e a análise de dados.

1. Configure a ingestão de dados de origem no bucket Cadeia de Suprimentos AWS temporário do Amazon S3.

1. Depois que os dados são adicionados ao bucket Cadeia de Suprimentos AWS temporário do Amazon S3, o serviço aciona automaticamente o fluxo de integração para os conjuntos de dados. Cadeia de Suprimentos AWS 

1. Cadeia de Suprimentos AWS se integra ao Quick Sight Analytics para produzir painéis com base nos dados ingeridos.

## Ferramentas
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-tools"></a>

**Serviços da AWS**
+ O [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) ajuda você a centralizar os registros de todos os seus sistemas e aplicativos, Serviços da AWS para que você possa monitorá-los e arquivá-los com segurança.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ O [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) oferece capacidade de computação escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)ajuda você a gerenciar centralmente o acesso de login único (SSO) a todos os seus Contas da AWS aplicativos e à nuvem.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [O Amazon Q](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) in Cadeia de Suprimentos AWS é um assistente interativo de IA generativa que ajuda você a operar sua cadeia de suprimentos com mais eficiência analisando os dados em seu Cadeia de Suprimentos AWS data lake.
+ O [Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) é um serviço de business intelligence (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar dados em um único painel.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ [Cadeia de Suprimentos AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)é um aplicativo gerenciado baseado em nuvem que pode ser usado como armazenamento de dados em organizações para domínios da cadeia de suprimentos, que pode ser usado para gerar insights e realizar análises sobre os dados ingeridos.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS. Um [endpoint Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) é um dispositivo virtual que ajuda você a conectar de forma privada sua VPC ao VPC compatível Serviços da AWS sem exigir um gateway de internet, dispositivo NAT, conexão VPN ou conexão. AWS Direct Connect 

**Outras ferramentas**
+ GitHub O [Actions](https://docs.github.com/en/actions) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.
+ [HashiCorp O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ JFrog O [Artifactory](https://jfrog.com/help/r/jfrog-artifactory-documentation/jfrog-artifactory) fornece end-to-end automação e gerenciamento de binários e artefatos por meio do processo de entrega de aplicativos.
+ [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral. Esse padrão usa Python para que o código da AWS função interaja com Cadeia de Suprimentos AWS

  .

## Práticas recomendadas
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-best-practices"></a>
+ Mantenha o maior nível de segurança possível ao implementar esse padrão. Conforme declarado nos [Pré-requisitos](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs), certifique-se de que uma nuvem [privada virtual (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) com duas [sub-redes privadas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) esteja na área de sua escolha. Conta da AWS Região da AWS 
+ Use [chaves gerenciadas pelo AWS KMS cliente](https://docs.aws.amazon.com/kms/latest/cryptographic-details/basic-concepts.html) sempre que possível e conceda permissões de acesso limitadas a elas.
+ Para configurar funções do IAM com o mínimo de acesso necessário para a ingestão de dados desse padrão, consulte [Ingestão segura de dados dos sistemas de origem para o Amazon S3](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main?tab=readme-ov-file#secure-data-ingestion-from-source-systems-to-amazon-s3) no repositório desse padrão.

## Épicos
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-epics"></a>

### (Ambas as opções) Configurar a estação de trabalho local
<a name="both-options-set-up-local-workstation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o repositório correspondente a este padrão, execute o seguinte comando na estação de trabalho local:<pre>git clone https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment.git<br />cd ASC-Deployment</pre> | AWS DevOps | 
| (Opção automatizada) Verifique os pré-requisitos para implantação. | Certifique-se de que os [pré-requisitos](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) estejam preenchidos para a implantação automatizada. | Proprietário do App | 
| (Opção manual) Prepare-se para a implantação de Cadeia de Suprimentos AWS conjuntos de dados. | Para acessar o `terraform-deployment` diretório de`ASC-Datasets`, execute o seguinte comando:<pre>cd ASC-Datasets/terraform-deployment</pre>Para assumir a função ARN que foi criada nos [Pré-requisitos, execute](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) o seguinte comando:<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Para configurar e exportar as variáveis de ambiente, execute os seguintes comandos:<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Datasets dir name><br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export AWS_USER_ROLE=<Enter user role ARN for AWS Console access and deployment><br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | AWS DevOps | 
| (Opção manual) Prepare-se para gerenciar fluxos de Cadeia de Suprimentos AWS integração na implantação. | Para acessar o `terraform-deployment` diretório de`ASC-Integration-Flows`, execute o seguinte comando:<pre>cd ASC-Integration-Flows/terraform-deployment</pre>Para assumir a função ARN que foi criada anteriormente, execute o seguinte comando:<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Para configurar e exportar as variáveis de ambiente, execute os seguintes comandos:<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Integration Flows dir name><br />export ASC_DATASET_VARS_REPO=<Enter Current ASC Datasets dir name>  #Must be the same directory name used for ASC Datasets deployment<br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | Proprietário do App | 

### (Opção automatizada) Implantar Cadeia de Suprimentos AWS conjuntos de dados usando fluxos de trabalho do GitHub Actions
<a name="automated-option-deploy-supplychain-datasets-using-github-actions-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Copie o `ASC-Datasets` diretório. | Para copiar o `ASC-Datasets` diretório para um novo local, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Configure o `ASC-Datasets` diretório. | Para configurar `ASC-Datasets` como um repositório independente em sua organização, execute os seguintes comandos:<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Datasets standalone repository"<br />git remote add origin <INSERT_ASC_DATASETS_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Configure o nome da ramificação no arquivo de fluxo de trabalho .github. | Configure o nome da ramificação no arquivo do fluxo de trabalho de [implantação](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/asc-datasets.yml), conforme mostrado no exemplo a seguir:<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Proprietário do App | 
| Configure GitHub ambientes e configure os valores do ambiente. | Para configurar GitHub ambientes em sua GitHub organização, use as instruções em [Configurar GitHub ambientes](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-github-environments) no repositório desse padrão.Para configurar [os valores do ambiente](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) nos arquivos do fluxo de trabalho, use as instruções em [Configurar valores do ambiente nos arquivos do fluxo](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) de trabalho no repositório desse padrão. | Proprietário do App | 
| Acione o fluxo de trabalho. | Para enviar suas alterações para sua GitHub organização e acionar o fluxo de trabalho de implantação, execute o seguinte comando:<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Opção automatizada) Implemente fluxos de Cadeia de Suprimentos AWS integração usando fluxos de trabalho de GitHub ações
<a name="automated-option-deploy-supplychain-integration-flows-using-github-actions-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Copie o `ASC-Integration-Flows` diretório. | Para copiar o `ASC-Integration-Flows` diretório para um novo local, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Configure o `ASC-Integration-Flows` diretório. | Para configurar o `ASC-Integration-Flows` diretório como um repositório independente em sua organização, execute os seguintes comandos:<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Integration-Flows standalone repository"<br />git remote add origin <INSERT_ASC_Integration_Flows_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Configure o nome da ramificação no arquivo de fluxo de trabalho .github. | Configure o nome da ramificação no arquivo do fluxo de trabalho de [implantação](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/asc-integration-flows.yml), conforme mostrado no exemplo a seguir:<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Proprietário do App | 
| Configure GitHub ambientes e configure os valores do ambiente. | Para configurar GitHub ambientes em sua GitHub organização, use as instruções em [Configurar GitHub ambientes](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) no repositório desse padrão.Para configurar [os valores do ambiente](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) nos arquivos do fluxo de trabalho, use as instruções em [Configurar valores do ambiente nos arquivos do fluxo](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-environment-values-in-the-workflow-files) de trabalho no repositório desse padrão. | Proprietário do App | 
| Acione o fluxo de trabalho. | Para enviar suas alterações para sua GitHub organização e acionar o fluxo de trabalho de implantação, execute o seguinte comando:<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Opção manual) Implantar Cadeia de Suprimentos AWS conjuntos de dados usando o Terraform
<a name="manual-option-deploy-supplychain-datasets-using-terraform"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Navegue até o diretório `terraform-deployment `. | Para acessar o `terraform-deployment` diretório de`ASC-Datasets`, execute o seguinte comando:<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Configure o bucket Amazon S3 do estado do Terraform. | Para configurar o bucket Amazon S3 do estado do Terraform, use o seguinte script:<pre># Setup terraform bucket<br />chmod +x ../scripts/setup-terraform.sh<br />../scripts/setup-terraform.sh</pre> | AWS DevOps | 
| Configure o bucket Amazon S3 de artefatos do Terraform. | Para configurar o bucket Amazon S3 de artefatos do Terraform, use o seguinte script:<pre># Setup terraform artifacts bucket<br />chmod +x ../scripts/setup-terraform-artifacts-bucket.sh<br />../scripts/setup-terraform-artifacts-bucket.sh</pre> | AWS DevOps | 
| Configure o back-end e a configuração dos provedores do Terraform. | Para configurar o back-end e os provedores do Terraform, use o seguinte script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Gere um plano de implantação. | Para gerar um plano de implantação, execute os seguintes comandos:<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Implante as configurações. | Para implantar as configurações, execute o seguinte comando:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Atualize outras configurações e armazene saídas. | Para atualizar as AWS KMS principais políticas e armazenar as saídas das configurações aplicadas no bucket Amazon S3 de artefatos do Terraform, execute os seguintes comandos:<pre># Update AWS Supply Chain KMS Key policy with the service's requirements<br />chmod +x ../scripts/update-asc-kms-policy.sh<br />../scripts/update-asc-kms-policy.sh<br /></pre><pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy.sh<br />../scripts/update-kms-policy.sh<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Opção manual) Implemente fluxos Cadeia de Suprimentos AWS de integração de serviços usando o Terraform
<a name="manual-option-deploy-supplychain-service-integration-flows-using-terraform"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Navegue até o diretório `terraform-deployment`. | Para acessar o `terraform-deployment` diretório de`ASC-Integration-Flows`, execute o seguinte comando:<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Configure o back-end e a configuração dos provedores do Terraform. | Para definir as configurações do back-end e do provedor do Terraform, use o seguinte script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Gere um plano de implantação. | Para gerar um plano de implantação, execute os comandos a seguir. Esses comandos inicializam seu ambiente Terraform, mesclam variáveis de configuração `ASC-Datasets` com suas configurações existentes do Terraform e geram um plano de implantação.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Implante as configurações. | Para implantar as configurações, execute o seguinte comando:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Atualize outras configurações. | Para atualizar as AWS KMS principais políticas e armazenar as saídas das configurações aplicadas no bucket Amazon S3 de artefatos do Terraform, execute os seguintes comandos:<pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy-through-s3.sh<br />../scripts/update-kms-policy-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Ambas as opções) Ingerir dados
<a name="both-options-ingest-data"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça upload de arquivos CSV de amostra. | Para fazer upload de arquivos CSV de amostra para os conjuntos de dados, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Engenheiro de dados | 

### (Ambas as opções) Configurar o Cadeia de Suprimentos AWS acesso
<a name="both-options-set-up-supplychain-access"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o Cadeia de Suprimentos AWS acesso. | Para configurar o Cadeia de Suprimentos AWS acesso a partir do Console de gerenciamento da AWS, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Proprietário do App | 

### (Opção automatizada) Limpe todos os recursos usando fluxos de trabalho de GitHub ações
<a name="automated-option-clean-up-all-resources-using-github-actions-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Acione o fluxo de trabalho de destruição para recursos de fluxos de integração. | Acione o [fluxo de trabalho de destruição](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/destroy-workflow.yml) `ASC-Integration-Flows` de sua filial de implantação em sua GitHub organização. | AWS DevOps | 
| Acione o fluxo de trabalho de destruição para recursos de conjuntos de dados. | Acione o [fluxo de trabalho de destruição](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/destroy-workflow.yml) `ASC-Datasets` de sua filial de implantação em sua GitHub organização. | AWS DevOps | 

### (Opção manual) Limpe os recursos dos fluxos de Cadeia de Suprimentos AWS integração usando o Terraform
<a name="manual-option-clean-up-resources-of-supplychain-integration-flows-using-terraform"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Navegue até o diretório `terraform-deployment`. | Para acessar o `terraform-deployment` diretório de`ASC-Integration-Flows`, execute o seguinte comando:<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Configure o back-end e a configuração dos provedores do Terraform. | Para configurar o back-end e os provedores do Terraform, use o seguinte script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Gere um plano de destruição da infraestrutura. | Para se preparar para a destruição controlada de sua AWS infraestrutura gerando um plano detalhado de desmontagem, execute os comandos a seguir. O processo inicializa o Terraform, incorpora configurações do Cadeia de Suprimentos AWS conjunto de dados e cria um plano de destruição que você pode revisar antes de executar.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Execute o plano de destruição da infraestrutura. | Para executar a destruição planejada de sua infraestrutura, execute o seguinte comando:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Remova as saídas do Terraform do bucket Amazon S3. | Para remover o arquivo de saída que foi carregado durante a implantação do`ASC-Integration-Flows`, execute o seguinte comando:<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

### (Opção manual) Limpe os recursos dos conjuntos de dados de Cadeia de Suprimentos AWS serviço usando o Terraform
<a name="manual-option-clean-up-resources-of-supplychain-service-datasets-using-terraform"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Navegue até o diretório `terraform-deployment`. | Para acessar o `terraform-deployment` diretório de`ASC-Datasets`, execute o seguinte comando:<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Configure o back-end e a configuração dos provedores do Terraform. | Para configurar o back-end e os provedores do Terraform, use o seguinte script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Gere um plano de destruição da infraestrutura. | Para criar um plano para destruir recursos do Cadeia de Suprimentos AWS conjunto de dados, execute os seguintes comandos:<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Esvazie os buckets do Amazon S3. | Para esvaziar todos os buckets do Amazon S3 (exceto o bucket de registro de acesso ao servidor, que está configurado para`force-destroy`), use o seguinte script:<pre># Delete S3 buckets excluding server access logging bucket<br />chmod +x ../scripts/empty-s3-buckets.sh<br />../scripts/empty-s3-buckets.sh tfplan.out</pre> | AWS DevOps | 
| Execute o plano de destruição da infraestrutura. | Para executar a destruição planejada da sua infraestrutura de Cadeia de Suprimentos AWS conjunto de dados usando o plano gerado, execute o seguinte comando:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Remova as saídas do Terraform do bucket de artefatos do Amazon S3 Terraform. | Para concluir o processo de limpeza, remova o arquivo de saída que foi carregado durante a implantação do `ASC-Datasets` executando o seguinte comando:<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

## Solução de problemas
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Um Cadeia de Suprimentos AWS conjunto de dados ou fluxo de integração não foi implantado corretamente devido a erros Cadeia de Suprimentos AWS internos ou permissões insuficientes do IAM para a função de serviço. | Primeiro, limpe todos os recursos. Em seguida, reimplante os recursos do Cadeia de Suprimentos AWS [conjunto de dados e, em seguida, reimplante os recursos](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/README.md) do fluxo de Cadeia de Suprimentos AWS [integração](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/README.md). | 
| O fluxo de Cadeia de Suprimentos AWS integração não busca os novos arquivos de dados enviados para os Cadeia de Suprimentos AWS conjuntos de dados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | 

## Recursos relacionados
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-resources"></a>

**AWS documentação**
+ [Cadeia de Suprimentos AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)

**Outros recursos**
+ [Entendendo os fluxos de trabalho do GitHub Actions](https://docs.github.com/en/actions/get-started/understand-github-actions) (GitHub documentação)

## Mais informações
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-additional"></a>

Essa solução pode ser replicada para mais conjuntos de dados e pode ser consultada para análises adicionais, por meio de painéis pré-criados fornecidos ou da integração Cadeia de Suprimentos AWS personalizada com o Amazon Quick Sight. Além disso, você pode usar o Amazon Q para fazer perguntas relacionadas à sua Cadeia de Suprimentos AWS instância.

**Analise dados com o Cadeia de Suprimentos AWS Analytics**

Para obter instruções sobre como configurar o Cadeia de Suprimentos AWS Analytics, consulte [Como configurar o Cadeia de Suprimentos AWS Analytics](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/setting_analytics.html) na Cadeia de Suprimentos AWS documentação.

Esse padrão demonstrou a criação dos conjuntos de dados **Calendar** e **Outbound\$1Order\$1Line**. Para criar uma análise que usa esses conjuntos de dados, use as seguintes etapas:

1. Para analisar os conjuntos de dados, use o painel de análise de **sazonalidade.** Para adicionar o painel, siga as etapas em [Painéis pré-criados](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/prebuilt_dashboards.html) na Cadeia de Suprimentos AWS documentação.

1. Escolha o painel para ver sua análise com base em arquivos CSV de amostra para dados do calendário e dados da linha de pedido de saída.

O painel fornece informações sobre a demanda ao longo dos anos com base nos dados ingeridos pelos conjuntos de dados. Você pode especificar ainda mais o ProductID, o CustomerID, os anos e outros parâmetros para análise.

**Use o Amazon Q para fazer perguntas relacionadas à sua Cadeia de Suprimentos AWS instância**

[O Amazon Q in Cadeia de Suprimentos AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) é um assistente interativo de IA generativa que ajuda você a operar sua cadeia de suprimentos com mais eficiência. O Amazon Q pode fazer o seguinte:
+ Analise os dados em seu Cadeia de Suprimentos AWS data lake.
+ Forneça informações operacionais e financeiras.
+ Responda às suas perguntas imediatas sobre a cadeia de suprimentos.

Para obter mais informações sobre o uso do Amazon Q, consulte [Habilitando o Amazon Q in Cadeia de Suprimentos AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/enabling_QinASC.html) e [Usando o Amazon Q Cadeia de Suprimentos AWS in](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/using_QinASC.html) na Cadeia de Suprimentos AWS documentação.

# Automatize a avaliação de recursos da AWS
<a name="automate-aws-resource-assessment"></a>

*Naveen Suthar, Arun Bagal, Manish Garg e Sandeep Gawande, Amazon Web Services*

## Resumo
<a name="automate-aws-resource-assessment-summary"></a>

Esse padrão descreve uma abordagem automatizada para configurar recursos de avaliação de recursos usando o [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html). Ao usar esse padrão, as equipes de operações coletam detalhes de auditoria de recursos de forma automatizada e visualizam os detalhes de todos os recursos implantados em uma conta da AWS em um único painel. Isso é útil nos seguintes casos de uso:
+ Identificação de ferramentas de infraestrutura como código (IaC) e isolamento de recursos criados por diferentes soluções de IaC, como [HashiCorp Terraform](https://www.terraform.io/), [AWS CloudFormation, AWS CDK](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) [e AWS Command Line Interface (AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) CLI)
+ Buscando informações de auditoria de recursos

Essa solução também ajudará a equipe de liderança a obter informações sobre os recursos e as atividades em uma conta da AWS a partir de um único painel. 


| 
| 
| Observação: o [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) é um serviço pago. Antes de executá-lo para analisar dados e criar um painel, revise os [preços do Amazon Quick Sight](https://aws.amazon.com/quicksight/pricing/). | 
| --- |

## Pré-requisitos e limitações
<a name="automate-aws-resource-assessment-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Funções e permissões do AWS Identity and Access Management (IAM) com acesso a recursos de provisionamento
+ [Uma [conta Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) criada com acesso ao [Amazon Simple Storage Service (Amazon S3) e ao Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)
+ AWS CDK versão 2.55.1 ou superior instalado. 
+ [Python](https://www.python.org/downloads/release/python-390/) versão 3.9 ou superior instalado.

**Limitações**
+ Essa solução é implantada em uma única conta da AWS.
+ A solução não rastreará os eventos que aconteceram antes de sua implantação, a menos que a AWS já CloudTrail estivesse configurada e armazenando dados em um bucket S3.

**Versões do produto**
+ AWS CDK versão 2.55.1 ou superior
+ Python, versão 3.9 ou superior.

## Arquitetura
<a name="automate-aws-resource-assessment-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon Athena
+ AWS CloudTrail
+ AWS Glue
+ AWS Lambda
+ Amazon Quick Sight
+ Amazon S3

**Arquitetura de destino**

O código do AWS CDK implantará todos os recursos necessários para configurar recursos de avaliação de recursos em uma conta da AWS. O diagrama a seguir mostra o processo de envio de CloudTrail registros para o AWS Glue, o Amazon Athena e o Quick Sight.

![\[Avaliação de recursos da AWS com AWS Glue, Amazon Athena e Amazon QuickSight em um processo de seis etapas.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a504774e-db7a-4c36-a22c-ce56d252fb58/images/8f2b549d-33a8-4cbf-86fd-33244716b668.png)


1. CloudTrail envia registros para um bucket do S3 para armazenamento.

1. Uma notificação de evento invoca uma função do Lambda que processa os registros e gera dados filtrados.

1. Os dados filtrados são armazenados em outro bucket do S3.

1. Um crawler do AWS Glue é configurado nos dados filtrados que estão no bucket do S3 para criar um esquema na tabela do catálogo de dados do AWS Glue.

1. Os dados filtrados estão prontos para serem consultados pelo Amazon Athena.

1. Os dados consultados são acessados pelo Quick Sight para visualização.

**Automação e escala**
+ Essa solução pode ser escalada de uma conta da AWS para várias contas da AWS se houver uma trilha para toda a organização no CloudTrail AWS Organizations. Ao implantar CloudTrail no nível organizacional, você também pode usar essa solução para obter detalhes de auditoria de recursos para todos os recursos necessários.
+ Esse padrão usa recursos com tecnologia sem servidor da AWS para implantar a solução.

## Ferramentas
<a name="automate-aws-resource-assessment-tools"></a>

**Serviços da AWS**
+ O [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) é um serviço de consultas interativas que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão.
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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.
+  CloudTrailA [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) ajuda você a auditar a governança, a conformidade e o risco operacional da sua conta da AWS.
+ O [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) é um serviço de extração, transformação e carregamento (ETL) totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados. Esse padrão usa um crawler do AWS Glue e uma tabela do Catálogo de Dados do AWS Glue.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) é um serviço de inteligência de negócios (BI) em escala de nuvem que ajuda você a visualizar, analisar e relatar seus dados em um único painel.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Repositório de código**

O código desse padrão está disponível no GitHub [infrastructure-assessment-iac-automation](https://github.com/aws-samples/infrastructure-assessment-iac-automation)repositório.

O repositório de código contém os seguintes arquivos e pastas:
+ Pasta `lib`: o AWS CDK estrutura arquivos Python usados para criar recursos da AWS
+ `src/lambda_code`: o código Python que é executado na função do Lambda
+ `requirements.txt`: a lista de todas as dependências do Python que devem ser instaladas
+ `cdk.json`: o arquivo de entrada para fornecer os valores necessários para gerar recursos

## Práticas recomendadas
<a name="automate-aws-resource-assessment-best-practices"></a>

Configure o monitoramento e o alerta para a função do Lambda. Para obter mais informações, consulte [Monitorar e solucionar problemas de funções do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Para obter as melhores práticas gerais ao trabalhar com funções do Lambda, consulte a [documentação da AWS](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Épicos
<a name="automate-aws-resource-assessment-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório na sua máquina local. | Para clonar o repositório, execute o comando `git clone https://github.com/aws-samples/infrastructure-assessment-iac-automation.git`. | AWS DevOps, DevOps engenheiro | 
| Configurar o ambiente virtual Python e instalar as dependências necessárias. | Para ativar o ambiente virtual do Python, execute os comandos a seguir.<pre>cd infrastructure-assessment-iac-automation<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Execute o comando `pip install -r requirements.txt` para configurar as dependências necessárias. | AWS DevOps, DevOps engenheiro | 
| Configure o ambiente do AWS CDK e sintetize o código do AWS CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps engenheiro | 

### Configurar credenciais da AWS na sua máquina local
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exporte variáveis para a conta e a região em que a pilha será implantada. | Para fornecer credenciais da AWS para o AWS CDK usando variáveis de ambiente, execute os seguintes comandos.<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | AWS DevOps, DevOps engenheiro | 
| Configurar o perfil da AWS CLI. | Para configurar o perfil da AWS CLI para a conta, siga as instruções na [documentação da AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html). | AWS DevOps, DevOps engenheiro | 

### Configurar e implantar a ferramenta de avaliação de recursos
<a name="configure-and-deploy-the-resource-assessment-tool"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante recursos na conta. | Para implantar recursos na conta da AWS usando o AWS CDK, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps | 
| Execute o AWS Glue Crawler e crie a tabela do Data Catalog. | Um [AWS Glue Crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) é usado para manter o esquema de dados dinâmico. A solução cria e atualiza partições na [tabela do catálogo de dados do AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html) executando o rastreador periodicamente, conforme definido pelo programador do AWS Glue Crawler. Depois que os dados estiverem disponíveis no bucket S3 de saída, use as etapas a seguir para executar o crawler AWS Glue e criar o esquema da tabela do catálogo de dados para teste:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)O código do AWS CDK configura o crawler do AWS Glue para ser executado em um horário específico, mas você também pode executá-lo sob demanda. | AWS DevOps, DevOps engenheiro | 
| Implante a construção Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps engenheiro | 
| Crie o painel do Quick Sight. | Para criar o exemplo de painel e análise do Quick Sight, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)Para obter mais informações, consulte [Iniciando uma análise no Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/creating-an-analysis.html) e [Tipos visuais no Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/working-with-visual-types.html). | AWS DevOps, DevOps engenheiro | 

### Limpe todos os recursos da AWS na solução
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Remova os recursos da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps engenheiro | 

### Configure recursos adicionais além da automação da ferramenta de avaliação de recursos da AWS
<a name="set-up-additional-features-on-top-of-the-aws-resource-assessment-tool-automation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Monitore e limpe os recursos criados manualmente. | (Opcional) Se sua organização tem requisitos de conformidade para criar recursos usando ferramentas de IaC, você pode alcançar a conformidade usando a automação da ferramenta de avaliação de recursos da AWS para buscar recursos provisionados manualmente. Você também pode usar a ferramenta para importar os recursos para uma ferramenta IaC ou para recriá-los. Execute as seguintes tarefas de alto nível para monitorar recursos provisionados manualmente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps engenheiro | 

## Solução de problemas
<a name="automate-aws-resource-assessment-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O AWS CDK retorna erros. | Para obter ajuda com problemas do AWS CDK, consulte [Solução de problemas comuns do AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 

## Recursos relacionados
<a name="automate-aws-resource-assessment-resources"></a>
+ [Criar funções do Lambda com Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Comece a usar o AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Trabalhando com o AWS CDK no Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Criando uma trilha CloudTrail de toras](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Comece a usar o Amazon Quick Sight](https://aws.amazon.com/quicksight/getting-started/)

## Mais informações
<a name="automate-aws-resource-assessment-additional"></a>

**Várias contas**

Para configurar a credencial da AWS CLI para várias contas, use os perfis da AWS. Para obter mais informações, consulte a seção *Configurar vários perfis* em [Configurar a AWS CLI](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/).

**Comandos do AWS CDK**

Ao trabalhar com o AWS CDK, lembre-se dos seguintes comandos úteis:
+ Lista todas as pilhas no aplicativo

  ```
  cdk ls
  ```
+ Emite o modelo sintetizado da AWS CloudFormation 

  ```
  cdk synth
  ```
+ Implanta a pilha na sua conta e região padrão da AWS

  ```
  cdk deploy
  ```
+ Compara a pilha implantada com o estado atual

  ```
  cdk diff
  ```
+ Abre a documentação do AWS CDK

  ```
  cdk docs
  ```

# Instale sistemas SAP automaticamente usando ferramentas de código aberto
<a name="install-sap-systems-automatically-by-using-open-source-tools"></a>

*Guilherme Sesterheim, Amazon Web Services*

## Resumo
<a name="install-sap-systems-automatically-by-using-open-source-tools-summary"></a>

Esse padrão mostra como automatizar a instalação de sistemas SAP usando ferramentas de código aberto para criar os seguintes recursos:
+ Um banco de dados SAP S/4HANA 1909
+ Uma instância do SAP ABAP Central Services (ASCS)
+ Uma instância do Servidor de aplicações principal (PAS)

HashiCorp O Terraform cria a infraestrutura do sistema SAP e o Ansible configura o sistema operacional (OS) e instala os aplicativos SAP. O Jenkins executa a instalação.

Essa configuração transforma a instalação de sistemas SAP em um processo repetível, o que pode ajudar a aumentar a eficiência e a qualidade da implantação.

**nota**  
O código de exemplo fornecido neste padrão funciona tanto para sistemas de alta disponibilidade (HA, na sigla em inglês) quanto para sistemas que não contam com HA.

## Pré-requisitos e limitações
<a name="install-sap-systems-automatically-by-using-open-source-tools-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket do Amazon Simple Storage Service (Amazon S3) que contém todos os seus arquivos de mídia do SAP.
+ Uma entidade principal do AWS Identity and Access Management (IAM) com uma [chave de acesso e uma chave secreta](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) e que tem as seguintes permissões:
  + **Permissões somente leitura:** Amazon Route 53, AWS Key Management Service (AWS KMS)
  + **Permissões de leitura e gravação:** Amazon S3, Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic File System (Amazon EFS), IAM, Amazon, Amazon CloudWatch DynamoDB
+ Uma [zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) do Route 53
+ Uma assinatura do [Red Hat Enterprise Linux for SAP com HA e Update Services 8.2](https://aws.amazon.com/marketplace/pp/prodview-5grz5a5thx7c2) Imagem de máquina da Amazon (AMI) no Amazon Marketplace
+ Uma [chave gerenciada pelo cliente do AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#aws-managed-customer-managed-keys)
+ Um [par de chaves do Secure Shell (SSH)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+ **Um [grupo EC2 de segurança da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) que permite a conexão SSH na porta 22 a partir do nome do host em que você instala o Jenkins (o nome do host provavelmente é localhost)**
+ [Vagrant](https://www.vagrantup.com/) por HashiCorp instalado e configurado
+ [VirtualBox](https://www.virtualbox.org/)instalado e configurado pela Oracle
+ Familiaridade com Git, Terraform, Ansible e Jenkins

**Limitações**
+ Somente o SAP S/4HANA 1909 é totalmente testado para esse cenário específico. O exemplo de código Ansible nesse padrão requer modificação se você usar outra versão do SAP HANA.
+ O procedimento de exemplo nesse padrão funciona para sistemas operacionais Mac OS e Linux. Alguns dos comandos podem ser executados somente em terminais baseados em UNIX. No entanto, você pode obter um resultado semelhante usando comandos diferentes e um sistema operacional Windows.

**Versões do produto**
+ SAP S/4HANA 1909
+ Red Hat Enterprise Linux (RHEL) versão 8.2 ou superior

## Arquitetura
<a name="install-sap-systems-automatically-by-using-open-source-tools-architecture"></a>

O diagrama a seguir mostra um exemplo de fluxo de trabalho que usa ferramentas de código aberto para automatizar a instalação de sistemas SAP em uma conta da AWS:

![\[O fluxo de trabalho de exemplo usa ferramentas de código aberto para automatizar a instalação de sistemas SAP em uma conta da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/aaf11dac-38cc-4e89-be86-51d4409cf238/images/d7902f9d-f1be-461f-b69b-cf3c663c8f2f.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. O Jenkins coordena a execução da instalação do sistema SAP executando o código do Terraform e do Ansible.

1. O código do Terraform cria a infraestrutura do sistema SAP.

1. O código Ansible configura o sistema operacional e instala aplicativos SAP.

1. Um banco de dados SAP S/4HANA 1909, uma instância ASCS e uma instância PAS que incluem todos os pré-requisitos definidos são instalados em uma instância da Amazon. EC2 

**nota**  
A configuração de exemplo neste padrão cria um bucket do Amazon S3 automaticamente em sua conta da AWS para armazenar o arquivo de estado do Terraform.

**Pilha de tecnologia**
+ Terraform
+ Ansible
+ Jenkins
+ Um banco de dados SAP S/4HANA 1909
+ Uma instância do SAP ASCS
+ Uma instância do SAP PAS
+ Amazon EC2 

## Ferramentas
<a name="install-sap-systems-automatically-by-using-open-source-tools-tools"></a>

**Serviços da AWS**
+ [A Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) fornece capacidade de computação escalável na Nuvem AWS. Você pode iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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 Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

**Outras ferramentas**
+ [HashiCorp O Terraform](https://www.terraform.io/docs) é um aplicativo de interface de linha de comando que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.
+ O [Ansible](https://www.ansible.com/) é uma ferramenta de código aberto de configuração como código (CaC) que ajuda a automatizar aplicativos, configurações e infraestrutura de TI.
+ [Jenkins](https://www.jenkins.io/): é um servidor de automação de código aberto que permite aos desenvolvedores construir, testar e implantar seu software.

**Código **

O código desse padrão está disponível no repositório GitHub [aws-install-sap-with-jenkins-ansible](https://github.com/aws-samples/aws-install-sap-with-jenkins-ansible).

## Épicos
<a name="install-sap-systems-automatically-by-using-open-source-tools-epics"></a>

### Configurar os pré-requisitos
<a name="configure-the-prerequisites"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione seus arquivos de mídia SAP a um bucket do Amazon S3. | [Crie um bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) que contenha todos os arquivos de mídia do SAP.Certifique-se de seguir a hierarquia de pastas do AWS Launch Wizard para **S/4HANA** conforme apresentado na [documentação do Launch Wizard](https://docs.aws.amazon.com/launchwizard/latest/userguide/launch-wizard-sap-software-install-details.html). | Administrador de nuvem | 
| Instalar VirtualBox. | Instale e configure [VirtualBox](https://www.virtualbox.org/)pela Oracle. | DevOps engenheiro | 
| Instale o Vagrant. | Instale e configure o [Vagrant by.](https://www.vagrantup.com/) HashiCorp | DevOps engenheiro | 
| Configure sua conta da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html) | AWS geral | 

### Compile e execute a instalação do SAP
<a name="build-and-run-your-sap-installation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório de código de. GitHub | Clone o repositório [aws-install-sap-with-jenkins-ansible](https://github.com/aws-samples/aws-install-sap-with-jenkins-ansible) em. GitHub | DevOps engenheiro | 
| Inicie o serviço do Jenkins. | Abra o terminal do Linux. Em seguida, navegue até a pasta local que contém a pasta do repositório de código clonado e execute o seguinte comando:<pre>sudo vagrant up</pre>O tempo de inicialização do Jenkins é de aproximadamente 20 minutos. O comando retorna uma mensagem de **serviço ativo e em execução** quando bem-sucedido. | DevOps engenheiro | 
| Abra o Jenkins em um navegador da Web e faça login. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html) | DevOps engenheiro | 
| Configure os parâmetros de instalação do sistema SAP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)É possível configurar os outros parâmetros não obrigatórios conforme necessário, com base no seu caso de uso. Por exemplo, você pode alterar o ID do sistema SAP (SID) das instâncias, a senha padrão, os nomes e as tags do seu sistema SAP. Todas as variáveis obrigatórias têm **(Obrigatório)** no início de seus nomes. | Administrador de sistemas e DevOps engenheiro da AWS | 
| Execute a instalação do sistema SAP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)Para obter informações sobre as etapas do pipeline, consulte a seção **Entendendo as etapas do pipeline** de [Automatização da instalação do SAP com ferramentas de código aberto](https://aws.amazon.com/blogs/awsforsap/automating-sap-installation-with-open-source-tools/) no blog da AWS.Se ocorrer um erro, posicione o cursor sobre a caixa de erro vermelha que aparecer e selecione **Logs**. Os logs da etapa do pipeline que apresentou um erro são exibidos. A maioria dos erros ocorre devido a configurações de parâmetros incorretas. | DevOps engenheiro, administrador de sistemas da AWS | 

## Recursos relacionados
<a name="install-sap-systems-automatically-by-using-open-source-tools-resources"></a>
+ [DevOps para SAP — Instalação do SAP: de 2 meses a 2 horas](https://videos.itrevolution.com/watch/707351918/) (Biblioteca de vídeos do DevOps Enterprise Summit)

# Automatize o portfólio e a implantação de produtos do AWS Service Catalog usando o AWS CDK
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk"></a>

*Sandeep Gawande, Viyoma Sachdeva e RAJNEESH TYAGI, Amazon Web Services*

## Resumo
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-summary"></a>

O AWS Service Catalog ajuda você a gerenciar centralmente catálogos de serviços ou *produtos* de TI aprovados para uso no ambiente da AWS da sua organização. Uma coleção de produtos é chamada de *portfólio*, e um portfólio também contém informações de configuração. Com o AWS Service Catalog, você pode criar um portfólio personalizado para cada tipo de usuário em sua organização e, então, conceder acesso de modo seletivo ao portfólio adequado. Esses usuários podem então implantar rapidamente qualquer produto de que precisem dentro do portfólio.

Se você tiver uma infraestrutura de rede complexa, como arquiteturas multirregião de várias contas, é recomendável criar e gerenciar portfólios do Service Catalog em uma única conta central. Esse padrão descreve como usar o AWS Cloud Development Kit (AWS CDK) para automatizar a criação de portfólios do Service Catalog em uma conta central, conceder aos usuários finais acesso a eles e, opcionalmente, provisionar produtos em uma ou mais contas de destino da AWS. Essa ready-to-use solução cria os portfólios do Service Catalog na conta de origem. Opcionalmente, também provisiona produtos em contas de destino usando CloudFormation pilhas da AWS e ajuda você a configurar TagOptions os produtos:
+ **AWS CloudFormation StackSets** — Você pode usar StackSets para lançar produtos do Service Catalog em várias regiões e contas da AWS. Nessa solução, você tem a opção de provisionar produtos automaticamente ao implantar essa solução. Para obter mais informações, consulte Como [usar a AWS CloudFormation StackSets](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/using-stacksets.html) (documentação do Service Catalog) e [StackSets conceitos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation documentação).
+ **TagOption biblioteca** — você pode gerenciar tags em produtos provisionados usando TagOption a biblioteca. A *TagOption*é um par de valores-chave gerenciado no AWS Service Catalog. Não é uma tag da AWS, mas serve como um modelo para criar uma tag da AWS com base na TagOption. Para obter mais informações, consulte a [TagOption biblioteca](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/tagoptions.html) (documentação do Service Catalog).

## Pré-requisitos e limitações
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da AWS que você deseja usar como a conta de origem para administrar os portfólios do Service Catalog.
+ Se você estiver usando essa solução para provisionar produtos em uma ou mais contas de destino, a conta de destino já deverá existir e estar ativa.
+ Permissões do AWS Identity and Access Management (IAM) para acessar o AWS Service Catalog, o AWS CloudFormation e o AWS IAM.

**Versões do produto**
+ AWS CDK versão 2.27.0

## Arquitetura
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-architecture"></a>

**Pilha de tecnologias de destino**
+ Portfólios do Service Catalog em uma conta centralizada da AWS
+ Produtos do Service Catalog implantados na conta de destino

**Arquitetura de destino**

![\[O AWS CDK cria portfólios do Service Catalog e fornece produtos na conta de destino.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e8f217a7-aec4-4c85-8f6b-f91995506be0/images/1f027b82-14c3-485a-909b-1544e974b90a.png)


1. Na conta do portfólio (ou *origem*), você atualiza o arquivo **config.json** com a conta da AWS, a região da AWS, o perfil do IAM, o portfólio e as informações do produto para seu caso de uso.

1. Você implanta o aplicativo AWS CDK.

1. O aplicativo AWS CDK assume o perfil de implantação do IAM e cria os portfólios e produtos do Service Catalog definidos no arquivo **config.json**.

   Se você configurou StackSets para implantar produtos em uma conta de destino, o processo continua. Se você não configurou StackSets para provisionar nenhum produto, o processo está concluído.

1. **O aplicativo AWS CDK assume a função de **StackSet administrador** e implanta o conjunto de CloudFormation pilhas da AWS que você definiu no arquivo config.json.**

1. Na conta-alvo, StackSets assume a função de **StackSet execução** e provisiona os produtos.

## Ferramentas
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-tools"></a>

**Serviços da AWS**
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+ [O AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) é um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu aplicativo AWS CDK.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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 Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) ajuda você a gerenciar de modo centralizado os catálogos de serviços de TI aprovados para a AWS. Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.

**Repositório de código**

O código desse padrão está disponível em GitHub, no [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git)repositório. O repositório de código contém os seguintes arquivos e pastas:
+ **cdk-sevicecatalog-app**— Essa pasta contém o aplicativo AWS CDK para essa solução.
+ **config** — Essa pasta contém o arquivo **config.json** e o CloudFormation modelo para implantar os produtos no portfólio do Service Catalog.
+ **config/config.json**: esse arquivo contém todas as informações de configuração. Você atualiza esse arquivo para personalizar essa solução para seu caso de uso.
+ **config/templates** — Essa pasta contém os CloudFormation modelos dos produtos do Service Center.
+ **setup.sh**: esse script implanta a solução.
+ **uninstall.sh**: esse script exclui a pilha e todos os recursos da AWS criados ao implantar essa solução.

Para usar o código de amostra, siga as instruções na seção [Épicos](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics).

## Práticas recomendadas
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-best-practices"></a>
+ As funções do IAM usadas para implantar essa solução devem seguir o [princípio do privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) (documentação do IAM).
+ Siga as [melhores práticas para desenvolver aplicativos em nuvem com o AWS CDK](https://aws.amazon.com/blogs/devops/best-practices-for-developing-cloud-applications-with-aws-cdk/) (postagem no blog da AWS).
+ Siga as [ CloudFormation melhores práticas da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html) (CloudFormation documentação).

## Épicos
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale o AWS CDK Toolkit. | Verifique se você tem o AWS CDK Toolkit instalado. Digite o comando a seguir para confirmar se ele está instalado e verificar a versão. <pre>cdk --version</pre>Se o AWS CDK Toolkit ainda não estiver instalado, insira o comando a seguir para instalá-lo.<pre>npm install -g aws-cdk@2.27.0</pre>Se a versão do AWS CDK Toolkit for anterior à 2.27.0, digite o comando a seguir para atualizá-la para a versão 2.27.0.<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps engenheiro | 
| Clonar o repositório. | Insira o comando da a seguir. Em *Clonar o repositório* na seção [Informações adicionais](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional), você pode copiar o comando completo contendo a URL do repositório. Isso clona o [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation)repositório de. GitHub<pre>git clone <repository-URL>.git</pre>Isso cria uma pasta `cd aws-cdk-servicecatalog-automation` no diretório de destino. Para navegar até essa pasta, insira o comando a seguir.<pre>cd aws-cdk-servicecatalog-automation</pre> | AWS DevOps, DevOps engenheiro | 
| Configurar credenciais da AWS. | Insira os comandos a seguir. Eles exportam as seguintes variáveis, que definem a conta da AWS e a região em que você está implantando a pilha.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>As credenciais da AWS para o AWS CDK são fornecidas por meio de variáveis de ambiente. | AWS DevOps, DevOps engenheiro | 
| Configurar permissões de usuário usando perfis do IAM. | Se você for usar funções do IAM para conceder acesso ao portfólio e aos produtos nele contidos, as funções devem ter permissões para serem assumidas pela entidade principal de serviço **servicecatalog.amazonaws.com**. Para obter instruções sobre como conceder essas permissões, consulte [Habilitar o acesso confiável com o Service Catalog](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-servicecatalog.html#integrate-enable-ta-servicecatalog) (documentação do AWS Organizations). | AWS DevOps, DevOps engenheiro | 
| Configure as funções do IAM exigidas pelo StackSets. | Se você estiver usando StackSets para provisionar produtos automaticamente nas contas de destino, precisará configurar as funções do IAM que administram e executam o conjunto de pilhas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS DevOps, DevOps engenheiro | 

### Personalize e implante a solução
<a name="customize-and-deploy-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie os CloudFormation modelos. | Na `config/templates` pasta, crie CloudFormation modelos para qualquer produto que você queira incluir em seus portfólios. Para obter mais informações, consulte Como [trabalhar com CloudFormation modelos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) (CloudFormation documentação). | Desenvolvedor de aplicativos, AWS DevOps, DevOps engenheiro | 
| Personalize o arquivo de configuração. | Na pasta `config`, abra o arquivo **config.json** e defina os parâmetros conforme apropriado para seu caso de uso. Os seguintes parâmetros são obrigatórios, salvo indicação em contrário:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Para ver um exemplo de um arquivo de configuração completo, consulte *Exemplo de arquivo de configuração* na seção [Informações adicionais](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional). | Desenvolvedor de aplicativos, DevOps engenheiro, AWS DevOps | 
| Implante a solução. | Insira o comando da a seguir. **Isso implanta o aplicativo AWS CDK e provisiona os portfólios e produtos do Service Catalog conforme especificado no arquivo config.json**.<pre>sh +x setup.sh</pre> | Desenvolvedor de aplicativos, DevOps engenheiro, AWS DevOps | 
| Verificar a implantação. | Verifique a implantação bem-sucedida fazendo o seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS geral | 
| (Opcional) Atualize os portfólios e os produtos. | Se você quiser usar essa solução para atualizar os portfólios ou produtos ou para provisionar novos produtos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Por exemplo, você pode adicionar mais portfólios ou provisionar mais recursos. O aplicativo AWS CDK implementa somente as alterações. Se não houver alterações nos portfólios ou produtos implantados anteriormente, a reimplantação não os afetará. | Desenvolvedor de aplicativos, DevOps engenheiro, AWS geral | 

### Limpe a solução
<a name="clean-up-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| (Opcional) Remova os recursos da AWS implantados por essa solução. | Se você quiser excluir um produto provisionado, siga as instruções em [Excluindo produtos provisionados](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) (documentação do Service Catalog).Para excluir todos os recursos criados por essa solução, insira o comando a seguir.<pre>sh uninstall.sh</pre> | AWS DevOps, DevOps engenheiro, desenvolvedor de aplicativos | 

## Recursos relacionados
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-resources"></a>
+ [Biblioteca de estrutura do AWS Service Catalog](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog-readme.html) (referência do AWS API )
+ [StackSets conceitos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation documentação)
+ [AWS Service Catalog](https://aws.amazon.com/servicecatalog) (marketing da AWS)
+ [Usando o Service Catalog com o AWS CDK](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US/4-builders-devs/sc-cdk) (workshop da AWS)

## Mais informações
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional"></a>

**Clonar o repositório**

Digite o comando a seguir para clonar o repositório. GitHub

```
git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git
```

**Arquivo de configuração de amostra**

Veja a seguir um exemplo de arquivo **config.json** com valores de exemplo.

```
{
    "portfolios": [
        {
            "displayName": "EC2 Product Portfolio",
            "providerName": "User1",
            "description": "Test1",
            "roles": [
                "<Names of IAM roles that can access the products>"
            ],
            "users": [
                "<Names of IAM users who can access the products>"
            ],
            "groups": [
                "<Names of IAM user groups that can access the products>"
            ]
        },
        {
            "displayName": "Autoscaling Product Portfolio",
            "providerName": "User2",
            "description": "Test2",
            "roles": [
                "<Name of IAM role>"
            ]
        }
    ],
    "tagOption": [
        {
            "key": "Group",
            "value": [
                "finance",
                "engineering",
                "marketing",
                "research"
            ]
        },
        {
            "key": "CostCenter",
            "value": [
                "01",
                "02",
                "03",
                "04"
            ]
        },
        {
            "key": "Environment",
            "value": [
                "dev",
                "prod",
                "stage"
            ]
        }
    ],
    "products": [
        {
            "portfolioName": "EC2 Product Profile",
            "productName": "Ec2",
            "owner": "owner1",
            "productVersionName": "v1",
            "templatePath": "../../config/templates/template1.json"
        },
        {
            "portfolioName": "Autoscaling Product Profile",
            "productName": "autoscaling",
            "owner": "owner1",
            "productVersionName": "v1",
            "templatePath": "../../config/templates/template2.json",
            "deployWithStackSets": {
                "accounts": [
                    "012345678901",
                ],
                "regions": [
                    "us-west-2"
                ],
                "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole",
                "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole"
            }
        }
    ]
}
```

# Automatize o gerenciamento dinâmico de pipelines para implantar soluções de hotfix em ambientes Gitflow usando e AWS Service Catalog AWS CodePipeline
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions"></a>

*Balaji Vedagiri, Faisal Shahdad, Shanmugam Shanker e Vivek Thangamuthu, Amazon Web Services*

## Resumo
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-summary"></a>

**nota**  
AWS CodeCommit não está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

Este padrão aborda um cenário de gerenciamento de um pipeline dinâmico de hotfix dedicado exclusivamente à implantação segura de soluções de hotfix em um ambiente de produção. A solução é implementada e gerenciada usando um AWS Service Catalog portfólio e um produto. Uma EventBridge regra da Amazon é usada para automação de eventos. As restrições são aplicadas usando as restrições do portfólio do Service Catalog e os perfis do AWS Identity and Access Management (IAM) para desenvolvedores. Somente uma AWS Lambda função tem permissão para iniciar o produto Service Catalog, acionada pela EventBridge regra. Este padrão foi projetado para ambientes com uma configuração específica do Gitflow, descrita em [Informações adicionais](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional).

Normalmente, um hotfix é implantado para resolver problemas críticos ou de segurança relatados em um ambiente ativo, como de produção. Os hotfixes devem ser implantados diretamente somente nos ambientes de preparação e produção. Os pipelines de preparação e produção são usados extensivamente para solicitações regulares de desenvolvimento. Esses pipelines não podem ser usados para implantar hotfixes porque há atributos contínuos de garantia de qualidade que não podem ser promovidos à produção. Para lançar hotfixes, este padrão descreve um pipeline dinâmico e de curta duração com os seguintes atributos de segurança:
+ **Criação automática** — Um pipeline de hotfix é criado automaticamente sempre que uma ramificação de hotfix é criada em um AWS CodeCommit repositório. 
+ **Restrições de acesso**: os desenvolvedores não têm acesso para criar esse pipeline fora do processo de hotfix. 
+ **Estágio controlado**: o pipeline tem um estágio controlado com um token de acesso especial, garantindo que uma solicitação de pull (PR) só possa ser criada uma vez. 
+ **Estágios de aprovação**: os estágios de aprovação são incluídos no pipeline para obter as aprovações necessárias das partes interessadas relevantes. 
+ **Exclusão automática** — O pipeline de hotfix é excluído automaticamente sempre que uma `hotfix` ramificação é excluída no CodeCommit repositório após ser mesclada com um PR. 

## Pré-requisitos e limitações
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**Pré-requisitos **
+  Contas da AWS São necessários três ativos da seguinte forma:
  + Conta de ferramentas: para a configuração de integração contínua e entrega contínua (CI/CD).
  + Conta de preparação: para testes de aceitação do usuário.
  + Conta de produção: para um usuário final comercial.
  + (Opcional) Adicione uma Conta da AWS para atuar como uma conta de controle de qualidade. Essa conta é necessária se você quiser uma configuração de pipeline principal, incluindo controle de qualidade, e uma solução de pipeline de hotfix para testes.
+ Uma AWS CloudFormation pilha com uma condição opcional para ser implantada na conta de controle de qualidade usando o pipeline principal, se necessário. O padrão ainda pode ser testado sem a configuração do pipeline principal, criando e excluindo uma ramificação `hotfix`.
+ Um bucket do Amazon Simple Storage Service (Amazon S3) para armazenar CloudFormation os modelos usados para criar produtos do Service Catalog.
+ Crie regras de aprovação de relações públicas para o CodeCommit repositório de acordo com os requisitos de conformidade (depois de criar o repositório).
+ Restrinja as permissões do IAM de desenvolvedores e líderes de equipe para negar a execução da função do Lambda [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55), pois ela deve ser invocada somente pelo pipeline.

**Limitações**
+ O CloudFormation provedor é usado no estágio de implantação e o aplicativo é implantado usando um conjunto de CloudFormation alterações. Se você quiser usar uma opção de implantação diferente, modifique a CodePipeline pilha conforme necessário.
+ Esse padrão usa outros arquivos AWS CodeBuild de configuração para implantar um microsserviço de amostra. Se você tiver um tipo de workload diferente (por exemplo, workloads com tecnologia sem servidor), deverá atualizar todas as configurações relevantes.
+ Esse padrão implanta o aplicativo em um único lado Região da AWS (por exemplo, Leste dos EUA (Norte da Virgínia) us-east-1). Contas da AWS Para implantar em várias regiões, altere a referência da região em comandos e pilhas.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-architecture"></a>

Os diagramas nesta seção fornecem fluxos de trabalho para um evento do ciclo de vida de criação e para um evento do ciclo de vida de exclusão.

![\[Fluxo de trabalho para criar um evento de ciclo de vida.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


O diagrama anterior para criar um evento de ciclo de vida mostra o seguinte:

1. O desenvolvedor cria uma `hotfix-*` ramificação no CodeCommit repositório para desenvolver uma solução relacionada ao hotfix.

1. O evento de criação da `hotfix-*` ramificação é capturado por meio da EventBridge regra. Os detalhes do evento incluem o nome do repositório e o nome da ramificação.

1. A EventBridge regra invoca a AWS Lambda função. `hotfix-lambda-function` A EventBridge regra passa as informações do evento para a função Lambda como entrada.

1. A função do Lambda processa a entrada para recuperar o nome do repositório e o nome da ramificação. Ele lança o produto do Service Catalog com valores recuperados da entrada processada.

1. O produto do Service Catalog inclui uma configuração de pipeline que implantará a solução nos ambientes de preparação e produção. O bloco de pipeline inclui estágios de origem, compilação e implantação. Além disso, há um estágio de aprovação manual para promover a implantação no ambiente de produção.

1. O estágio de origem recupera o código do repositório e da ramificação `hotfix-*` que foram criados na primeira etapa. O código é passado para o estágio de compilação por meio de um bucket do Amazon S3 para artefatos. No estágio de compilação, é criada uma imagem de contêiner que inclui o hotfix que é desenvolvido na ramificação `hotfix-*` e enviado ao Amazon Elastic Container Registry (Amazon ECR).

1. O estágio de implantação ao ambiente de estágio atualiza o Amazon Elastic Container Service (Amazon ECS) com a imagem de contêiner mais recente que inclui o hotfix. O hotfix é implantado criando e executando um CloudFormation conjunto de alterações.

1. A função `prcreation-lambda` do Lambda é invocada após a implantação bem-sucedida no ambiente de preparação. Essa função do Lambda cria uma PR com base na ramificação `hotfix-*` para as ramificações `develop` e `main` do repositório. A função do Lambda garante que a correção desenvolvida na ramificação `hotfix-*` seja mesclada novamente e incluída nas implantações subsequentes.

1. Um estágio de aprovação manual ajuda a garantir que as partes interessadas necessárias revisem a correção e aprovem a implantação na produção.

1. O estágio de implantação ao ambiente de produção atualiza o Amazon ECS com a imagem de contêiner mais recente que inclui o hotfix. O hotfix é implantado criando e executando um CloudFormation conjunto de alterações.

![\[Fluxo de trabalho para excluir um evento de ciclo de vida.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


O diagrama anterior para excluir um evento de ciclo de vida mostra o seguinte:

1. O desenvolvedor exclui a ramificação `hotfix-*` após a implantação bem-sucedida do hotfix no ambiente de produção.

1. O evento de exclusão da `hotfix-*` ramificação é capturado por meio de uma EventBridge regra. Os detalhes do evento incluem o nome do repositório e o nome da ramificação.

1. A EventBridge regra invoca a função Lambda. A EventBridge regra passa as informações do evento para a função Lambda como entrada.

1. A função do Lambda processa a entrada para recuperar o nome do repositório e o nome da ramificação. A função do Lambda determina o respectivo produto do Service Catalog com base na entrada passada e, em seguida, encerra o produto.

1. O encerramento do produto provisionado pelo Service Catalog exclui o pipeline e os recursos relevantes que foram criados anteriormente nesse produto.

**Automação e escala**
+ O padrão inclui uma EventBridge regra e uma função Lambda, que podem lidar com várias solicitações de criação de ramificações de hotfix em paralelo. A função do Lambda provisiona o produto do Service Catalog para a regra de evento correspondente.
+ A configuração do pipeline é feita usando o produto do Service Catalog, que fornece recursos de controle de versão. A solução também se expande automaticamente para lidar com vários desenvolvimentos de hotfix para a mesma aplicação em paralelo.
+ A função [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) garante que essas alterações de hotfix também sejam mescladas novamente nas ramificações `main` e `develop` por meio de uma criação automática de solicitação de pull. Essa abordagem é essencial para manter as ramificações `main` e `develop` atualizadas com todas as correções e evitar possíveis regressões de código. Esse processo ajuda a manter a consistência entre as ramificações e evitar regressões de código, garantindo que todas as ramificações de longa duração tenham as correções mais recentes.

## Ferramentas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-tools"></a>

**Serviços da AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ O [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de versão que ajuda no armazenamento e no gerenciamento de repositórios Git de forma privada, sem a necessidade de administrar o próprio sistema de controle de origem. O AWS CodeCommit não está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar seu AWS CodeCommit repositório para outro provedor Git](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+ O [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) é um serviço de gerenciamento de contêineres escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)ajuda você a gerenciar centralmente catálogos de serviços de TI aprovados. AWS Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Outras ferramentas**
+ [CloudFormation Linter (cfn-lint) é um linter](https://github.com/aws-cloudformation/cfn-lint) [que verifica os modelos CloudFormation YAML ou JSON em relação à especificação do recurso. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Ele também executa outras verificações, como a verificação de valores válidos para as propriedades dos recursos e a adesão às práticas recomendadas.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) é uma ferramenta de código aberto que identifica possíveis problemas de segurança em CloudFormation modelos pesquisando padrões.
+ O [Docker](https://www.docker.com/) é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres. Esse padrão usa o Docker para compilar e testar imagens de contêiner localmente.
+ O [Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [dynamic\$1hotfix\$1codepipeline](https://github.com/aws-samples/dynamic_hotfix_codepipeline).

## Práticas recomendadas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

Analise e ajuste os perfis do IAM e as políticas de controle de serviços (SCP) em seu ambiente para garantir que elas restrinjam o acesso de forma adequada. Isso é crucial para evitar quaisquer ações que possam anular as medidas de segurança incluídas neste padrão. Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

## Épicos
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-epics"></a>

### Configurar o ambiente de trabalho
<a name="set-up-the-work-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o [repositório](https://github.com/aws-samples/dynamic_hotfix_codepipeline) de amostra em um novo diretório em seu local de trabalho, execute o seguinte comando:<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | AWS DevOps | 
| Exporte variáveis de ambiente para implantação CloudFormation de pilha. | Defina as seguintes variáveis de ambiente que serão usadas como entrada para as CloudFormation pilhas posteriormente nesse padrão.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export BucketStartName=<BucketName></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export ProdAccount=<prodaccountnumber><br />export StageAccount=<stage/preprodaccountnumber><br />export QAAccount=<qaccountnumber><br />export ToolsAccount=<toolsaccountnumber><br />export DepRegion=<region></pre> | AWS DevOps | 

### Configure os pré-requisitos necessários em Contas da AWS
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie os recursos necessários CI/CD na conta de ferramentas. | Para implantar a CloudFormation pilha na conta de ferramentas, use os comandos a seguir. (Remova o parâmetro `QAAccount` se você não estiver usando a conta de controle de qualidade para configuração.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre>Anote os recursos que o CodeCommit repositório e o Amazon ECR criaram a partir da pilha anterior. Esses parâmetros são necessários para configurar a ramificação `main` do pipeline nas próximas etapas. | AWS DevOps | 
| Crie os recursos necessários CI/CD nas contas de carga de trabalho. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Atualize a política de bucket de artefatos do S3 para permitir o acesso às contas de workload. | Para atualizar os pré-requisitos da CloudFormation pilha na conta de ferramentas, use os comandos a seguir para adicionar todas as permissões necessárias para as contas de carga de trabalho de estágio e produção. (Remova o parâmetro `QAAccount` se você não o estiver usando para configuração.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} PutPolicy=true \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre> | AWS DevOps | 

### Configurar a função do Lambda e os recursos do Service Catalog na conta de ferramentas
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o portfólio e os produtos do Service Catalog. | Para configurar o portfólio e os produtos do Service Catalog, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Configure as funções do Lambda. | Essa solução usa as seguintes funções do Lambda para gerenciar fluxos de trabalho de hotfix:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)Para permitir que as funções do Lambda provisionem e encerrem produtos do Service Catalog quando `hotfix ` ramificações são criadas ou excluídas por meio da EventBridge regra associada, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Criar um pipeline para a ramificação principal e implantar a aplicação em contas de workload
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o pipeline da ramificação `main`. | Para configurar o pipeline da ramificação principal, execute o comando a seguir na conta de ferramentas. Substitua os parâmetros de `MainProductId` e `MainProductArtifactId` por valores das saídas da pilha `servicecatalogsetup`.<pre>#InToolsAccount<br />aws servicecatalog provision-product \<br />    --product-id <MainProductId> \<br />    --provisioning-artifact-id <MainProductArtifactId> \<br />    --provisioned-product-name "${ApplicationName}-main-pipeline" \<br />    --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \<br />    --region=${DepRegion}</pre> | AWS DevOps | 
| Implante a aplicação usando a ramificação `main`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Criar o pipeline para uma ramificação hotfix-\$1 e implantar o hotfix
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma ramificação `hotfix-*` e confirme as alterações. | Para criar um pipeline para a ramificação `hotfix-*` e implantar o hotfix nas contas de workload, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Exclua a ramificação `hotfix-check1`. | Para excluir a ramificação `hotfix-check1` criada anteriormente, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe os recursos implantados. | Para limpar os recursos que foram implantados anteriormente, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>##In Tools Account##<br />aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}</pre><pre>##In Workload Accounts##<br />aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}</pre>Para obter mais informações, consulte [Deleting provisioned products](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) na documentação do Service Catalog. | AWS DevOps | 

## Solução de problemas
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| As alterações que você confirmou no CodeCommit repositório não estão sendo implantadas. | Verifique se há erros nos CodeBuild registros na ação de compilação do Docker. Para obter mais informações, consulte a [documentação do CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| O produto do Service Catalog não está sendo provisionado. | Analise as CloudFormation pilhas relacionadas em busca de eventos com falha. Para obter mais informações, consulte a [documentação do CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Recursos relacionados
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Comandos básicos do Git](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Configurar uma política do IAM para limitar os envios e mesclagens a uma ramificação](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Conecte-se a um AWS CodeCommit repositório](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Granting access to users](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Enviando uma imagem do Docker para um repositório privado do Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Solução de problemas AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [O que é AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Mais informações
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

Esse padrão foi projetado para ambientes com uma configuração do Gitflow que é adotada para o fluxo de trabalho de desenvolvimento no CI/CD processo. Os pipelines seguem o ciclo de implantação que começa no desenvolvimento e passa pelos ambientes de garantia de qualidade (QA), preparação e produção. A CI/CD configuração inclui duas ramificações do git com implantações promocionais em ambientes da seguinte forma:
+ A ramificação `develop` é implantada no ambiente de desenvolvimento.
+ A ramificação `main` é implantada nos ambientes de controle de qualidade, preparação e produção.

Nessa configuração, é um desafio aplicar um hotfix ou um patch de segurança mais rápido do que o ciclo normal de implantação enquanto o desenvolvimento ativo de novos recursos está em andamento. É necessário um processo dedicado para atender às solicitações de hotfix ou segurança, garantindo que os ambientes ativos permaneçam funcionando adequadamente e com segurança.

No entanto, você pode usar outras opções disponíveis sem precisar de um processo de implantação dedicado se:
+ O CI/CD processo está bem equipado com testes automatizados, como testes funcionais e end-to-end testes, que eliminam a necessidade de testes manuais e evitam atrasos nas implantações na produção. No entanto, se os testes automatizados não estiverem bem integrados ao CI/CD processo, fazer uma pequena correção no ambiente de produção pode se tornar complexo e complicado para os desenvolvedores. Isso ocorre porque é possível que novos recursos estejam no ambiente de controle de qualidade aguardando aprovação e liberação. Um hotfix ou correção de segurança não pode ser colocado em produção de forma direta e simultânea.
+ As equipes de desenvolvimento implantam continuamente novos recursos no ambiente de produção, integrando hotfixes ou patches de segurança na implantação programada de cada novo recurso. Em outras palavras, a próxima atualização de recursos para o ambiente de produção compreende dois componentes: a adição de um novo recurso e a inclusão do hotfix ou patch de segurança. No entanto, se o ciclo de implantação não for contínuo, pode haver vários novos recursos já aguardando aprovação no ambiente de controle de qualidade. Gerenciar versões diferentes e garantir que as alterações corretas sejam reaplicadas pode se tornar um trabalho complexo e propenso a erros.

**nota**  
Se você estiver usando a [versão 2](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) do AWS CodePipeline com os acionadores adequados configurados na `hotfix` ramificação, ainda precisará de um processo dedicado para atender às solicitações não programadas. Na versão 2, você pode configurar gatilhos para solicitações de push ou pull. A execução será colocada em fila ou executada imediatamente, dependendo do estado anterior do pipeline. No entanto, com um pipeline dedicado, as correções são aplicadas imediatamente ao ambiente de produção, garantindo que problemas urgentes sejam resolvidos sem demora.

# Automatize a exclusão de AWS CloudFormation pilhas e recursos associados
<a name="automate-deletion-cloudformation-stacks-associated-resources"></a>

*Sandeep Singh e James Jacob, Amazon Web Services*

## Resumo
<a name="automate-deletion-cloudformation-stacks-associated-resources-summary"></a>

O [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) é um serviço amplamente usado para gerenciar a infraestrutura como código (IaC) da nuvem. Ao usar CloudFormation, você gerencia os recursos relacionados como uma única unidade chamada *pilha*. Você pode criar, atualizar e excluir um conjunto de recursos criando, atualizando e excluindo pilhas.

Às vezes, você não precisa mais dos recursos em uma CloudFormation pilha. Dependendo dos recursos e das respectivas configurações, remover uma pilha e os recursos associados pode ser uma tarefa complexa. Em sistemas de produção do mundo real, as exclusões às vezes falham ou demoram muito devido a condições ou restrições conflitantes que não podem ser substituídas. CloudFormation Pode ser necessário planejamento e execução cuidadosos para garantir que todos os recursos sejam devidamente excluídos, de maneira consistente e eficiente. Esse padrão descreve como configurar uma estrutura que ajuda você a gerenciar a exclusão de CloudFormation pilhas que envolvem as seguintes complexidades:
+ **Recursos com proteção contra exclusão**: alguns recursos podem ter a proteção contra exclusão habilitada. Exemplos comuns desses recursos são tabelas do [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) e buckets do [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html). A proteção contra exclusão impede a exclusão automática, como a exclusão por meio de. CloudFormation Caso deseje remover esses recursos, você deve, manualmente ou por meio de programação, desabilitar temporariamente ou sobrescrever a proteção contra exclusão. Antes de prosseguir, você deve refletir cuidadosamente sobre os impactos da exclusão desses recursos.
+ **Recursos com políticas de retenção** — Certos recursos, como chaves AWS Key Management Service (AWS KMS) e buckets do Amazon S3, podem ter políticas de retenção que especificam por quanto tempo eles devem ser retidos após a solicitação da exclusão. Essas políticas devem ser consideradas na estratégia de limpeza para garantir conformidade com as políticas organizacionais e com os requisitos regulatórios.
+ **Exclusão demorada de funções do Lambda que estão anexadas a uma VPC**: a exclusão de uma função do [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) que está anexada a uma nuvem privada virtual (VPC) pode demorar de 5 a 40 minutos, dependendo das diversas dependências interconectadas envolvidas no processo. Se você desanexar a função da VPC antes de excluir a pilha, é possível reduzir esse tempo para menos de 1 minuto.
+ **Recursos não criados diretamente por CloudFormation** — Em determinados designs de aplicativos, os recursos podem ser criados fora da CloudFormation pilha original, seja pelo próprio aplicativo ou por recursos provisionados por meio da pilha. Veja os dois exemplos a seguir:
  + CloudFormation pode provisionar uma instância do [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) que executa um script de dados do usuário. Em seguida, esse script pode criar um parâmetro do [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) para armazenar dados relacionados à aplicação. Esse parâmetro não é gerenciado por meio de CloudFormation.
  + CloudFormation pode provisionar uma função Lambda que gera automaticamente um grupo [Amazon CloudWatch Logs para armazenar registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html). Esse grupo de registros não é gerenciado por meio de CloudFormation.

  Embora esses recursos não sejam gerenciados diretamente pelo CloudFormation, eles geralmente precisam ser limpos quando a pilha é excluída. Caso não sejam gerenciados, esses recursos podem ficar órfãos e gerar consumo desnecessário de recursos.

Embora essas barreiras de proteção possam gerar complexidade, elas são intencionais e essenciais. CloudFormation Permitir ignorar todas as restrições e excluir recursos indiscriminadamente pode levar a consequências prejudiciais e imprevistas em muitos cenários. No entanto, como DevOps engenheiro de nuvem responsável pelo gerenciamento do ambiente, às vezes pode ser necessário ignorar essas restrições, principalmente em ambientes de desenvolvimento, teste ou preparação.

**Resultados de negócios desejados**

Com a implementação desta estrutura, você poderá aproveitar os seguintes benefícios:
+ **Gerenciamento de custos** — a limpeza regular e eficiente de ambientes temporários, como end-to-end ambientes de teste de aceitação de usuários, ajuda a evitar que os recursos funcionem por mais tempo do que o necessário. Isso pode reduzir os custos de forma significativa.
+ **Segurança** — A limpeza automatizada de recursos desatualizados ou não utilizados reduz a superfície de ataque e ajuda a manter um ambiente seguro AWS .
+ **Eficiência operacional**: a limpeza regular e automatizada pode fornecer os seguintes benefícios operacionais:
  + Scripts automatizados que removem grupos de logs antigos ou buckets do Amazon S3 vazios podem aumentar a eficiência operacional, mantendo o ambiente organizado e fácil de gerenciar.
  + Excluir e recriar pilhas rapidamente permite iterações ágeis no projeto e na implementação, resultando em uma arquitetura mais robusta e resiliente.
  + A exclusão e a reconstrução frequente de ambientes ajudam a identificar e corrigir problemas potenciais. Isso contribui para garantir que a infraestrutura seja capaz de lidar com situações reais.

## Pré-requisitos e limitações
<a name="automate-deletion-cloudformation-stacks-associated-resources-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Python, versão 3.6 ou versões posteriores, [instalado](https://www.python.org/downloads/)
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Limitações**
+ Uma convenção de nomenclatura é usada para identificar os recursos que devem ser excluídos. O código de amostra deste padrão usa um prefixo no nome do recurso, mas você pode definir sua própria convenção de nomenclatura. Os recursos que não seguem essa convenção não serão identificados nem excluídos.

## Arquitetura
<a name="automate-deletion-cloudformation-stacks-associated-resources-architecture"></a>

O diagrama a seguir mostra como essa estrutura identifica a CloudFormation pilha de destino e os recursos adicionais associados a ela.

![\[As fases que descobrem, processam e excluem CloudFormation pilhas e seus recursos associados.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/ab7c3b56-3476-41a3-8ece-68915605a546/images/a7fceb1c-d624-47b3-957d-f910ef2f44d7.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. **Reúna recursos** — A estrutura de automação usa uma convenção de nomenclatura para retornar todas as CloudFormation pilhas relevantes, repositórios do Amazon Elastic Container Registry (Amazon ECR), tabelas do DynamoDB e buckets do Amazon S3.
**nota**  
As funções deste estágio usam [paginadores](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), um recurso do Boto3 que abstrai o processo de iteração sobre um conjunto de resultados de API truncado. Isso garante que todos os recursos sejam processados. [Para otimizar ainda mais o desempenho, considere aplicar a filtragem do [lado do servidor](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) ou considere usá-la JMESPath para realizar a filtragem do lado do cliente.](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath)

1. **Pré-processamento** — A estrutura de automação identifica e aborda as restrições de serviço que devem ser substituídas para permitir a exclusão dos recursos. CloudFormation Por exemplo, a configuração `DeletionProtectionEnabled` das tabelas do DynamoDB é alterada para `False`. Na interface de linha de comandos, para cada recurso, você recebe um prompt perguntando se deseja ignorar a restrição.

1. **Excluir pilha** — A estrutura de automação exclui a CloudFormation pilha. Na interface de linha de comandos, você recebe um prompt perguntando se deseja excluir a pilha.

1. **Pós-processamento** — a estrutura de automação exclui todos os recursos relacionados que não foram provisionados diretamente CloudFormation como parte da pilha. Exemplos desses tipos de recursos incluem parâmetros e grupos de CloudWatch registros do Systems Manager. As funções separadas reúnem esses recursos, realizam o processamento prévio e, em seguida, os excluem. Na interface de linha de comandos, para cada recurso, você recebe um prompt perguntando se deseja excluir o recurso.
**nota**  
As funções deste estágio usam [paginadores](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), um recurso do Boto3 que abstrai o processo de iteração sobre um conjunto de resultados de API truncado. Isso garante que todos os recursos sejam processados. [Para otimizar ainda mais o desempenho, considere aplicar a filtragem do [lado do servidor](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) ou considere usá-la JMESPath para realizar a filtragem do lado do cliente.](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath)

**Automação e escala**

Se sua CloudFormation pilha incluir outros recursos que não estão incluídos no código de amostra ou se a pilha tiver uma restrição que não tenha sido tratada nesse padrão, você poderá adaptar a estrutura de automação para seu caso de uso. Adote a mesma sequência metodológica para coletar recursos, realizar o processamento prévio, excluir a pilha e, depois, executar o processamento posterior.

## Ferramentas
<a name="automate-deletion-cloudformation-stacks-associated-resources-tools"></a>

**Serviços da AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+ CloudFormation A [Interface de Linha de Comando (CFN-CLI)](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) é uma ferramenta de código aberto que ajuda você a desenvolver e testar extensões de terceiros AWS e, em seguida, registrá-las para uso em. CloudFormation
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS

**Outras ferramentas**
+ O [Click](https://click.palletsprojects.com/en/stable/) é uma ferramenta em Python que auxilia na criação de interfaces de linha de comandos.
+ O [Poetry](https://python-poetry.org/docs/) é uma ferramenta para gerenciamento de dependências e empacotamento em Python.
+ O [Pyenv](https://github.com/pyenv/pyenv) é uma ferramenta que ajuda a gerenciar e alternar entre diferentes versões do Python.
+ [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.

**Repositório de código**

O código desse padrão está disponível no GitHub [cloudformation-stack-cleanup](https://github.com/aws-samples/cloudformation-stack-cleanup/)repositório.

## Práticas recomendadas
<a name="automate-deletion-cloudformation-stacks-associated-resources-best-practices"></a>
+ **Marque os recursos para facilitar a identificação**: implemente uma [estratégia de marcação](https://aws.amazon.com/solutions/guidance/tagging-on-aws/) para identificar recursos criados para diferentes ambientes e finalidades. As etiquetas podem simplificar o processo de limpeza, ajudando a filtrar os recursos com base nas suas marcações.
+ **Defina ciclos de vida dos recursos**: estabeleça ciclos de vida para os recursos a fim de excluí-los automaticamente após um determinado período. Essa prática ajuda a garantir que ambientes temporários não gerem custos permanentes.

## Épicos
<a name="automate-deletion-cloudformation-stacks-associated-resources-epics"></a>

### Instalar as ferramentas
<a name="install-tools"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps engenheiro | 
| Instale o Poetry. | Siga as [instruções](https://python-poetry.org/docs/), apresentadas na documentação do Poetry, para instalar o Poetry no ambiente virtual de destino. | DevOps engenheiro | 
| Instale as dependências. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps engenheiro | 
| (Opcional) Instale o Pyenv. | Siga as [instruções](https://github.com/pyenv/pyenv#installation) (GitHub) para instalar o Pyenv. | DevOps engenheiro | 

### (Opcional) Personalização da estrutura
<a name="optional-customize-the-framework"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie funções que coletem, processem previamente e excluam os recursos de destino. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps engenheiro, Python | 

### Criação de recursos de amostra
<a name="create-sample-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma CloudFormation pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Crie um parâmetro do Systems Manager. | Digite o comando a seguir para criar um parâmetro do Systems Manager que não seja provisionado por meio de: CloudFormation<pre>aws ssm put-parameter \<br />  --name "/sampleforcleanup/database/password" \<br />  --value "your_db_password" \<br />  --type "SecureString" \<br />  --description "Database password for my app" \<br />  --tier "Standard" \<br />  --region "us-east-1"</pre> | AWS DevOps | 
| Crie um bucket do Amazon S3. | Insira o seguinte comando para criar um bucket do Amazon S3 que não seja provisionado por meio de: CloudFormation<pre>aws s3api create-bucket \<br />  --bucket samplesorcleanup-unmanagedbucket-<UniqueIdentifier> \<br />  --region us-east-1 \<br />  --create-bucket-configuration LocationConstraint=us-east-1</pre> | AWS DevOps | 

### Exclusão dos recursos de amostra
<a name="delete-the-sample-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua a CloudFormation pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Valide a exclusão dos recursos. | Na saída, confirme se todos os recursos de amostra foram excluídos. Para obter uma saída de amostra, consulte a seção [Recursos adicionais](#automate-deletion-cloudformation-stacks-associated-resources-additional) deste padrão. | AWS DevOps | 

## Recursos relacionados
<a name="automate-deletion-cloudformation-stacks-associated-resources-resources"></a>
+ [Excluir uma pilha](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) (CloudFormation documentação)
+ [Solução de problemas CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation documentação)
+ [Conceder acesso a funções do Lambda para recursos em uma Amazon VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) (documentação do Lambda)
+ [Como excluo uma AWS CloudFormation pilha que está presa no status DELETE\$1FAILED?](https://repost.aws/knowledge-center/cloudformation-stack-delete-failed) (Centro de AWS conhecimento)

## Mais informações
<a name="automate-deletion-cloudformation-stacks-associated-resources-additional"></a>

A seguir, apresentamos uma saída de amostra produzida pelo comando `cfncli`:

```
cfncli --region aus-east-1  dev cleanup-env --prefix-list sampleforcleanup                                                                                                                              
https://sts.us-east-1.amazonaws.com
Cleaning up: ['sampleforcleanup'] in xxxxxxxxxx:us-east-1
Do you want to proceed? [Y/n]: Y
No S3 buckets
No ECR repositories
No Lambda functions in VPC
The following DynamoDB tables will have their deletion protection removed:
sampleforcleanup-MyDynamoDBTable
Do you want to proceed with removing deletion protection from these tables? [Y/n]: Y
Deletion protection disabled for DynamoDB table 'sampleforcleanup-MyDynamoDBTable'.
The following CloudFormation stacks will be deleted:
sampleforcleanup-Stack
Do you want to proceed with deleting these CloudFormation stacks? [Y/n]: Y
Initiated deletion of CloudFormation stack: `sampleforcleanup-Stack`
Waiting for stack `sampleforcleanup-Stack` to be deleted...
CloudFormation stack `sampleforcleanup-Stack` deleted successfully.
The following ssm_params will be deleted:
/sampleforcleanup/database/password
Do you want to proceed with deleting these ssm_params? [Y/n]: Y
Deleted SSM Parameter: /sampleforcleanup/database/password
Cleaned up: ['sampleforcleanup']
```

# Automatização da ingestão e da visualização de métricas personalizadas do Amazon MWAA no Amazon Managed Grafana usando o Terraform
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics"></a>

*Faisal Abdullah e Satya Vajrapu, Amazon Web Services*

## Resumo
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-summary"></a>

Este padrão descreve como usar o Amazon Managed Grafana para criar e monitorar métricas personalizadas que são ingeridas pelo Amazon Managed Workflows for Apache Airflow (Amazon MWAA). O Amazon MWAA serve como orquestrador de fluxos de trabalho, empregando Directed Acyclic Graphs () que são programados em Python. DAGs Esse padrão se concentra no monitoramento de métricas personalizadas, incluindo o número total de DAGs execuções na última hora, a contagem de aprovados e reprovados a DAGs cada hora e a duração média desses processos. Essa análise mostra como o Amazon Managed Grafana se integra ao Amazon MWAA para permitir monitoramento e insights abrangentes sobre a orquestração de fluxos de trabalho nesse ambiente.

## Pré-requisitos e limitações
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS com as permissões de usuário necessárias para criar e gerenciar o seguinte Serviços da AWS:
  + AWS Identity and Access Management Funções e políticas (IAM)
  + AWS Lambda
  + Amazon Managed Grafana
  + Amazon Managed Workflows for Apache Airflow (Amazon MWAA)
  + Amazon Simple Storage Service (Amazon S3)
  + Amazon Timestream
+ Acesso a um ambiente de shell que pode ser um terminal em sua máquina local ou [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html).
+ Um ambiente de shell com o Git instalado e a versão mais recente do AWS Command Line Interface (AWS CLI) instalada e configurada. Para obter mais informações, consulte [Instalação ou atualização para a versão mais recente do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) na AWS CLI documentação.
+ A seguinte versão do Terraform instalada: `required_version = ">= 1.6.1, < 2.0.0"` Você pode usar [tfswitch](https://tfswitch.warrensbox.com/) para alternar entre diferentes versões do Terraform.
+ Fonte de identidade configurada Centro de Identidade do AWS IAM para o seu Conta da AWS. Para obter mais informações, consulte [Confirm your identity sources in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/prereq-identity-sources.html) na documentação do Centro de Identidade do IAM. Você pode escolher entre o Active Directory padrão Diretório do Centro de Identidade do IAM ou um provedor de identidade externo (IdP), como o Okta. Para obter mais informações, consulte [Recursos relacionados](#automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources).

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ Terraforma `required_version = ">= 1.6.1, < 2.0.0"`
+ Amazon Managed Grafana versão 9.4 ou posterior. Este padrão foi testado na versão 9.4.

## Arquitetura
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-architecture"></a>

O diagrama de arquitetura a seguir destaca o Serviços da AWS usado na solução.

![\[Fluxo de trabalho para automatizar a ingestão de métricas personalizadas do Amazon MWAA.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/3458d0a9-aee1-428a-bf2f-c357bb531c64/images/b43ed8d2-94ac-4438-913b-81c7eba8f3e0.png)


O diagrama anterior mostra o seguinte fluxo de trabalho:

1. As métricas personalizadas no Amazon MWAA se originam das DAGs que estão sendo executadas no ambiente. As métricas são carregadas para o bucket do Amazon S3 em formato de arquivo CSV. O seguinte DAGs usa os recursos de consulta de banco de dados do Amazon MWAA:
   + `run-example-dag`: esse DAG contém um exemplo de código Python que define uma ou mais tarefas. Ele é executado a cada sete minutos e imprime a data. Depois de imprimir a data, o DAG inclui uma tarefa para suspender ou pausar a execução por um período específico.
   + `other-sample-dag`: esse DAG é executado a cada dez minutos e imprime a data. Depois de imprimir a data, o DAG inclui uma tarefa para suspender ou pausar a execução por um período específico.
   + `data-extract`: esse DAG é executado a cada hora e consulta o banco de dados do Amazon MWAA e coleta métricas. Depois que as métricas são coletadas, esse DAG as grava em um bucket do Amazon S3 para realizar análise e processamento adicionais.

1. Para agilizar o processamento de dados, as funções do Lambda são executadas quando acionadas por eventos do Amazon S3, o que facilita o carregamento de métricas no Timestream.

1. O Timestream é integrado como uma fonte de dados no Amazon Managed Grafana, onde todas as métricas personalizadas do Amazon MWAA são armazenadas.

1. Os usuários podem consultar os dados e criar painéis personalizados para visualizar os principais indicadores de performance e obter informações sobre a orquestração dos fluxos de trabalho no Amazon MWAA.

## Ferramentas
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-tools"></a>

**Serviços da AWS**
+ [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)ajuda você a gerenciar centralmente o acesso de login único (SSO) a todos os seus Contas da AWS aplicativos e à nuvem.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado. Nesse padrão, AWS Lambda executa o código Python em resposta aos eventos do Amazon S3 e gerencia os recursos computacionais automaticamente.
+ O [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) é um serviço de visualização de dados totalmente gerenciado que você pode usar para consultar, correlacionar e visualizar, além de gerar alertas sobre suas métricas, logs e rastreamentos. Este padrão usa o Amazon Managed Grafana para criar um painel para visualização de métricas e alertas.
+ O [Amazon Managed Workflows for Apache Airflow (Amazon MWAA)](https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html) é um serviço de orquestração gerenciado para o Apache Airflow que é possível configurar e operar pipelines de dados na nuvem em escala. O [Apache Airflow](https://airflow.apache.org/) é uma ferramenta de código aberto usada para criar, agendar e monitorar programaticamente sequências de processos e tarefas chamadas de fluxos de trabalho. Nesse padrão, a amostra DAGs e um extrator de métricas DAG são implantados no Amazon MWAA.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados. Nesse padrão, o Amazon S3 é usado para armazenar DAGs scripts e métricas personalizadas no formato CSV.
+ [O Amazon Timestream LiveAnalytics](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) for is é um banco de dados de séries temporais rápido, escalável, totalmente gerenciado e criado especificamente para facilitar o armazenamento e a análise de trilhões de pontos de dados de séries temporais por dia. O Timestream for LiveAnalytics também se integra aos serviços comumente usados para coleta de dados, visualização e aprendizado de máquina. Neste padrão, ele é usado para ingerir as métricas personalizadas geradas pelo Amazon MWAA.

**Outras ferramentas**
+ O [HashiCorp Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código. Este padrão usa um módulo do Terraform para automatizar o provisionamento da infraestrutura na AWS.

**Repositório de código**

O código desse padrão está disponível GitHub no repositório [visualize-amazon-mwaa-custom-metrics-grafana](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana). A pasta `stacks/Infra` contém o seguinte:
+ Arquivos de configuração do Terraform para todos os recursos AWS 
+ O arquivo .json do painel do Grafana na pasta `grafana`
+ Fluxos de trabalho gerenciados da Amazon para Apache DAGs Airflow na pasta `mwaa/dags`
+ O código do Lambda para analisar o arquivo.csv e armazenar métricas no banco de dados do Timestream na pasta `src`
+ Arquivos.json da política do IAM na pasta `templates`

## Práticas recomendadas
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-best-practices"></a>

O Terraform deve armazenar o estado sobre sua infraestrutura gerenciada e configuração para que possa mapear recursos do mundo real para sua configuração. Por padrão, o Terraform armazena o estado localmente em um arquivo chamado `terraform.tfstate`. É crucial garantir a segurança e a integridade do seu arquivo de estado do Terraform, pois ele mantém o estado atual da sua infraestrutura. Para obter mais informações, consulte [Remote State](https://developer.hashicorp.com/terraform/language/state/remote) na documentação do Terraform. 

## Épicos
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-epics"></a>

### Implantar a infraestrutura usando o Terraform
<a name="deploy-the-infrastructure-using-terraform"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implantar a infraestrutura. | Para implantar a infraestrutura da solução, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

### Validar os recursos de infraestrutura implantados
<a name="validate-the-deployed-infrastructure-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide o ambiente do Amazon MWAA. | Para validar o ambiente do Amazon MWAA, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, engenheiro de dados | 
| Verifique as programações dos DAGs. | Para ver cada programação de DAG, acesse a guia **Programar** na **IU do Airflow**.Cada um dos itens a seguir DAGs tem uma programação pré-configurada, que é executada no ambiente Amazon MWAA e gera métricas personalizadas: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Você também pode ver as execuções bem-sucedidas de cada DAG na coluna **Execuções**.  | Engenheiro de dados, AWS DevOps | 

### Configurar o ambiente do Amazon Managed Grafana
<a name="configure-the-gra-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o acesso ao espaço de trabalho do Amazon Managed Grafana. | Os scripts do Terraform criaram o espaço de trabalho, os painéis e a página de métricas necessários do Amazon Managed Grafana. Para configurar o acesso de modo que você possa exibi-los, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Instale o plug-in do Amazon Timestream.  | As métricas personalizadas do Amazon MWAA são carregadas no banco de dados do Timestream. Você usa o plug-in do Timestream para visualizar as métricas com os painéis do Amazon Managed Grafana.Para instalar o plug-in do Timestream, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Para obter mais informações, consulte [Ampliar o espaço de trabalho com plug-ins](https://docs.aws.amazon.com/grafana/latest/userguide/grafana-plugins.html#manage-plugins) na documentação do Amazon Managed Grafana. | AWS DevOps, DevOps engenheiro | 

### Visualizar as métricas personalizadas no painel do Amazon Managed Grafana
<a name="visualize-the-custom-metrics-in-the-gra-dashboard"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Veja o painel do Amazon Managed Grafana. | Para visualizar as métricas que foram ingeridas no espaço de trabalho do Amazon Managed Grafana, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)A página de métricas do painel exibirá as seguintes informações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Personalize o painel do Amazon Managed Grafana. | Para personalizar os painéis para futuros aprimoramentos, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Como alternativa, o código-fonte desse painel está disponível no `dashboard.json` arquivo na `stacks/infra/grafana` pasta no [GitHub repositório](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana/blob/main/stacks/infra/grafana/dashboard.json). | AWS DevOps | 

### Limpe AWS os recursos
<a name="clean-up-aws-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Pausa as execuções de DAGs no Amazon MWAA. | Para pausar as execuções de DAGs, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, engenheiro de dados | 
| Exclua os objetos nos buckets do Amazon S3. | Para excluir os buckets **mwaa-events-bucket-\$1 e **mwaa-metrics-bucket-\$1**** do Amazon S3, siga as instruções para usar o console do Amazon S3 em Excluindo [um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) na documentação do Amazon S3. | AWS DevOps | 
| Destrua os recursos criados pelo Terraform. | Para destruir os recursos criados pelo Terraform e o arquivo local de estado do Terraform associado, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

## Solução de problemas
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| `null_resource.plugin_mgmt (local-exec): aws: error: argument operation: Invalid choice, valid choices are:` | Atualize seu AWS CLI para a [versão mais recente](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). | 
| Erro ao carregar fontes de dados: `Fetch error: 404 Not Found Instantiating…` | O erro é intermitente. Aguarde alguns minutos e atualize as fontes de dados para visualizar a fonte de dados do Timestream listada.  | 

## Recursos relacionados
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources"></a>

**AWS documentação**
+ [Amazon Managed Grafana for dashboarding and visualization](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/amg-dashboarding-visualization.html)
+ [Configurar o Amazon Managed Grafana para usar o Okta](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-SAML-providers-okta.html)
+ [Use Centro de Identidade do AWS IAM com seu espaço de trabalho Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/authentication-in-AMG-SSO.html)
+ [Trabalhando com o DAGs Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags.html)

**AWS vídeos**
+ Configurar o Centro de Identidade do IAM com o Amazon Managed Grafana para autenticação, conforme mostrado neste [vídeo](https://www.youtube.com/watch?v=XX2Xcz-Ps9U).




[https://www.youtube-nocookie.com/embed/XX2Xcz-PS9U? controles = 0](https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U?controls=0)
+ Se o Centro de Identidade do IAM não estiver disponível, você também pode integrar a autenticação do Amazon Managed Grafana usando um provedor de identidade (IdP) externo, como o Okta, conforme mostrado neste [vídeo](https://www.youtube.com/watch?v=Z4JHxl2xpOg).




[https://www.youtube-nocookie.com/embed/A4 OuJHxl2xp? controles = 0](https://www.youtube-nocookie.com/embed/Z4JHxl2xpOg?controls=0)

## Mais informações
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-additional"></a>

Você pode criar uma solução abrangente de monitoramento e alerta para seu ambiente do Amazon MWAA, permitindo gerenciamento proativo e resposta rápida a possíveis problemas ou anomalias. O Amazon Managed Grafana inclui os seguintes recursos:

**Alertas**: você pode configurar alertas no Amazon Managed Grafana com base em limites ou condições predefinidos. Configure notificações por e-mail para alertar as partes interessadas relevantes quando determinadas métricas excederem ou ficarem abaixo dos limites especificados. Para obter mais informações, consulte [Grafana Alerting](https://docs.aws.amazon.com/grafana/latest/userguide/alerts-overview.html) na documentação do Amazon Managed Grafana.

**Integração** — Você pode integrar o Amazon Managed Grafana com várias ferramentas de terceiros OpsGenie, como, PagerDuty, ou o Slack para melhorar os recursos de notificação. Por exemplo, você pode configurar webhooks ou integrá-los APIs para acionar incidentes e notificações nessas plataformas com base nos alertas gerados no Amazon Managed Grafana. Além disso, esse padrão fornece um [GitHub repositório](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana) para criar AWS recursos. Você pode integrar ainda mais esse código aos seus fluxos de trabalho de implantação de infraestrutura.

# Automatize a implantação de conjuntos de pilhas usando a AWS e a AWS CodePipeline CodeBuild
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild"></a>

*Thiyagarajan Mani, Mihir Borkar e Raghu Gowda, Amazon Web Services*

## Resumo
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-summary"></a>

Em sua integração e entrega contínuas (CI/CD) processes, you might want to deploy applications automatically into all your existing AWS accounts and into new accounts that you add to your organization in AWS Organizations. When you architect a CI/CDsolução para esse requisito), a capacidade de [administrador delegado do conjunto de pilhas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html) da AWS CloudFormation é útil porque permite uma camada de segurança ao restringir o acesso à conta de gerenciamento. No entanto, a AWS CodePipeline usa o modelo de permissões gerenciadas por serviços para implantar aplicativos em várias contas e regiões. Você deve usar a conta de gerenciamento do AWS Organizations para implantar com conjuntos de pilhas, porque a AWS CodePipeline não oferece suporte ao recurso de administrador delegado de conjuntos de pilhas.

Este padrão descreve como você pode contornar essa limitação. O padrão usa a AWS CodeBuild e um script personalizado para automatizar a implantação de conjuntos de pilhas com a AWS. CodePipeline Ele automatiza essas atividades de implantação de aplicativos:
+ Implemente um aplicativo como conjuntos de pilhas em unidades organizacionais existentes () OUs
+ Estenda a implantação de um aplicativo em regiões adicionais OUs  
+ Remover um aplicativo implantado de todas ou de regiões específicas OUs 

## Pré-requisitos e limitações
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-prereqs"></a>

**Pré-requisitos **

Antes de seguir as etapas deste padrão:
+ Criar organizações na sua conta de gerenciamento do AWS Organizations. Para obter instruções, consulte a [documentação do AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html).
+ Habilite o acesso confiável entre AWS Organizations e CloudFormation use permissões gerenciadas por serviços. Para obter instruções, consulte [Habilitar acesso confiável com AWS Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html) na CloudFormation documentação.

**Limitações**

O código fornecido com esse padrão tem as seguintes limitações: 
+ Você pode implantar somente um único CloudFormation modelo para um aplicativo; atualmente, a implantação de vários modelos não é suportada.
+ A personalização da implementação atual exige DevOps experiência.
+ Esse padrão não usa chaves do AWS Key Management System (AWS KMS). No entanto, você pode ativar essa funcionalidade reconfigurando o CloudFormation modelo incluído nesse padrão.

## Arquitetura
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-architecture"></a>

![\[Arquitetura de automação de pipeline de CI/CD\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a5c47de7-9039-415d-a9e5-9de0d4c3a260/images/2dbca422-7f32-4f9c-a4aa-1f95b484b772.png)


Essa arquitetura para o pipeline CI/CD de implantação trata do seguinte:
+ Restringe o acesso direto à conta de gerenciamento delegando a responsabilidade de implantação do conjunto de pilhas a uma CI/CD conta dedicada como administrador do conjunto de pilhas para implantações de aplicativos.
+ Usa o modelo de permissão gerenciado por serviços para implantar o aplicativo automaticamente sempre que uma nova conta é criada e mapeada em uma UO.
+ Garante a consistência da versão do aplicativo em todas as contas no nível do ambiente.
+ Usa vários estágios de aprovação nos níveis do repositório e do pipeline para fornecer camadas adicionais de segurança e governança para o aplicativo implantado.
+ Supera a limitação atual de usar um script CodePipeline de implantação personalizado para implantar ou CodeBuild remover automaticamente conjuntos de pilhas e instâncias de pilha. Para ver uma ilustração do controle de fluxo e da hierarquia das chamadas de API implementadas pelo script personalizado, consulte a seção [Informações adicionais](#automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-additional).
+ Cria conjuntos de pilhas individuais para ambientes de desenvolvimento, teste e produção. Além disso, você pode criar conjuntos de pilhas que OUs combinam várias regiões em cada estágio. Por exemplo, você pode combinar sandbox e desenvolvimento OUs em um estágio de implantação de desenvolvimento.
+ Oferece suporte à implantação ou exclusão de aplicativos em um subconjunto de contas ou lista de. OUs

**Automação e escala**

Você pode usar o código fornecido com esse padrão para criar um CodeCommit repositório da AWS e um pipeline de código para seu aplicativo. Em seguida, você pode implantá-los como conjuntos de pilhas em várias contas no nível da UO. O código também automatiza componentes como tópicos do Amazon Simple Notiﬁcation Service (Amazon SNS) para notificar aprovadores, os perfis necessários do AWS Identity and Access Management (IAM) e a política de controle de serviços (SCP) a ser aplicada na conta de gerenciamento.

## Ferramentas
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-tools"></a>

**Serviços da AWS**
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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.
+ A [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatiza implantações no Amazon Elastic Compute Cloud (Amazon EC2) ou em instâncias locais, funções do AWS Lambda ou serviços Amazon Elastic Container Service (Amazon ECS).
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 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 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) é um serviço de gerenciamento de contas que permite consolidar várias contas AWS em uma organização que você cria e gerencia de maneira centralizada.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [automated-code-pipeline-stackset-deployment](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment). Para ver a estrutura de pastas e outros detalhes, consulte o [arquivo readme](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment/blob/main/README.md) do repositório.

## Práticas recomendadas
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-best-practices"></a>

Este padrão restringe o acesso direto à conta de gerenciamento durante a implantação do aplicativo no nível da UO. Adicionar vários estágios de aprovação ao processo de pipeline e repositório ajuda a fornecer segurança e governança adicionais para os aplicativos e componentes que você implanta usando essa abordagem.

## Épicos
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-epics"></a>

### Configure contas no AWS Organizations
<a name="configure-accounts-in-aws-organizations"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Habilite o recurso de gerenciamento entre contas. | Ative todos os atributos na conta de gerenciamento da sua organização seguindo as instruções na [documentação do AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html). | Administrador da AWS, administrador da plataforma | 
| Crie uma CI/CD conta. | No AWS Organizations, em sua organização, crie uma CI/CD conta dedicada e designe uma equipe para possuir e controlar o acesso à conta. | Administrador da AWS | 
| Adicionar um administrador delegado. | Na conta de gerenciamento, registre a CI/CD conta que você criou na etapa anterior como administrador delegado do conjunto de pilhas. Para obter instruções, consulte a [ CloudFormation documentação da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html). | Administrador da AWS, administrador da plataforma | 

### Crie um repositório e CI/CD um pipeline de aplicativos
<a name="create-an-application-repository-and-ci-cd-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório de códigos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Crie tópicos do SNS. | Você pode usar o `sns-template.yaml` modelo fornecido no GitHub repositório para criar tópicos do SNS e configurar assinaturas para solicitações de aprovação.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Crie funções do IAM para CI/CD componentes. | Você pode usar o `cicd-role-template.yaml` modelo fornecido no GitHub repositório para criar funções e políticas do IAM exigidas pelos CI/CD componentes.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Crie um CodeCommit repositório e um pipeline de código para seu aplicativo. | Você pode usar o `cicd-pipeline-template.yaml` modelo fornecido no GitHub repositório para criar um CodeCommit repositório e um pipeline de código para seu aplicativo.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 

### Implantar um conjunto de pilhas
<a name="deploy-a-stack-set"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório do aplicativo. | O modelo de CI/CD pipeline usado anteriormente cria um exemplo de repositório de aplicativos e pipeline de código. Para clonar e verificar o repositório:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | Desenvolvedor de aplicativos, Engenheiro de dados | 
| Adicione artefatos do aplicativo. | Atualize o repositório do aplicativo usando um CloudFormation modelo.Essa solução oferece suporte à implantação de apenas um único CloudFormation modelo.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | Desenvolvedor de aplicativos, Engenheiro de dados | 
| Atualize o arquivo de configuração de implantação. | Atualize o arquivo `deployment_config.json`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html)Esse padrão cria conjuntos de pilhas individuais para cada ambiente adicionando o nome do ambiente ao nome do conjunto de pilhas que você fornece no arquivo de configuração de implantação. | Desenvolvedor de aplicativos, Engenheiro de dados | 
| Confirme as alterações e implante o conjunto de pilhas. | Confirme as alterações que você especificou em seu modelo de aplicativo e mescle e implante o conjunto de pilhas em vários ambientes, etapa por etapa:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | Desenvolvedor de aplicativos, Engenheiro de dados | 

## Solução de problemas
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A implantação falha com a exceção:*Altere o nome do arquivo de parâmetros do modelo como -parameter- .json com, nomes padrão não são permitidos* <application name><evn>  | Os arquivos CloudFormation de parâmetros do modelo devem seguir a convenção de nomenclatura especificada. Atualize os nomes dos arquivos de parâmetros e tente novamente. | 
| A implantação falha com a exceção:*Altere o nome do CloudFormation modelo como .yml; o padrão template.yml ou template.yaml não são permitidos* <application name> | O nome do CloudFormation modelo deve seguir a convenção de nomenclatura especificada. Atualize o nome do arquivo e tente novamente. | 
| A implantação falha com a exceção:*Nenhum CloudFormation modelo válido e seu arquivo de parâmetros foram encontrados para o ambiente \$1nome do ambiente\$1* | Verifique as convenções de nomenclatura do arquivo para o CloudFormation modelo e seu arquivo de parâmetros para o ambiente especificado. | 
| A implantação falha com a exceção:*Ação de implantação inválida fornecida no arquivo de configuração de implantação. As opções válidas são 'implantar' e 'excluir'.*  | Você especificou um valor inválido para o parâmetro `deployment_action` no arquivo de configuração de implantação. O parâmetro tem dois valores válidos: `deploy` e `delete`. Use `deploy` para criar e atualizar os conjuntos de pilhas e as instâncias da pilha associadas deles. Use `delete` somente quando quiser remover todo o conjunto de pilhas e instâncias de pilha associadas. | 

## Recursos relacionados
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-resources"></a>
+ GitHub [automated-code-pipeline-stackset-repositório de implantação](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment)
+ [Habilitar todos os atributos na organização](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html) (documentação do AWS Organizations)
+ [Registre um administrador delegado](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html) ( CloudFormation documentação da AWS)
+ [Metas em nível de conta para conjuntos de pilhas gerenciados por serviços (documentação da AWS)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/account-level-targets.html) CloudFormation 

## Mais informações
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-additional"></a>

**Fluxograma**

O fluxograma a seguir mostra o controle de fluxo e a hierarquia das chamadas de API implementadas pelo script personalizado para automatizar a implantação do conjunto de pilhas.

![\[Controle de fluxo e chamadas de API implementados pelo script Python\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a5c47de7-9039-415d-a9e5-9de0d4c3a260/images/1898883a-62b7-40c2-8f08-9f2a9dda8404.png)


**Exemplos de arquivos de configuração de implantação**

**Criação de um novo conjunto de pilhas**

O arquivo de configuração de implantação a seguir cria um novo conjunto de pilhas chamado `sample-stack-set` na região da AWS `us-east-1` em três OUs.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Implantação de um conjunto de pilhas existente em outra UO**

Se você implantar a configuração mostrada no exemplo anterior e quiser implantar o conjunto de pilhas em uma UO adicional chamada `dev-org-unit-2` no ambiente de desenvolvimento, o arquivo de configuração de implantação poderá ter a seguinte aparência.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Implantação de um conjunto de pilhas existente em outra região da AWS**

Se você implantar a configuração mostrada no exemplo anterior e quiser implantar o conjunto de pilhas em uma região adicional da AWS (`us-east-2`) no ambiente de desenvolvimento para dois OUs (`dev-org-unit-1`e`dev-org-unit-2`), o arquivo de configuração de implantação pode ter a seguinte aparência. 

**nota**  
Os recursos no CloudFormation modelo devem ser válidos e específicos da região.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-1", "us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Remover uma instância de pilha de uma UO ou região da AWS**

Digamos que a configuração de implantação mostrada no exemplo anterior tenha sido implantada. O arquivo de configuração a seguir remove as instâncias da pilha das duas regiões da UO `dev-org-unit-2`.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"],
                                        "regions": ["us-east-1", "us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"],
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"],
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

O arquivo de configuração a seguir remove a instância de pilha da região da AWS `us-east-1` para ambas OUs no ambiente de desenvolvimento.    

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Apagamento de todo o conjunto de pilhas**

O arquivo de configuração de implantação a seguir apaga todo o conjunto de pilhas e todas as instâncias de pilha associadas.

```
{
     "deployment_action": "delete",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

* ***Exclusão de uma conta da implantação**

 O arquivo de configuração de implantação a seguir exclui a conta `111122223333`, que faz parte da UO `dev-org-unit-1`, da implantação.

```
 {
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": ["111122223333"],
                                        "filter_type": "DIFFERENCE"
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Implantando o aplicativo em um subconjunto de contas em uma UO**

O arquivo de configuração de implantação a seguir implanta o aplicativo em apenas três contas (`111122223333`, `444455556666` e`777788889999`) na UO `dev-org-unit-1`.

```
 {
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": ["111122223333", "444455556666", "777788889999"],
                                        "filter_type": "INTERSECTION"
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

# Anexe automaticamente uma política gerenciada da AWS para Systems Manager aos perfis de EC2 instância usando o Cloud Custodian e o AWS CDK
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk"></a>

*Ali Asfour e Aaron Lennon, Amazon Web Services*

## Resumo
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-summary"></a>

Você pode integrar instâncias do Amazon Elastic Compute Cloud (Amazon EC2) com o AWS Systems Manager para automatizar tarefas operacionais e fornecer mais visibilidade e controle. Para se integrarem ao Systems Manager, EC2 as instâncias devem ter um [AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) instalado e uma política do `AmazonSSMManagedInstanceCore` AWS Identity and Access Management (IAM) anexada aos seus perfis de instância. 

No entanto, se você quiser garantir que todos os perfis de EC2 instância tenham a `AmazonSSMManagedInstanceCore` política anexada, você pode enfrentar desafios para atualizar novas EC2 instâncias que não tenham perfis de instância ou EC2 instâncias que tenham um perfil de instância, mas não tenham a `AmazonSSMManagedInstanceCore` política. Também pode ser difícil adicionar essa política em várias contas da Amazon Web Services (AWS) e regiões da AWS.

Esse padrão ajuda a resolver esses desafios implantando três políticas de [Cloud Custodian](https://cloudcustodian.io/) em suas contas da AWS:
+ A primeira política do Cloud Custodian verifica as EC2 instâncias existentes que têm um perfil de instância, mas não têm a `AmazonSSMManagedInstanceCore` política. A política `AmazonSSMManagedInstanceCore` é então anexada. 
+ A segunda política do Cloud Custodian verifica as EC2 instâncias existentes sem um perfil de instância e adiciona um perfil de instância padrão que tem a `AmazonSSMManagedInstanceCore` política anexada.
+ A terceira política do Cloud Custodian cria funções do [AWS Lambda](https://cloudcustodian.io/docs/aws/lambda.html) em suas contas para monitorar a criação de instâncias e perfis EC2 de instância. Isso garante que a `AmazonSSMManagedInstanceCore` política seja anexada automaticamente quando uma EC2 instância é criada.

Esse padrão usa [as DevOps ferramentas da AWS](https://aws.amazon.com/devops/) para obter uma implantação contínua e em grande escala das políticas do Cloud Custodian em um ambiente de várias contas, sem provisionar um ambiente computacional separado. 

## Pré-requisitos e limitações
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-prereqs"></a>

**Pré-requisitos **
+ Duas ou mais contas ativas da AWS. Uma conta é a *conta de segurança* e as outras são *contas de membros*.
+ Permissões para provisionar recursos na conta de segurança. Esse padrão usa [permissões de administrador](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), mas você deve conceder permissões de acordo com os requisitos e as políticas da sua organização.
+ Capacidade de assumir um perfil do IAM da conta de segurança até as contas dos membros e criar os perfis do IAM necessários. Para obter mais informações, consulte [Delegar acesso entre contas da AWS usando perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) na documentação do IAM.
+ 
**Importante**  
AWS Command Line Interface (AWS CLI), instalada e configurada. Para fins de teste, você pode configurar a AWS CLI usando o comando `aws configure` ou definindo variáveis de ambiente. : Isso não é recomendado para ambientes de produção, e recomendamos que esta conta receba somente acesso com privilégio mínimo. Para obter mais informações, consulte [Conceder privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) na documentação do IAM.
+ O arquivo `devops-cdk-cloudcustodian.zip` (anexado), transferido por download para o computador local.
+ Familiaridade com o Python.
+ As ferramentas necessárias (Node.js, AWS Cloud Development Kit (AWS CDK) e Git), instaladas e configuradas. Você pode usar o arquivo `install-prerequisites.sh` no arquivo `devops-cdk-cloudcustodian.zip` para** **instalar essas ferramentas.** **Certifique-se de executar esse arquivo com privilégios de raiz. 

**Limitações**
+ Embora esse padrão possa ser usado em um ambiente de produção, certifique-se de que todas as políticas e perfis do IAM atendam aos requisitos e políticas da sua organização. 

**Versões do pacote**
+ Cloud Custodian versão 0.9 ou mais recente
+ TypeScript versão 3.9.7 ou posterior
+ Node.js versão 14.15.4 ou superior
+ `npm` versão 7.6.1 ou mais recente
+ AWS CDK versão 1.96.0 ou superior

## Arquitetura
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-architecture"></a>

![\[AWS CodePipeline workflow with CodeCommit, CodeBuild, and deployment to member accounts.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/169a7bde-789e-4ebd-b4ca-80eb28ac9927/images/8ec0b6b4-d4b0-42e5-833d-24d1e6098fd9.png)


 

O diagrama mostra o seguinte fluxo de trabalho:

1. As políticas do Cloud Custodian são enviadas para um CodeCommit repositório da AWS na conta de segurança. Uma regra da Amazon CloudWatch Events inicia automaticamente o CodePipeline pipeline da AWS.

1. O pipeline busca o código mais recente CodeCommit e o envia para a parte de integração contínua do pipeline de integração contínua e entrega contínua (CI/CD) gerenciado pela AWS. CodeBuild

1. CodeBuild executa as DevSecOps ações completas, incluindo a validação da sintaxe da política nas políticas do Cloud Custodian, e executa essas políticas no `--dryrun` modo de verificar quais recursos foram identificados.

1. Se não houver erros, a próxima tarefa alertará o administrador para revisar as alterações e aprovar a implantação nas contas dos membros.

**Pilha de tecnologia**
+ AWS CDK
+ CodeBuild
+ CodeCommit
+ CodePipeline
+ IAM
+ Cloud Custodian 

**Automação e escala**

O módulo de pipelines do AWS CDK provisiona um CI/CD pipeline que é usado CodePipeline para orquestrar a criação e o teste do código-fonte CodeBuild, além da implantação de recursos da AWS com pilhas da AWS. CloudFormation É possível usar esse padrão para todas as contas-membro e regiões da organização. Você também pode estender a pilha `Roles creation` para implantar outros perfis do IAM em suas contas de membros. 

## Ferramentas
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-tools"></a>
+ [O AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software para definir a infraestrutura de nuvem em código e provisioná-la por meio da AWS. CloudFormation
+ O [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de construção totalmente gerenciado na nuvem.
+  CodeCommitA [AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de versão que você pode usar para armazenar e gerenciar ativos de forma privada.
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para lançar seu software.
+ O [AWS Identity and Access Management  ](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)é um serviço da web que ajuda você a controlar o acesso aos recursos da AWS com segurança.
+ O [Cloud Custodian](https://cloudcustodian.io/) é uma ferramenta que unifica dezenas de ferramentas e os scripts que muitas organizações usam para gerenciar suas contas de nuvem pública em uma ferramenta de código aberto.
+ [O Node.js](https://nodejs.org/en/) é um JavaScript tempo de execução criado no JavaScript motor V8 do Google Chrome.

**Código **

Para obter uma lista detalhada dos módulos, perfis da conta, arquivos e comandos de implantação usados nesse padrão, consulte o arquivo `README` no arquivo `devops-cdk-cloudcustodian.zip` (em anexo).

## Épicos
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-epics"></a>

### Configure o pipeline com o AWS CDK
<a name="set-up-the-pipeline-with-aws-cdk"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o CodeCommit repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Para obter mais informações sobre isso, consulte [Criação de um CodeCommit repositório](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html) na CodeCommit documentação da AWS. | Desenvolvedor | 
| Instale as ferramentas necessárias | Use o arquivo `install-prerequisites.sh` para instalar todas as ferramentas necessárias no Amazon Linux. Não inclui a AWS CLI porque ela vem pré-instalada.Para obter mais informações, consulte [Pré-requisitos](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_prerequisites) na seção de [Conceitos básicos do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) na documentação do AWS CDK. | Desenvolvedor | 
| Instale os pacotes AWS CDK obrigatórios. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Os pacotes a seguir são exigidos pelo AWS CDK e estão incluídos no arquivo `requirements.txt`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Desenvolvedor | 

### Configure o ambiente
<a name="configure-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize as variáveis necessárias. | Abra o `vars.py` arquivo na pasta raiz do seu CodeCommit repositório e atualize as seguintes variáveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Desenvolvedor | 
| Atualize o arquivo account.yml com as informações da conta do membro. | Para executar a ferramenta [c7n-org Cloud Custodian](https://cloudcustodian.io/docs/tools/c7n-org.html) em várias contas, você deve colocar o arquivo de configuração `accounts.yml` na raiz do repositório. Veja a seguir um exemplo de arquivo de configuração do Cloud Custodian para AWS:<pre>accounts:<br />- account_id: '123123123123'<br />  name: account-1<br />  regions:<br />  - us-east-1<br />  - us-west-2<br />  role: arn:aws:iam::123123123123:role/CloudCustodian<br />  vars:<br />    charge_code: xyz<br />  tags:<br />  - type:prod<br />  - division:some division<br />  - partition:us<br />  - scope:pci</pre> | Desenvolvedor | 

### Inicialize as contas da AWS
<a name="bootstrap-the-aws-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize a conta de segurança. | Inicialize `deploy_account` com o aplicativo `cloudcustodian_stack` executando o seguinte comando:<pre>cdk bootstrap -a 'python3 <br />cloudcustodian/cloudcustodian_stack.py</pre> | Desenvolvedor | 
| Opção 1: inicialize automaticamente as contas dos membros. | Se a variável `cdk_bootstrap_member_accounts` for definida como para `True` no arquivo `vars.py`, as contas especificadas na variável `member_accounts` serão automaticamente inicializadas pelo pipeline.Se necessário, é possível atualizar `*cdk_bootstrap_role*` com um perfil do IAM que você pode assumir a partir da conta de segurança e que tem as permissões necessárias para inicializar o AWS CDK.Novas contas adicionadas à variável `member_accounts ` são inicializadas automaticamente pelo pipeline para que os perfis necessários possam ser implantados. | Desenvolvedor | 
| Opção 2: inicialize manualmente as contas dos membros.  | Embora não seja recomendável usar essa abordagem, você pode definir o valor de `cdk_bootstrap_member_accounts` para `False` e executar essa etapa manualmente executando o seguinte comando:<pre>$ cdk bootstrap -a 'python3 cloudcustodian/member_account_roles_stack.py' \<br /><br />--trust {security_account_id} \<br /><br />--context assume-role-credentials:writeIamRoleName={role_name} \<br /><br />--context assume-role-credentials:readIamRoleName={role_name} \<br /><br />--mode=ForWriting \<br /><br />--context bootstrap=true \<br /><br />--cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess</pre>Certifique-se de que os valores de `{security_account_id}` e `{role_name}` sejam atualizados com o nome de um perfil do IAM que possa ser assumido usando a conta de segurança e que tenha as permissões exigidas para inicializar o AWS CDK.Você também pode usar outras abordagens para inicializar as contas dos membros, por exemplo, com a AWS CloudFormation. Para obter mais informações, consulte [Inicialização](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) na documentação do AWS CDK. | Desenvolvedor | 

### Implante as pilhas de AWS CDK
<a name="deploy-the-aws-cdk-stacks"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie os perfis do IAM nas contas dos membros. | Execute o seguinte comando para implantar a pilha `member_account_roles_stack` e criar os perfis do IAM nas contas-membro:<pre>cdk deploy --all -a 'python3 cloudcustodian/member_account_roles_stack.py' --require-approval never</pre> | Desenvolvedor | 
| Implante a pilha de pipeline do Cloud Custodian. | Execute o seguinte comando para criar o pipeline `cloudcustodian_stack.py` do Cloud Custodian que é implantado na conta de segurança:<pre>cdk deploy -a 'python3 cloudcustodian/cloudcustodian_stack.py'</pre> | Desenvolvedor | 

## Recursos relacionados
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-resources"></a>
+ [Conceitos básicos do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)

## Anexos
<a name="attachments-169a7bde-789e-4ebd-b4ca-80eb28ac9927"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/169a7bde-789e-4ebd-b4ca-80eb28ac9927/attachments/attachment.zip)

# Crie CI/CD pipelines e clusters do Amazon ECS automaticamente para microsserviços usando o AWS CDK
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk"></a>

*Varsha Raju, Amazon Web Services*

## Resumo
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-summary"></a>

Esse padrão descreve como criar automaticamente a integração contínua e a entrega contínua (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDpipelines) que você pode personalizar ou alterar de acordo com os requisitos da sua organização. 

A abordagem do padrão cria um ambiente de produção e um ambiente de não produção, cada um com uma nuvem privada virtual (VPC) e um cluster do Amazon ECS configurado para ser executado em duas zonas de disponibilidade. Esses ambientes são compartilhados por todos os seus microsserviços e, em seguida, você cria um CI/CD pipeline para cada microsserviço. Esses CI/CD pipelines extraem alterações de um repositório de origem na AWS CodeCommit, criam automaticamente as alterações e, em seguida, as implantam em seus ambientes de produção e não produção. Quando um pipeline conclui com êxito todas as suas etapas, você pode usá-lo URLs para acessar o microsserviço nos ambientes de produção e não produção.

## Pré-requisitos e limitações
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da Amazon Web Services (AWS).
+ Um bucket do Amazon Simple Storage Service (Amazon S3) existente que contém o arquivo `starter-code.zip` (anexado)
+ AWS Cloud Development Kit (AWS CDK), instalado e configurado. Para obter mais informações, consulte [Conceitos básicos do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) na documentação do AWS CDK.
+ Python 3 e `pip` instalado e configurado Para obter mais informações, consulte a [documentação do Phyton](https://www.python.org/).
+ Familiaridade com o AWS CDK, AWS CodeBuild, CodePipeline AWS, CodeCommit Amazon Elastic Container Registry (Amazon ECR), Amazon ECS e AWS Fargate.
+ Familiaridade com o Docker.
+ Uma compreensão de CI/CD DevOps e.

**Limitações**
+ Os limites gerais da conta da AWS se aplicam. Para obter mais informações, consulte [Service Quotas da AWS](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html), na documentação de Referência geral da AWS.

**Versões do produto**
+ Esse código foi testado usando o Nose.js versão 16.13.0 e o AWS CDK versão 1.132.0.

## Arquitetura
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-architecture"></a>

![\[Nuvem AWS architecture diagram showing CI/CD pipeline and deployment to production and non-production VPCs.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/05ac2cad-408e-433f-8150-0a2b71f63cfd/images/6fa3dbef-88de-4b3f-ae41-dfa90256a058.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um desenvolvedor de aplicativos confirma o código em um CodeCommit repositório.

1. Um pipeline é inicializado.

1. CodeBuild cria e envia a imagem do Docker para um repositório Amazon ECR

1. CodePipeline implanta uma nova imagem em um serviço Fargate existente em um cluster Amazon ECS não produtivo.

1. O Amazon ECS extrai a imagem do repositório Amazon ECR para um serviço Fargate que não é de produção.

1. O teste é realizado usando um URL que não é de produção.

1. O gerente de lançamento aprova a implantação de produção.

1. CodePipeline implanta a nova imagem em um serviço Fargate existente em um cluster Amazon ECS de produção

1. O Amazon ECS extrai a imagem do repositório Amazon ECR para um serviço Fargate de produção.

1. Os usuários de produção acessam seu atributo usando uma URL de produção.

**Pilha de tecnologia**
+ AWS CDK
+ CodeBuild
+ CodeCommit 
+ CodePipeline
+ Amazon ECR 
+ Amazon ECS 
+ Amazon VPC

**Automação e escala**

Você pode usar a abordagem desse padrão para criar pipelines para microsserviços implantados em uma pilha compartilhada da AWS. CloudFormation A automação pode criar mais de um cluster do Amazon ECS em cada VPC e também criar pipelines para microsserviços implantados em um cluster compartilhado do Amazon ECS. No entanto, isso exige que você forneça novas informações de recursos como entradas para a pilha do pipeline.

## Ferramentas
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-tools"></a>
+ [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html) — O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software para definir a infraestrutura de nuvem em código e provisioná-la por meio da AWS. CloudFormation
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — CodeBuild A AWS é um serviço de construção totalmente gerenciado na nuvem. CodeBuild compila seu código-fonte, executa testes de unidade e produz artefatos prontos para serem implantados.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — CodeCommit A AWS é um serviço de controle de versão que permite que você armazene e gerencie de forma privada repositórios Git na nuvem da AWS. CodeCommit elimina a necessidade de você gerenciar seu próprio sistema de controle de origem ou se preocupar com a escalabilidade de sua infraestrutura.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — CodePipeline A AWS é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para lançar seu software. Você pode modelar e configurar rapidamente os diferentes estágios de um processo de lançamento de software. CodePipeline automatiza as etapas necessárias para liberar suas alterações de software continuamente.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html): o Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido que é usado na execução, interrupção e gerenciamento de contêineres em um cluster. Você pode executar tarefas e serviços em uma infraestrutura com tecnologia sem servidor gerenciada pelo AWS Fargate. Como alternativa, para ter mais controle da infraestrutura, é possível executar tarefas e serviços em um cluster de instâncias do Amazon Elastic Compute Cloud (Amazon EC2) que você gerencia.
+ [Docker](https://www.docker.com/): o Docker ajuda os desenvolvedores a empacotar, enviar e executar facilmente qualquer aplicativo como um contêiner leve, portátil e autossuficiente.

**Código**

O código desse padrão está disponível nos arquivos `cicdstarter.zip` e `starter-code.zip` (anexado).

## Épicos
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o diretório de trabalho para o AWS CDK.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infraestrutura de nuvem | 

### Crie a infraestrutura compartilhada
<a name="create-the-shared-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a infraestrutura compartilhada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infraestrutura de nuvem | 
| Monitore a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infraestrutura de nuvem | 
| Teste a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html)Certifique-se de registrar o IDs para os dois VPCs e o grupo de segurança IDs para os grupos de segurança padrão em ambos VPCs. | AWS DevOps, infraestrutura de nuvem | 

### Crie um CI/CD pipeline para um microsserviço
<a name="create-a-ci-cd-pipeline-for-a-microservice"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a infraestrutura para o microsserviço. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html)Além disso, é possível fornecer os valores para os dois comandos por meio do arquivo `cdk.json` presente no diretório. | AWS DevOps, infraestrutura de nuvem | 
| Monitore a CloudFormation pilha da AWS. | Abra o CloudFormation console da AWS e monitore o progresso da `myservice1-cicd-stack` pilha. Eventualmente, o status muda para `CREATE_COMPLETE`*.* | AWS DevOps, infraestrutura de nuvem | 
| Teste a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) |  | 
| Use o pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infraestrutura de nuvem | 
| Repita esse épico para cada microsserviço. | Repita as tarefas neste épico para criar um CI/CD pipeline para cada um dos seus microsserviços. | AWS DevOps, infraestrutura de nuvem | 

## Recursos relacionados
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-resources"></a>
+ [Usando Python com o AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-python.html) 
+ [Referência do AWS CDK em Python](https://docs.aws.amazon.com/cdk/api/latest/python/index.html)
+ [Criação de um serviço AWS Fargate usando o AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/ecs_example.html)

## Mais informações
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-additional"></a>

**Comando da `cdk synth`**

```
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
```

**`cdk deploy `command**

```
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice> 
```

## Anexos
<a name="attachments-05ac2cad-408e-433f-8150-0a2b71f63cfd"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/05ac2cad-408e-433f-8150-0a2b71f63cfd/attachments/attachment.zip)

# Crie e envie imagens do Docker para o Amazon ECR usando GitHub Actions e Terraform
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform"></a>

*Ruchika Modi, Amazon Web Services*

## Resumo
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-summary"></a>

Esse padrão explica como você pode criar GitHub fluxos de trabalho reutilizáveis para criar seu Dockerfile e enviar a imagem resultante para o Amazon Elastic Container Registry (Amazon ECR). O padrão automatiza o processo de criação de seus Dockerfiles usando o Terraform e o Actions. GitHub Isso minimiza a possibilidade de erros humanos e reduz consideravelmente o tempo de implantação.

Uma ação GitHub push para a ramificação principal do seu GitHub repositório inicia a implantação dos recursos. O fluxo de trabalho cria um repositório Amazon ECR exclusivo com base na combinação da GitHub organização e do nome do repositório. Em seguida, o fluxo envia a imagem do Dockerfile para o repositório do Amazon ECR.

## Pré-requisitos e limitações
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Uma GitHub conta ativa.
+ Um [GitHub repositório.](https://docs.github.com/en/get-started/quickstart/create-a-repo)
+ O Terraform, na versão 1 ou em versões posteriores, [instalado e configurado](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli).
+ Um bucket do Amazon Simple Storage Service (Amazon S3) para o [backend do Terraform](https://developer.hashicorp.com/terraform/language/settings/backends/s3).
+ Uma tabela do [Amazon DynamoDB](https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwjO95K9xqCCAxW-KIMDHfOvD7IYABADGgJzZg&gclid=EAIaIQobChMIzveSvcagggMVviiDAx3zrw-yEAAYASADEgJYWfD_BwE&ohost=www.google.com&cid=CAASJuRoKjv_llGjIU3liZ4T2IRecPqw0dVHSvjZ7bee1lvcc36K_lO_&sig=AOD64_1b294pq65HiFN-T1YxQAuXmRu_hw&adurl&ved=2ahUKEwjhiY29xqCCAxUgzjgGHRu6CAIQqyQoAnoECAkQDQ) para controle de bloqueio e consistência do estado do Terraform. A tabela deve ter uma chave de partição chamada `LockID`, do tipo `String`. Se isso não for configurado, o bloqueio de estado será desabilitado.
+ Um perfil do AWS Identity and Access Management (IAM) com permissões para configurar o backend do Amazon S3 para o Terraform. Para obter instruções de configuração, consulte a [documentação do Terraform](https://developer.hashicorp.com/terraform/language/settings/backends/s3#assume-role-configuration).

**Limitações**

Esse código reutilizável foi testado somente com GitHub Actions.

## Arquitetura
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-architecture"></a>

**Pilha de tecnologias de destino**
+ Repositório do Amazon ECR
+ GitHub Ações
+ Terraform

**Arquitetura de destino**

![\[Fluxo de trabalho para criar GitHub fluxos de trabalho reutilizáveis para criar Dockerfile e enviar imagens para o Amazon ECR.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/c39c110e-cbe5-459e-a0aa-de27e884fb10/images/298e0e16-3054-49b7-8695-db510e0df2df.png)


O diagrama ilustra o seguinte:

1. Um usuário adiciona modelos do Dockerfile e do Terraform ao repositório. GitHub 

2. Essas adições iniciam um fluxo de trabalho de GitHub ações.

3. O fluxo de trabalho verifica a existência de um repositório do Amazon ECR. Caso contrário, ele cria o repositório com base na GitHub organização e no nome do repositório.

4. O fluxo de trabalho cria o Dockerfile e envia a imagem para o repositório do Amazon ECR.

## Ferramentas
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-tools"></a>

**Serviço da Amazon**
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de contêiner, que é seguro, escalável e confiável.

**Outras ferramentas**
+ GitHub O [Actions](https://docs.github.com/en/actions) é integrado à GitHub plataforma para ajudar você a criar, compartilhar e executar fluxos de trabalho em seus GitHub repositórios. Você pode usar o GitHub Actions para automatizar tarefas como criar, testar e implantar seu código.
+ [O Terraform](https://developer.hashicorp.com/terraform/intro) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar a infraestrutura na nuvem e no local.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [Docker ECR Actions Workflow](https://github.com/aws-samples/docker-ecr-actions-workflow).
+ Quando você cria GitHub ações, os arquivos do fluxo de trabalho do Docker são salvos na `/.github/workflows/` pasta desse repositório. O fluxo de trabalho desta solução encontra-se no arquivo [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml).
+ A pasta `e2e-test` disponibiliza um Dockerfile de amostra para referência e testes.

## Práticas recomendadas
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-best-practices"></a>
+ Para obter as práticas recomendadas para a escrita de Dockerfiles, consulte a [documentação do Docker](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/).
+ Use um [endpoint da VPC para o Amazon ECR](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). Os VPC endpoints são desenvolvidos pela AWS PrivateLink, uma tecnologia que permite que você acesse o Amazon APIs ECR de forma privada por meio de endereços IP privados. Para as tarefas do Amazon ECS que usam o tipo de execução do Fargate, o endpoint da VPC permite que a tarefa realize a extração de imagens privadas do Amazon ECR sem atribuir um endereço IP público à tarefa.

## Épicos
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-epics"></a>

### Configurar o provedor e o repositório do OIDC GitHub
<a name="set-up-the-oidc-provider-and-github-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o OpenID Connect. | Crie um provedor de OpenID Connect (OIDC) Você usará o provedor na política de confiança para o perfil do IAM usado nesta ação. Para obter instruções, consulte [Configuração do OpenID Connect na Amazon](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Web Services GitHub na documentação. | Administrador da AWS, AWS DevOps, AWS geral | 
| Clone o GitHub repositório. | Clone o repositório GitHub [Docker ECR Actions Workflow](https://github.com/aws-samples/docker-ecr-actions-workflow) em sua pasta local:<pre>$git clone https://github.com/aws-samples/docker-ecr-actions-workflow</pre> | DevOps engenheiro | 

### Personalize o fluxo de trabalho GitHub reutilizável e implante a imagem do Docker
<a name="customize-the-github-reusable-workflow-and-deploy-the-docker-image"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Personalize o evento que inicia o fluxo de trabalho do Docker. | O fluxo de trabalho desta solução encontra-se em [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml). No momento, este script está configurado para implantar recursos quando recebe o evento `workflow_dispatch`. É possível personalizar esta configuração alterando o evento para `workflow_call` e chamando o fluxo de trabalho usando outro fluxo de trabalho principal. | DevOps engenheiro | 
| Personalize o fluxo de trabalho. | O arquivo [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml) está configurado para criar um fluxo de trabalho dinâmico e reutilizável. GitHub Você pode editar esse arquivo para personalizar a configuração padrão ou pode passar os valores de entrada do console GitHub Actions se estiver usando o `workflow_dispatch` evento para iniciar a implantação manualmente.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.html) | DevOps engenheiro | 
| Implante os modelos do Terraform. | O fluxo de trabalho implanta automaticamente os modelos do Terraform que criam o repositório Amazon ECR, com base no evento que você configurou. GitHub Estes modelos estão disponíveis como arquivos `.tf` no [diretório raiz do repositório do GitHub](https://github.com/aws-samples/docker-ecr-actions-workflow/tree/main). | AWS DevOps, DevOps engenheiro | 

## Solução de problemas
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Problemas ou erros ao configurar o Amazon S3 e o DynamoDB como o backend remoto do Terraform. | Siga as instruções apresentadas na [documentação do Terraform](https://developer.hashicorp.com/terraform/language/settings/backends/s3) para configurar as permissões necessárias nos recursos do Amazon S3 e do DynamoDB para a configuração do backend remoto. | 
| Não é possível executar ou iniciar o fluxo de trabalho com o evento `workflow_dispatch`. | O fluxo de trabalho que está configurado para realizar a implantação usando o evento `workflow_dispatch` funcionará apenas se o fluxo de trabalho também estiver configurado na ramificação principal. | 

## Recursos relacionados
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-resources"></a>
+ [Reutilização de fluxos de trabalho (documentação](https://docs.github.com/en/actions/using-workflows/reusing-workflows)) GitHub 
+ [Acionando um fluxo de trabalho (documentação](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow)) GitHub 

# Crie e teste aplicativos iOS com AWS CodeCommit CodePipeline, AWS e AWS Device Farm
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Resumo
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-summary"></a>

Esse padrão descreve as etapas para criar um pipeline de integração contínua e entrega contínua (CI/CD) que usa CodePipeline a AWS para criar e testar aplicativos iOS em dispositivos reais na AWS. O padrão usa CodeCommit a AWS para armazenar o código do aplicativo, a ferramenta de código aberto Jenkins para criar o aplicativo iOS e o AWS Device Farm para testar o aplicativo criado em dispositivos reais. Essas três fases são orquestradas juntas em um pipeline usando a AWS. CodePipeline

Esse padrão é baseado na postagem [Criando e testando aplicativos iOS e iPadOS com a AWS DevOps e serviços móveis](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) no DevOps blog da AWS. Para obter instruções detalhadas, consulte a postagem do blog.

## Pré-requisitos e limitações
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Uma conta de desenvolvedor da Apple
+ Servidor de compilação (macOS)
+ [Xcode](https://developer.apple.com/xcode/) versão 11.3 (instalado e configurado no servidor de compilação)
+ AWS Command Line Interface (AWS CLI), [instalada](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) na estação de trabalho
+ Conhecimento básico do [Git](https://git-scm.com/docs)

**Limitações **
+ O servidor de compilação do aplicativo deve estar executando o macOS. 
+ O servidor de compilação deve ter um endereço IP público, para que CodePipeline possa se conectar a ele remotamente para iniciar as compilações.

## Arquitetura
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-architecture"></a>

**Pilha de tecnologia de origem**
+ Um processo de criação de aplicativo iOS on-premises que envolve o uso de um simulador ou teste manual em dispositivos físicos

**Pilha de tecnologias de destino**
+ Um CodeCommit repositório da AWS para armazenar o código-fonte do aplicativo
+ Um servidor Jenkins para compilações de aplicativos usando o Xcode
+ Um pool de dispositivos do AWS Device Farm para testar aplicativos em dispositivos reais

**Arquitetura de destino**

Quando um usuário confirma alterações no repositório de origem, o pipeline CodePipeline (AWS) busca o código do repositório de origem, inicia uma compilação do Jenkins e passa o código do aplicativo para o Jenkins. Após a construção, o pipeline recupera o artefato de construção e inicia um trabalho do AWS Device Farm para testar o aplicativo em um pool de dispositivos.

 

![\[O pipeline de CI/CD usa CodePipeline a AWS para criar e testar aplicativos iOS em dispositivos reais.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/06fbd82f-4aed-441c-818c-5f89f56af78e/images/0ae3d7b6-b40c-44ef-9580-8c8266c3d841.png)


## Ferramentas
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-tools"></a>
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) é um serviço de entrega contínua totalmente gerenciado que ajuda você a automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e infraestrutura. CodePipeline automatiza as fases de criação, teste e implantação do seu processo de lançamento sempre que houver uma alteração no código, com base no modelo de lançamento que você define.
+  CodeCommitA [AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de origem totalmente gerenciado que hospeda repositórios seguros baseados em Git. Isso facilita a colaboração das equipes no código em um ecossistema seguro e altamente escalável. CodeCommit elimina a necessidade de operar seu próprio sistema de controle de origem ou a preocupação com a escalabilidade de sua infraestrutura.
+ O [AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) é um serviço de teste de aplicações que permite melhorar a qualidade dos aplicativos web e móveis, testando-os em uma ampla variedade de navegadores com área de trabalho e dispositivos móveis reais, sem a necessidade de provisionar e gerenciar qualquer infraestrutura de teste.
+ [Jenkins](https://www.jenkins.io/): é um servidor de automação de código aberto que permite aos desenvolvedores construir, testar e implantar seu software.

## Épicos
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-epics"></a>

### Configurar o ambiente de construção
<a name="set-up-the-build-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale o Jenkins no servidor de compilação que está executando o macOS. | O Jenkins será usado para criar o aplicativo, portanto, primeiro você deve instalá-lo no servidor de compilação. Para obter instruções detalhadas para essa tarefa e para as tarefas subsequentes, consulte a postagem do blog da AWS [Criando e testando aplicativos iOS DevOps e iPadOS com a AWS e serviços móveis](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) e outros [recursos na seção Recursos relacionados](#build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources) no final desse padrão. | DevOps | 
| Configure o Jenkins. | Siga as instruções da tela para configurar o Jenkins. | DevOps | 
| Instale o CodePipeline plug-in da AWS para Jenkins. | Esse plug-in deve ser instalado no servidor Jenkins para que o Jenkins interaja com o serviço da AWS CodePipeline . | DevOps | 
| Crie um projeto de estilo livre no Jenkins. | No Jerkins, crie um projeto de estilo livre. Configure o projeto para especificar acionadores e outras opções de configuração de compilação. | DevOps | 

### Configurar o AWS Device Farm
<a name="configure-aws-device-farm"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um projeto Device Farm. | Abra o console do AWS Device Farm. Crie um projeto e um pool de dispositivos para testes. Para obter instruções, consulte a publicação do blog. | Desenvolvedor | 

### Configurar o repositório de origem
<a name="configure-the-source-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um CodeCommit repositório. | Crie um repositório onde o código-fonte será armazenado. | DevOps | 
| Confirma o código do seu aplicativo para o repositório. | Conecte-se ao CodeCommit repositório que você criou. Enviar o código de sua máquina local para o repositório. | DevOps | 

### Configure o pipeline
<a name="configure-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um pipeline na AWS CodePipeline. | Abra o CodePipeline console da AWS e crie um pipeline. O pipeline orquestra todas as fases do CI/CD processo. Para obter instruções, consulte a postagem do blog da AWS [Criando e testando aplicativos iOS e iPadOS com a AWS DevOps e serviços móveis](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/). | DevOps | 
| Adicionar um estágio de teste ao pipeline. | Para adicionar uma etapa de teste e integrá-la ao AWS Device Farm, edite o pipeline. | DevOps | 
| Inicie o pipeline. | Para iniciar o pipeline e o CI/CD processo, escolha **Release change**. | DevOps | 

### Veja os resultados dos testes de aplicativos
<a name="view-application-test-results"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Revisar os resultados do teste. | No console do AWS Device Farm, selecione o projeto que você criou e analise os resultados dos testes. O console mostrará os detalhes de cada teste. | Desenvolvedor | 

## Recursos relacionados
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources"></a>

**Step-by-step instruções para esse padrão**
+ [Criação e teste de aplicativos iOS e iPadOS com a AWS DevOps e serviços móveis](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) (publicação DevOps no blog da AWS)

**Configurar o AWS Device Farm**
+ [Console AWS Device Farm](https://console.aws.amazon.com/devicefarm)

**Configurar o repositório de origem**
+ [Crie um CodeCommit repositório da AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html)
+ [Conecte-se a um CodeCommit repositório da AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)

**Configurar o pipeline**
+ [ CodePipeline Console AWS](https://console.aws.amazon.com/codesuite/codepipeline/home)

**Recursos adicionais**
+ [ CodePipeline Documentação da AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [ CodeCommit Documentação da AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+ [Documentação do AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html)
+ [Documentação do Jenkins](https://www.jenkins.io/doc/)
+ [Instalação do Jenkins no macOS](https://www.jenkins.io/download/weekly/macos/)
+ [ CodePipeline Plug-in AWS para Jenkins](https://plugins.jenkins.io/aws-codepipeline/)
+ [Instalação do Xcode](https://developer.apple.com/xcode/)
+ [Instalação](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) e [configuração](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) da AWS CLI
+ [Documentação do Git](https://git-scm.com/docs)

# Configurar a autenticação de TLS mútuo para aplicativos em execução no Amazon EKS
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Resumo
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-summary"></a>

O Transport Layer Security (TLS) mútuo baseado em certificado é um componente opcional do TLS que fornece autenticação bidirecional entre servidores e clientes. Com o TLS mútuo, os clientes devem fornecer um certificado X.509 durante o processo de negociação da sessão. O servidor usa esse certificado para identificar e autenticar o cliente.

O TLS mútuo é um requisito comum para aplicativos da Internet das Coisas (IoT) e pode ser usado business-to-business para aplicativos ou padrões [como](https://docs.aws.amazon.com/wellarchitected/latest/financial-services-industry-lens/open-banking.html) o Open Banking.

Esse padrão descreve como configurar o TLS mútuo para aplicativos em execução em um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) usando um controlador de entrada NGINX. Você pode habilitar atributos de TLS mútuos integrados para o controlador de entrada NGINX anotando o recurso de entrada. Para obter mais informações sobre anotações de TLS mútuas em controladores NGINX, consulte [Autenticação de certificado de cliente](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#client-certificate-authentication) na documentação do Kubernetes.

**Importante**  
Esse padrão usa certificados autoassinados. Recomendamos que você use esse padrão apenas com clusters de teste e não em ambientes de produção. Se quiser usar esse padrão em um ambiente de produção, você pode usar a [AWS Private Certificate Authority (AWS Private CA)](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) ou seu padrão existente de infraestrutura de chave pública (PKI) para emitir certificados privados.

## Pré-requisitos e limitações
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da Amazon Web Services (AWS).
+ Um cluster do Amazon EKS existente.
+ AWS Command Line Interface (AWS CLI) versão 1.7 ou superior, instalada e configurada no macOS, Linux ou Windows.
+ O utilitário de linha de comando kubectl, instalado e configurado para acessar o cluster do Amazon EKS. Para obter mais informações , consulte [Instalação do kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) na documentação do Amazon EKS.
+ Um nome de Sistema de Nomes de Domínio (DNS) existente para testar o aplicativo.

**Limitações**
+ Esse padrão usa certificados autoassinados. Recomendamos que você use esse padrão apenas com clusters de teste e não em ambientes de produção.

## Arquitetura
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-architecture"></a>

![\[Configurar a autenticação de TLS mútuo para aplicativos em execução no Amazon EKS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/ae2761e3-7ed2-4c2a-ba54-a4ddce8a1e7e/images/cefc60f9-2f29-4052-b7ae-df4eb6395e1c.png)


**Pilha de tecnologia**
+ Amazon EKS
+ Amazon Route 53
+ Kubectl

## Ferramentas
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-tools"></a>
+ O [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) ajuda você a executar o Kubernetes na AWS sem precisar instalar e manter seus próprios nós ou ambiente de gerenciamento do Kubernetes.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é um serviço web de DNS altamente disponível e escalável.
+ [Kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) é um utilitário de linha de comando que você usa para interagir com um cluster do Amazon EKS.

## Épicos
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-epics"></a>

### Gerar os certificados autoassinados
<a name="generate-the-self-signed-certificates"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
|  Gerar o certificado e a chave de CA. | Gere a chave e o certificado da autoridade de certificação (CA) executando o comando a seguir.<pre>openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 356 -nodes -subj '/CN=Test Cert Authority'</pre> | DevOps engenheiro | 
| Gerar a chave e o certificado do servidor e assinar com o certificado CA. | Gerar a chave e o certificado do servidor e assinar com o certificado CA, executando o seguinte comando.<pre>openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN= <your_domain_name> ' && openssl x509 -req -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt</pre>Certifique-se de substituir `<your_domain_name>` pelo seu nome de domínio existente. | DevOps engenheiro | 
|  Gerar a chave e o certificado de cliente e assinar com o certificado CA. | Gere a chave e o certificado do cliente e assine com o certificado CA, executando os seguintes comandos.<pre>openssl req -new -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj '/CN=Test' && openssl x509 -req -sha256 -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt</pre> | DevOps engenheiro | 

### Implementar o controlador de entrada NGINX
<a name="deploy-the-nginx-ingress-controller"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implantar o controlador de entrada do NGINX no seu cluster do Amazon EKS. | Implante o controlador de entrada do NGINX com o comando a seguir.<pre>kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/aws/deploy.yaml</pre> | DevOps engenheiro | 
|  Verificar se o serviço do controlador de entrada do NGINX está em execução. | Verifique se o serviço do controlador de entrada do NGINX está em execução.<pre>kubectl get svc -n ingress-nginx</pre>Certifique-se de que o campo do endereço de serviço contenha o nome de domínio do Network Load Balancer. | DevOps engenheiro | 

### Criar um namespace no cluster do Amazon EKS para testar o TLS mútuo
<a name="create-a-namespace-in-the-amazon-eks-cluster-to-test-mutual-tls"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um namespace no cluster do Amazon EKS.  | Crie um namespace chamado `mtls` no seu cluster do Amazon EKS, executando o comando a seguir. <pre>kubectl create ns mtls</pre>Isso implanta o aplicativo de exemplo para testar o TLS mútuo. | DevOps engenheiro | 

### Criar a implantação e o serviço para o aplicativo de exemplo
<a name="create-the-deployment-and-service-for-the-sample-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar a implantação e o serviço do Kubernetes no namespace mtls. | Crie um arquivo chamado `mtls.yaml`. Cole o seguinte código no arquivo. <pre>kind: Deployment<br />apiVersion: apps/v1<br />metadata:<br />  name: mtls-app<br />  labels:<br />    app: mtls<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: mtls<br />  template:<br />    metadata:<br />      labels:<br />        app: mtls<br />    spec:<br />      containers:<br />      - name: mtls-app<br />        image: hashicorp/http-echo<br />        args:<br />          - "-text=mTLS is working"<br /><br /><br />---<br /><br />kind: Service<br />apiVersion: v1<br />metadata:<br />  name: mtls-service<br />spec:<br />  selector:<br />    app: mtls<br />  ports:<br />    - port: 5678 # Default port for image</pre> Crie a implantação e o serviço do Kubernetes no `mtls` namespace, executando o comando a seguir.<pre>kubectl create -f mtls.yaml -n mtls</pre> | DevOps engenheiro | 
| Verificar se a implantação do Kubernetes foi criada. | Execute o comando a seguir para verificar se a implantação foi criada e se tem um pod no status disponível.<pre>kubectl get deploy -n mtls</pre> | DevOps engenheiro | 
| Verificar se o serviço Kubernetes foi criado. | Verifique se o serviço do Kubernetes foi criado, executando o comando a seguir.<pre>kubectl get service -n mtls</pre> | DevOps engenheiro | 

### Criar um segredo no namespace mtls
<a name="create-a-secret-in-the-mtls-namespace"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um segredo para o recurso de entrada. | Execute o comando a seguir para criar um segredo para o controlador de entrada NGINX usando os certificados que você criou anteriormente.<pre>kubectl create secret generic mtls-certs --from-file=tls.crt=server.crt --from-file=tls.key=server.key --from-file=ca.crt=ca.crt -n mtls </pre>Seu segredo tem um certificado de servidor para o cliente identificar o servidor e um certificado CA para o servidor verificar os certificados do cliente. | DevOps engenheiro | 

### Criar o recurso de entrada no namespace mtls
<a name="create-the-ingress-resource-in-the-mtls-namespace"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar o recurso de ingresso no namespace mtls. | Crie um arquivo chamado `ingress.yaml`. Cole o código a seguir no arquivo (substitua `<your_domain_name>` pelo nome de domínio existente).<pre>apiVersion: networking.k8s.io/v1<br />kind: Ingress<br />metadata:<br />  annotations:<br />    nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"<br />    nginx.ingress.kubernetes.io/auth-tls-secret: mtls/mtls-certs<br />  name: mtls-ingress<br />spec:<br />  ingressClassName: nginx<br />  rules:<br />  - host: "*.<your_domain_name>"<br />    http:<br />      paths:<br />      - path: /<br />        pathType: Prefix<br />        backend:<br />          service:<br />            name: mtls-service<br />            port:<br />              number: 5678<br />  tls:<br />  - hosts:<br />    - "*.<your_domain_name>"<br />    secretName: mtls-certs</pre>Crie o recurso de entrada no namespace `mtls` executando o comando a seguir.<pre>kubectl create -f ingress.yaml -n mtls</pre>Isso significa que o controlador de ingresso NGINX pode rotear o tráfego para seu aplicativo de exemplo. | DevOps engenheiro | 
| Verificar se o recurso de ingresso foi criado. | Verifique se o recurso de ingresso foi criado, executando o comando a seguir.<pre>kubectl get ing -n mtls</pre>Certifique-se de que o endereço do recurso de entrada exiba o balanceador de carga criado para o controlador de entrada NGINX. | DevOps engenheiro | 

### Configurar o DNS para apontar o nome do host para o balanceador de carga
<a name="configure-dns-to-point-the-hostname-to-the-load-balancer"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um registro CNAME que aponte para o balanceador de carga do controlador de entrada NGINX. | Faça login no Console de Gerenciamento da AWS, abra o console do Amazon Route 53 e crie um registro de nome canônico (CNAME) que aponta `mtls.<your_domain_name>` para o balanceador de carga do controlador de entrada NGINX.Para obter informações, consulte [Criar registros usando o console do Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) no Guia do desenvolvedor do Amazon Route 53. | DevOps engenheiro | 

### Teste a aplicação
<a name="test-the-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Testar a configuração de TLS mútuo sem certificados. | Execute o comando a seguir.<pre>curl -k https://mtls.<your_domain_name> </pre>Você deve receber a resposta de erro “400 Nenhum certificado SSL obrigatório foi enviado”. | DevOps engenheiro | 
| Testar a configuração de TS mútuo com certificados. | Execute o comando a seguir.<pre>curl -k https://mtls.<your_domain_name> --cert client.crt --key client.key</pre>Você deve receber a resposta “O mTLS está processando”. | DevOps engenheiro | 

## Recursos relacionados
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-resources"></a>
+ [Criar registros usando o console do Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)
+ [Usar um Network Load Balancer com o controlador de entrada NGINX no Amazon EKS](https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/)
+ [Autenticação de certificado de cliente](https://kubernetes.github.io/ingress-nginx/examples/auth/client-certs/)

# Automatize a criação de recursos da Amazon WorkSpaces Applications usando AWS CloudFormation
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation"></a>

*Ram Kandaswamy, Amazon Web Services*

## Resumo
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-summary"></a>

Esse padrão fornece exemplos de código e etapas para automatizar a criação de recursos da [Amazon WorkSpaces Applications](https://aws.amazon.com/workspaces/applications/) no Nuvem AWS usando um [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)modelo. O padrão mostra como usar uma CloudFormation pilha para automatizar a criação dos recursos do aplicativo WorkSpaces Applications, incluindo um construtor de imagens, imagem, instância de frota e pilha. Você pode transmitir seu aplicativo de WorkSpaces aplicativos para usuários finais em um navegador HTML5 compatível usando o modo de entrega de aplicativos ou desktop.

## Pré-requisitos e limitações
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma aceitação dos termos e condições das WorkSpaces inscrições
+ [Conhecimento básico de recursos de WorkSpaces aplicativos, como [frotas e pilhas e criadores](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html) de imagens](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-image-builders.html)

**Limitações**
+ Você não pode modificar a função [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)(IAM) associada a uma instância de WorkSpaces aplicativos após a criação dessa instância.
+ Você não pode modificar propriedades (como a [sub-rede](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-basics) ou o [grupo de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)) na instância do construtor de imagens do WorkSpaces Applications após a criação desse criador de imagens.

## Arquitetura
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-architecture"></a>

O diagrama a seguir mostra como automatizar a criação de recursos de WorkSpaces aplicativos usando um CloudFormation modelo.

![\[Fluxo de trabalho para criar automaticamente recursos de WorkSpaces aplicativos.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/4f0205f5-5b91-4832-9f0f-2135ae866226/images/cb578939-d9af-4f60-93c9-286881df4c3a.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Você cria um CloudFormation modelo com base no código YAML na seção [Informações adicionais](#automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-additional) desse padrão.

1. O CloudFormation modelo cria uma pilha CloudFormation de testes.

   1. (Opcional) Você cria uma instância do construtor de imagens usando WorkSpaces aplicativos.

   1. (Opcional) Você cria uma imagem do Windows usando seu software personalizado.

1. A CloudFormation pilha cria uma instância e uma pilha da frota de WorkSpaces aplicativos.

1. Você implanta seus recursos de WorkSpaces aplicativos para usuários finais em um HTML5 navegador compatível.

## Ferramentas
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-tools"></a>
+ O [Amazon WorkSpaces Applications](https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html) é um serviço de streaming de aplicativos totalmente gerenciado que fornece acesso instantâneo aos seus aplicativos de desktop de qualquer lugar. WorkSpaces Os aplicativos gerenciam AWS os recursos necessários para hospedar e executar seus aplicativos, escalam automaticamente e fornecem acesso aos usuários sob demanda.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a modelar e configurar seus AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida. Você pode usar um modelo para descrever seus recursos e as dependências deles, além de inicializá-los e configurá-los juntos como uma pilha, em vez de gerenciar recursos individualmente. Você pode gerenciar e provisionar pilhas em vários Contas da AWS e. Regiões da AWS

## Práticas recomendadas
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-best-practices"></a>
+ **Configure o acesso à rede para criadores de imagens corretamente** — Inicie os criadores de imagens em sub-redes de nuvem privada virtual (VPC) com acesso adequado à Internet usando um gateway NAT para acesso somente de saída à Internet.

  Teste a conectividade da rede com os recursos necessários (como servidores de aplicativos, bancos de dados e servidores de licenciamento) antes de criar imagens. Verifique se as tabelas de rotas da VPC permitem conexões com todos os recursos de rede necessários. Para obter mais informações, consulte [Acesso à Internet](https://docs.aws.amazon.com/appstream2/latest/developerguide/internet-access.html) na documentação de WorkSpaces aplicativos.
+ **Monitore a capacidade da frota em relação às cotas de serviço de forma proativa** — WorkSpaces as cotas de tipo e tamanho de instância de aplicativos são por, por Conta da AWS. Região da AWS Se você tiver várias frotas na mesma região que usam o mesmo tipo e tamanho de instância, o número total de instâncias em todas as frotas dessa região deverá ser menor ou igual à cota aplicável. Para obter mais informações, consulte [Solução de problemas de frotas](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting-fleets.html) na documentação de WorkSpaces aplicativos.
+ **Teste aplicativos no modo de teste do Image Builder antes da implantação da frota** — Sempre valide os aplicativos no modo de teste do Image Builder antes de criar imagens e implantá-las em frotas. O modo de teste simula as permissões limitadas que os usuários finais têm nas instâncias da frota. Para obter mais informações, consulte [Solução de problemas de criadores de imagens](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting-image-builder.html#troubleshooting-07) na documentação de WorkSpaces aplicativos.

## Épicos
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-epics"></a>

### (Opcional) Crie uma imagem de WorkSpaces aplicativos
<a name="optional-create-a-aas2-image"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale um software personalizado e crie uma imagem. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html)Considere usar o AppLocker recurso do Windows para bloquear ainda mais a imagem. | AWS DevOps, arquiteto de nuvem | 

### Implante o CloudFormation modelo
<a name="deploy-the-cfn-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize o CloudFormation modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html) | Administrador de sistemas da AWS, administrador de nuvem, arquiteto de nuvem, AWS geral, administrador da AWS | 
| Crie uma CloudFormation pilha usando o modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html) | Proprietário do aplicativo, administrador de sistemas da AWS, engenheiro do Windows | 

## Solução de problemas
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Vários problemas | Para obter mais informações, consulte [Solução de problemas](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting.html) na documentação de WorkSpaces aplicativos. | 

## Recursos relacionados
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-resources"></a>

**Referências**
+ [Comece a usar os WorkSpaces aplicativos da Amazon: configure com aplicativos de amostra](https://docs.aws.amazon.com/appstream2/latest/developerguide/getting-started.html)
+ [Crie uma frota e uma pilha de WorkSpaces aplicativos da Amazon](https://docs.aws.amazon.com/appstream2/latest/developerguide/set-up-stacks-fleets.html)

**Tutoriais e vídeos**
+ [Fluxo de trabalho do usuário do Amazon WorkSpaces Applications](https://www.youtube.com/watch?v=hVGQ87-Uhrc)
+ [Como migrar um aplicativo Windows Forms antigo para aplicativos da Amazon WorkSpaces ](https://www.youtube.com/watch?v=CIImtS2iVbg)
+ [AWS re:Invent 2018: entregue aplicativos de desktop com segurança com os aplicativos da Amazon (01) WorkSpaces BAP2](https://www.youtube.com/watch?v=xNIyc_inOhM)

## Mais informações
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-additional"></a>

O código a seguir é um exemplo de um CloudFormation modelo que você pode usar para criar automaticamente recursos de WorkSpaces aplicativos.

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  SubnetIds:
    Type: 'List<AWS::EC2::Subnet::Id>'
  testSecurityGroup:
    Type: 'AWS::EC2::SecurityGroup::Id'
  ImageName:
    Type: String
Resources:
  
  AppStreamFleet:
    Type: 'AWS::AppStream::Fleet'
    Properties:
      ComputeCapacity:
        DesiredInstances: 5
      InstanceType: stream.standard.medium
      Name: appstream-test-fleet
      DisconnectTimeoutInSeconds: 1200
      FleetType: ON_DEMAND
      IdleDisconnectTimeoutInSeconds: 1200
      ImageName: !Ref ImageName
      MaxUserDurationInSeconds: 345600
      VpcConfig:
        SecurityGroupIds:
          - !Ref testSecurityGroup
        SubnetIds: !Ref SubnetIds
  AppStreamStack:
    Type: 'AWS::AppStream::Stack'
    Properties:
      Description: AppStream stack for test
      DisplayName: AppStream test Stack
      Name: appstream-test-stack
      StorageConnectors:
        - ConnectorType: HOMEFOLDERS
      UserSettings:
        - Action: CLIPBOARD_COPY_FROM_LOCAL_DEVICE
          Permission: ENABLED
        - Action: CLIPBOARD_COPY_TO_LOCAL_DEVICE
          Permission: ENABLED
        - Action: FILE_DOWNLOAD
          Permission: ENABLED
        - Action: PRINTING_TO_LOCAL_DEVICE
          Permission: ENABLED
  AppStreamFleetAssociation:
    Type: 'AWS::AppStream::StackFleetAssociation'
    Properties:
      FleetName: appstream-test-fleet
      StackName: appstream-test-stack
    DependsOn:
      - AppStreamFleet
      - AppStreamStack
```

# Crie um analisador de log personalizado para o Amazon ECS usando um roteador de log Firelens
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router"></a>

*Varun Sharma, Amazon Web Services*

## Resumo
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-summary"></a>

O Firelens é um roteador de log do Amazon Elastic Container Service (Amazon ECS) e do AWS Fargate. [Você pode usar o Firelens para rotear registros de contêineres do Amazon ECS para a Amazon CloudWatch e outros destinos (por exemplo, [Splunk](https://www.splunk.com/) ou Sumo Logic).](https://www.sumologic.com/) O Firelens funciona com o [Fluentd](https://www.fluentd.org/) ou o [Fluent Bit](https://fluentbit.io/) como agente de registro, o que significa que você pode usar os [ parâmetros de definição de tarefas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) para rotear logs.

Ao optar por analisar os logs no nível da fonte, você pode analisar seus dados de registro e realizar consultas para responder de forma mais eficiente e eficaz aos problemas operacionais. Como aplicativos diferentes têm padrões de log diferentes, você precisa usar um analisador personalizado que estruture os logs e facilite a pesquisa em seu destino final.

Esse padrão usa um roteador de log Firelens com um analisador personalizado para enviar registros de um aplicativo Spring Boot CloudWatch de amostra executado no Amazon ECS. Em seguida, você pode usar o Amazon CloudWatch Logs Insights para filtrar os registros com base nos campos personalizados gerados pelo analisador personalizado. 

## Pré-requisitos e limitações
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da Amazon Web Services (AWS).
+ AWS Command Line Interface (AWS CLI), instalada e configurada na sua máquina local.
+ Docker, instalado e configurado em sua máquina local.
+ Um aplicativo em contêineres existente baseado no Spring Boot no Amazon Elastic Container Registry (Amazon ECR). 

## Arquitetura
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-architecture"></a>

![\[Usando um roteador de log Firelens para enviar registros CloudWatch de um aplicativo executado no Amazon ECS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9/images/ef60e087-965a-40e9-9f80-35edbda2befe.png)


**Pilha de tecnologia**
+ CloudWatch
+ Amazon ECR
+ Amazon ECS
+ Fargate
+ Docker
+ Fluent Bit

## Ferramentas
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-tools"></a>
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html): o Amazon Elastic Container Registry (Amazon ECR) é um serviço de registro de imagem de contêiner, seguro, escalável e confiável.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html): o Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html): o IAM é um serviço web que ajuda você a controlar, com segurança, o acesso a serviços da AWS.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html): a AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+ [Docker](https://www.docker.com/): o Docker é uma plataforma aberta para desenvolvimento, envio e execução de aplicativos.

**Código **

Os arquivos a seguir estão anexados a esse padrão:
+ `customFluentBit.zip`: contém os arquivos para adicionar a análise e as configurações personalizadas.
+ `firelens_policy.json`: contém o documento de política para criar uma política do IAM.
+ `Task.json`: contém um exemplo de definição de tarefa para o Amazon.

## Épicos
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-epics"></a>

### Crie uma imagem personalizada do Fluent Bit
<a name="create-a-custom-fluent-bit-image"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um repositório do Amazon ECR. | Cadastre-se no Console de Gerenciamento da AWS, abra o console do Amazon ECR e crie um repositório chamado `fluentbit_custom`.Para obter mais informações sobre isso, consulte [Criação de um repositório](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) na documentação do Amazon ECR. | Administrador de sistemas, Desenvolvedor | 
| Descompacte o customFluentBit pacote.zip. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) |  | 
| Crie a imagem do Docker personalizada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html)Para obter mais informações, consulte [Envio de uma imagem do Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) na documentação do Amazon ECR.  | Administrador de sistemas, Desenvolvedor | 

### Configure o cluster do Amazon ECS
<a name="set-up-the-amazon-ecs-cluster"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um cluster do Amazon ECS. | Crie um cluster do Amazon ECS seguindo as instruções da seção de *Modelos somente para redes* em [Criação de um cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) na documentação do Amazon ECS.Certifique-se de selecionar **Criar VPC** para criar uma nova nuvem privada virtual (VPC) para o cluster do Amazon ECS. | Administrador de sistemas, Desenvolvedor | 

### Configurar a tarefa do Amazon ECS
<a name="set-up-the-amazon-ecs-task"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
|  Configure o perfil do IAM de execução de tarefas do Amazon ECS. | Crie um perfil do IAM de execução de tarefas do Amazon ECS usando a `AmazonECSTaskExecutionRolePolicy` política gerenciada. Para obter mais informações sobre isso, consulte [Perfil do IAM para execução de tarefas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) na documentação do Amazon ECS.Certifique-se de registrar o nome do recurso da Amazon (ARN) do perfil do IAM. | Administrador de sistemas, Desenvolvedor | 
|  Anexe a política do IAM ao perfil do IAM de execução de tarefas do Amazon ECS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) | Administrador de sistemas, Desenvolvedor | 
| Configuração da definição de tarefa do Amazon ECS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html)Para obter mais informações sobre isso, consulte [Criação de uma definição de tarefa](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) na documentação do Amazon ECR. | Administrador de sistemas, Desenvolvedor | 

### Execute uma tarefa do Amazon ECS.
<a name="run-the-amazon-ecs-task"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute uma tarefa do Amazon ECS.  | No console do Amazon ECS, escolha **Clusters**, escolha o cluster que você criou anteriormente e, em seguida, execute a tarefa autônoma.Para obter mais informações sobre isso, consulte [Executar uma tarefa independente](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html) na documentação do Amazon ECR. | Administrador de sistemas, Desenvolvedor | 

### Verifique os CloudWatch registros
<a name="verify-the-cloudwatch-logs"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verificar os logs.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) | Administrador de sistemas, Desenvolvedor | 

## Recursos relacionados
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-resources"></a>
+ [Noções básicas do Docker para Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html) 
+ [Amazon ECS no AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) 
+ [Configuração de parâmetros básicos de serviço](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/basic-service-params.html) 

## Anexos
<a name="attachments-e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9/attachments/attachment.zip)

# Crie uma estrutura de orquestração de recursos baseada em API usando Actions e Terragrunt GitHub
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt"></a>

*Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande e Akash Kumar, Amazon Web Services*

## Resumo
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-summary"></a>

Esse padrão aproveita os fluxos de trabalho do GitHub Actions para automatizar o provisionamento de recursos por meio de cargas JSON padronizadas, eliminando a necessidade de configuração manual. Esse pipeline automatizado gerencia o ciclo de vida completo da implantação e pode se integrar perfeitamente a vários sistemas de front-end, desde componentes de interface de usuário personalizados até. ServiceNow Graças à flexibilidade da solução, os usuários podem interagir com o sistema por meio das interfaces de sua preferência, enquanto os processos permanecem padronizados.

A arquitetura de pipeline configurável pode ser adaptada para atender a diferentes requisitos organizacionais. Esta implementação de exemplo tem como foco o provisionamento da Amazon Virtual Private Cloud (Amazon VPC) e do Amazon Simple Storage Service (Amazon S3). O padrão aborda de forma eficaz os desafios comuns de gerenciamento de recursos em nuvem, padronizando solicitações em toda a organização e fornecendo pontos de integração consistentes. Com esta abordagem, as equipes conseguem solicitar e gerenciar recursos com mais facilidade, mantendo a padronização.

## Pré-requisitos e limitações
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma GitHub conta ativa com acesso ao repositório configurado

**Limitações**
+ A inclusão de novos recursos requer a adição manual de arquivos `terragrunt.hcl` na configuração do repositório.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-architecture"></a>

O diagrama apresentado a seguir ilustra os componentes e o fluxo de trabalho deste padrão.

![\[Fluxo de trabalho para automatizar o provisionamento de recursos com GitHub Actions e Terraform.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/bff5d70e-e8f1-454a-94bc-60e8cc16e69f/images/d4a768c8-4e11-493c-85ed-f4bf7e76ce60.png)


O diagrama da arquitetura ilustra as seguintes ações:

1. O usuário envia uma carga JSON para GitHub Actions, acionando o pipeline de automação.

1. O pipeline de GitHub ações recupera o código dos recursos necessários dos repositórios Terragrunt e Terraform, com base nas especificações da carga útil.

1. O pipeline assume a função apropriada AWS Identity and Access Management (IAM) usando o Conta da AWS ID especificado. Em seguida, o pipeline implanta os recursos no destino Conta da AWS e gerencia o estado do Terraform usando o bucket Amazon S3 específico da conta e a tabela do Amazon DynamoDB.

Cada um Conta da AWS contém funções do IAM para acesso seguro, um bucket Amazon S3 para armazenamento de estado do Terraform e uma tabela do DynamoDB para bloqueio de estado. Esse design possibilita a implantação automatizada e controlada de recursos entre Contas da AWS. O processo de implantação mantém o gerenciamento adequado do estado e o controle de acesso por meio de buckets do Amazon S3 e de perfis do IAM dedicados em cada conta.

## Ferramentas
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-tools"></a>

**Serviços da AWS**
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

**Outras ferramentas**
+ GitHub O [Actions](https://docs.github.com/en/actions) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ O [Terragrunt](https://terragrunt.gruntwork.io/docs/getting-started/overview/) é uma ferramenta de orquestração que amplia os recursos dos dois e do Terraform. OpenTofu Ele gerencia como padrões genéricos de infraestrutura são aplicados, facilitando a escalabilidade e a manutenção de grandes ambientes de infraestrutura.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [sample-aws-orchestration-pipeline-terraform](https://github.com/aws-samples/sample-aws-orchestration-pipeline-terraform).

## Práticas recomendadas
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-best-practices"></a>
+ Armazene AWS credenciais e dados confidenciais usando segredos GitHub do repositório para acesso seguro.
+ Configure o provedor OpenID Connect (OIDC) para que o GitHub Actions assuma a função do IAM, evitando credenciais estáticas.
+ Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

## Épicos
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-epics"></a>

### Criação e configuração do repositório
<a name="create-and-configure-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize o GitHub repositório. | Para inicializar o GitHub repositório, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps engenheiro | 
| Configure as permissões e os perfis do IAM. | Para realizar a configuração das permissões e dos perfis do IAM, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps engenheiro | 
| Configure GitHub segredos e variáveis. | Para obter instruções sobre como configurar segredos e variáveis do repositório no GitHub repositório, consulte [Criação de variáveis de configuração para um repositório na documentação](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#creating-configuration-variables-for-a-repository). GitHub Configure as seguintes variáveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps engenheiro | 
| Crie a estrutura do repositório. | Para criar a estrutura do repositório, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps engenheiro | 

### Acionamento do pipeline e validação dos resultados
<a name="trigger-the-pipeline-and-validate-results"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o pipeline usando curl.  | Para executar o pipeline por meio do [curl](https://curl.se/), use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html)Para obter mais informações sobre o processo de execução do pipeline, consulte [Informações adicionais](#create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-additional). | DevOps engenheiro | 
| Validação dos resultados referentes à execução do pipeline | Para validar os resultados, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html)Você também pode verificar novamente os recursos criados usando o arquivo `output.json`, gerado no repositório que está localizado no mesmo recurso que o arquivo `terragrunt.hcl`. | DevOps engenheiro | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Envie uma solicitação de limpeza. | Para excluir recursos que não são mais necessários, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps engenheiro | 

## Recursos relacionados
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-resources"></a>

**AWS Blogs**
+ [Use funções do IAM para conectar GitHub ações a ações no AWS](https://aws.amazon.com/blogs/security/use-iam-roles-to-connect-github-actions-to-actions-in-aws/)

**AWS service (Serviço da AWS) documentação**
+ [Criação de função do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Monitoramento CloudTrail de arquivos de log com o Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)
+ [Melhores práticas de segurança para o Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)

**GitHub recursos**
+ [Create a repository dispatch event](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#create-a-repository-dispatch-event)
+ [Criação de webhooks](https://docs.github.com/en/webhooks/using-webhooks/creating-webhooks#payload)
+ [Implemente controles de acesso robustos no GitHub repositório](https://docs.github.com/en/get-started/learning-about-github/access-permissions-on-github)
+ [Regularly audit repository access](https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization)
+ [Verificações de segurança em CI/CD andamento](https://github.com/marketplace/actions/checkov-github-action)
+ [Use a autenticação multifatorial para contas GitHub ](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)

## Mais informações
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-additional"></a>

**Processo de execução do pipeline**

A seguir, apresentamos as etapas do processo de execução do pipeline:

1. **Validação do formato da carga útil em JSON**: garante que a configuração JSON recebida está estruturada de forma adequada e contém todos os parâmetros necessários

1. **Assume a função do IAM especificada** - autentica e assume a função do IAM necessária para as operações AWS 

1. **Download do código necessário do Terraform e do Terragrunt**: recupera a versão especificada do código do recurso e suas dependências

1. **Executa a implantação de recursos** - aplica a configuração para implantar ou atualizar AWS recursos no ambiente de destino

**Exemplo de carga útil usada para a criação de uma VPC**

A seguir, apresentamos um exemplo de código para a criação do bucket de estado do backend do Terraform:

```
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
```

```
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
```

Confira a seguir um exemplo de carga útil para criar uma VPC com a Amazon VPC, na qual o parâmetro `vpc_cidr` define as especificações do [bloco CIDR](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) para a VPC. O bucket de estado do Terraform é mapeado para uma variável definida nos arquivos `terraform`. O parâmetro `ref` contém o nome da ramificação do código a ser executado.

```
{
    "ref": "main",
    "inputs": {
        "RequestParameters": {
            "RequestId": "1111111",
            "RequestType": "create",
            "ResourceType": "vpc",
            "AccountId": "1234567890",
            "AccountAlias": "account-alias",
            "RegionId": "us-west-2",
            "ApplicationName": "myapp",
            "DivisionName": "division-name",
            "EnvironmentId": "dev",
            "Suffix": "poc"
        },
        "ResourceParameters": [
            {
                "VPC": {
                    "vpc_cidr": "10.0.0.0/16"
                }
            }
        ]
    }
}
```

Os `RequestParameters` são usados para acompanhar o status da solicitação na seção do pipeline, e o `tfstate` é criado com base nessas informações. Os seguintes parâmetros contêm metadados e informações de controle:
+ `RequestId`: identificador exclusivo da solicitação
+ `RequestType`: tipo de operação (criação, atualização ou exclusão)
+ `ResourceType`: tipo de recurso a ser provisionado
+ `AccountId`— Alvo Conta da AWS para implantação
+ `AccountAlias`— Nome amigável para o Conta da AWS
+ `RegionId`— Região da AWS para implantação de recursos
+ `ApplicationName`: nome da aplicação
+ `DivisionName`: divisão da organização
+ `EnvironmentId`: ambiente (por exemplo, desenvolvimento e produção)
+ `Suffix`: identificador adicional para os recursos

Os `ResourceParameters` contêm a configuração específica do recurso, que mapeia para variáveis definidas nos arquivos do Terraform Quaisquer variáveis personalizadas que precisem ser transferidas para os módulos do Terraform devem ser incluídas nos `ResourceParameters`. O parâmetro `vpc_cidr` é obrigatório para a Amazon VPC.

# Crie pull requests automatizados para a AWS infraestrutura gerenciada pelo Terraform usando Actions GitHub
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure"></a>

*Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay e Prafful Gupta, Amazon Web Services*

## Resumo
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-summary"></a>

Este padrão apresenta um utilitário de automação projetado para eliminar o trabalho manual e repetitivo envolvido no gerenciamento de alterações em diversos repositórios do Terraform. Várias organizações usam repositórios do Terraform para gerenciar a infraestrutura como código (IaC) que, frequentemente, conta com centenas de repositórios distintos que representam variados ambientes, serviços ou equipes. O gerenciamento desses repositórios em grande escala representa um desafio operacional significativo. Tarefas rotineiras, como atualizar um parâmetro, atualizar versões de módulos ou aplicar alterações na configuração, geralmente exigem a criação e o gerenciamento de pull requests (PRs) em vários repositórios várias vezes ao dia.

Até mesmo para pequenas alterações, esse processo manual e repetitivo é demorado e sujeito a erros. É necessário que os engenheiros apliquem de forma consistente a mesma alteração em todos os repositórios de destino e elaborem títulos e descrições de PR relevantes. Além disso, esses profissionais frequentemente precisam interagir com ferramentas externas, como o Jira, para buscar ou incluir referências de rastreamento de problemas. Embora necessárias, essas tarefas são trabalhos pesados e padronizados que ocupam tempo valioso dos engenheiros e comprometem a eficiência geral. A ausência de automação neste fluxo de trabalho cria problemas, diminui a velocidade de entrega e eleva a sobrecarga mental das equipes encarregadas da manutenção de infraestruturas do Terraform em grande escala.

**Visão geral da solução**

Para enfrentar esse desafio, este padrão oferece um utilitário totalmente orientado por configuração, permitindo que os usuários definam as alterações desejadas em um arquivo de configuração estruturado. Neste arquivo, os repositórios de destino, módulos, parâmetros e valores são especificados com base em um esquema claramente definido.

Uma vez configurado, o utilitário executa as seguintes etapas automatizadas:

1. **Realiza a leitura da configuração definida pelo usuário** para determinar o escopo e a natureza das alterações

1. **Cria uma nova ramificação** em cada repositório de destino com as atualizações necessárias aplicadas

1. **Gera uma PR** para cada alteração, garantindo consistência entre todos os repositórios

1. **Envia notificações do Slack** (opcional) para alertar as partes interessadas com links diretos para o criado PRs

Ao automatizar essas tarefas repetitivas, o utilitário reduz significativamente o tempo, o esforço e o risco associados ao gerenciamento de atualizações de infraestrutura em grande escala. O utilitário permite que as equipes se concentrem em trabalhos de engenharia de maior valor, ao mesmo tempo em que ajuda a garantir que as alterações sejam aplicadas de forma consistente e possam ser rastreadas em todos os repositórios.

## Pré-requisitos e limitações
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Python versão 3.8 ou posterior.
+ Um token de acesso GitHub pessoal (PAT). Para obter mais informações, consulte [Criação de um token de acesso pessoal (clássico)](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic) na GitHub documentação.
+ O GitHub PAT pode acessar seus repositórios de destino para que o utilitário possa realizar operações como criar ramificações e pull requests. Para obter mais informações, consulte o [repositório de GitHub código](https://github.com/aws-samples/sample-terraform-pr-automation-utility?tab=readme-ov-file#repository-access-verification) desse padrão.

**Limitações**
+ A **complexidade da configuração** representa o principal desafio. A eficácia da automação é limitada pelas funcionalidades presentes no arquivo de configuração. Enquanto alterações padrão são tratadas de forma eficiente pelo sistema, modificações complexas na infraestrutura podem exigir intervenção manual, e alguns casos específicos permanecem fora do escopo da automação.
+ A **segurança e o acesso** apresentam considerações significativas, especialmente no gerenciamento de tokens de GitHub acesso e limites de taxa de API. É fundamental que as organizações conciliem cuidadosamente a necessidade de automação com o armazenamento e o gerenciamento seguros de credenciais, garantindo controles de acesso adequados sem comprometer a eficiência operacional.
+ As **restrições de validação** representam outra limitação significativa, pois o sistema automatizado tem capacidade limitada para validar a lógica de negócio e os requisitos específicos de cada ambiente. As dependências complexas e as interações entre serviços frequentemente requerem supervisão humana, já que a validação automatizada não consegue capturar integralmente todas as nuances contextuais e as regras de negócios.
+ Problemas de **escala e de performance** surgem ao lidar com alterações em infraestrutura de grande escala. O sistema deve operar dentro dos limites GitHub da API enquanto gerencia vários repositórios simultaneamente. As operações intensivas em recursos que são realizadas em uma infraestrutura extensa podem causar gargalos de performance, requerendo gerenciamento cuidadoso.
+ **Os limites de integração** restringem a flexibilidade do sistema porque ele foi projetado principalmente para funcionar com ferramentas específicas, como GitHub o Slack. As organizações que usam ferramentas distintas podem precisar de soluções customizadas, e as possibilidades de customização do fluxo de trabalho deste padrão estão limitadas aos pontos de integração compatíveis.

## Arquitetura
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-architecture"></a>

O diagrama apresentado a seguir ilustra o fluxo de trabalho e os componentes para esta solução.

![\[Fluxo de trabalho para criar pull requests automatizados usando GitHub Ações.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e211359a-03b1-4e69-b152-eb7c09bdb01a/images/6cee0660-5b44-4abe-970c-c0a3c830a9aa.png)


O fluxo de trabalho consiste nas seguintes etapas:

1. O desenvolvedor aciona GitHub ações especificando o repositório do Terraform.

1. O utilitário de automação lê as configurações que foram definidas.

1. O utilitário de automação também extrai o repositório do Terraform fornecido.

1. O utilitário de automação cria uma nova ramificação e realiza atualizações nos modelos do Terraform localmente.

1. O utilitário de automação envia a nova ramificação ao repositório e cria uma nova PR. 

1. O utilitário de automação usa notificações do Slack que incluem links de relações públicas para notificar os desenvolvedores e habilita a implantação de modelos do Terraform. Nuvem AWS 

## Ferramentas
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-tools"></a>
+ [GitHub](https://docs.github.com/)é uma plataforma para desenvolvedores que os desenvolvedores podem usar para criar, armazenar, gerenciar e compartilhar seu código.
+ GitHub O [Actions](https://docs.github.com/en/actions) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.
+ [HashiCorp O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ O [Slack](https://slack.com/help/articles/115004071768-What-is-Slack-), uma solução da Salesforce, consiste em uma plataforma de conversação com tecnologia de IA que oferece colaboração por chat e vídeo, automatiza processos no-code e facilita o compartilhamento de informações.

**Repositório de código**

O código desse padrão está disponível no [fluxo de trabalho GitHub automatizado de atualização da infraestrutura do Terraform usando o repositório GitHub Actions](https://github.com/aws-samples/sample-terraform-pr-automation-utility?tab=readme-ov-file).

## Práticas recomendadas
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-best-practices"></a>
+ O **gerenciamento eficaz de alterações** é essencial para uma implementação com êxito. As organizações devem adotar uma estratégia de implementação gradual para mudanças em grande escala. Mantenha convenções consistentes de nomenclatura para as ramificações e descrições de PRs, e assegure que todas as alterações estejam devidamente documentadas.
+ Os **controles de segurança** devem ser implementados rigorosamente, com foco nos princípios de acesso com privilégios mínimos e no gerenciamento seguro de credenciais. Habilite regras de proteção para ramificações com a finalidade de impedir alterações não autorizadas. Realize auditorias de segurança regularmente para manter a integridade do sistema.
+ Um **protocolo de testes** robusto deve incluir a execução automatizada do `terraform plan` em pipelines de integração e de implantação contínuas (CI/CD). Além disso, o protocolo deve contemplar verificações de validação anteriores à confirmação e ambientes de análise dedicados a alterações críticas. Essa abordagem de testes em várias camadas contribui para a identificação antecipada de problemas e assegura a estabilidade da infraestrutura.
+ A **estratégia de monitoramento** precisa abranger mecanismos de alerta abrangentes, rastreamento detalhado de success/failure métricas e mecanismos automatizados de repetição para operações com falha. Essa estratégia ajuda a garantir visibilidade operacional e permite uma resposta rápida a quaisquer problemas que surgirem.
+ Os **padrões de configuração** devem enfatizar o controle de versão de todas as configurações, mantendo a modularidade para reutilização e escalabilidade. A documentação clara do esquema e a inclusão de exemplos ajudam as equipes a compreender e aplicar corretamente o sistema de automação.

## Épicos
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-epics"></a>

### Instalação e configuração
<a name="installation-and-setup"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o repositório. | Para configurar o repositório, execute os seguintes comandos:<pre># Clone the automation tool repository<br />git clone https://github.com/aws-samples/sample-terraform-pr-automation-utility<br />cd sample-terraform-pr-automation-utility<br /><br /># Copy example configuration<br />cp config.example.yaml config.yaml<br /></pre> | AWS DevOps | 
| Instale as dependências. | Para instalar e verificar as dependências do Python, execute os seguintes comandos:<pre># Install Python dependencies<br />pip3 install -r requirements.txt<br /><br /># Verify installation<br />python3 -c "import github; import hcl2; import yaml; import requests; print('All packages installed successfully')"<br /></pre> | AWS DevOps | 
| Configure o GitHub token. | Para configurar o GitHub token e verificar se ele funciona, execute os seguintes comandos:<pre># Set GitHub token environment variable<br />export GITHUB_TOKEN="your_github_token_here"<br /><br /># Verify token works<br />curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user<br /></pre> | AWS DevOps | 

### Definição do arquivo de configuração para as alterações no Terraform
<a name="set-up-configuration-file-for-terraform-changes"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o arquivo `config.yaml`. | Para definir os repositórios de destino e as alterações desejadas, edite o arquivo `config.yam`l conforme mostrado a seguir:<pre>repositories:<br />  - owner: "your-org"<br />    repo: "your-terraform-repo"<br />    files:<br />      - path: "variables.tf"<br />        changes:<br />          variables:<br />            - app_version:<br />                default:<br />                  update:<br />                    - from: ["1.0.0"]<br />                      to: "1.1.0"<br /><br />settings:<br />  pr_title_template: "Infrastructure Update - {{timestamp}}"<br />  slack:<br />    username: "Terraform Bot"<br />    icon_emoji: ":terraform:"<br />    notify_on_success: true<br />    notify_on_error: true<br />    notify_batch_summary: true<br /></pre> | AWS DevOps | 

### Teste e validação
<a name="test-and-validate"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Realize testes preliminares. | Sempre teste sua configuração antes de executá-la em repositórios de produção. Use os seguintes comandos:<pre># 1. Test configuration syntax<br />python3 -c "from main import get_config_content; get_config_content()"<br /><br /># 2. Run in dry-run mode first<br />DRY_RUN=true python3 main.py<br /><br /># 3. Test with minimal configuration<br /># Use a simple config.yaml with just one repository and one change</pre> | AWS DevOps | 
| Verifique o acesso ao repositório. | Para verificar se o GitHub token pode acessar o repositório, execute o seguinte comando:<pre># Test GitHub token access<br />curl -H "Authorization: token $GITHUB_TOKEN" \<br />  https://api.github.com/repos/owner/repo-name<br /><br /># Should return repository information, not 404</pre> | AWS DevOps | 

### Execução do utilitário de automação
<a name="run-the-automation-utility"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o utilitário de automação usando a interface de usuário do GitHub Actions. | Para executar o utilitário de automação usando a interface de usuário do GitHub Actions, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-automated-pull-requests-for-terraform-managed-aws-infrastructure.html) | AWS DevOps | 
| (Como alternativa) Execute o utilitário de automação usando a linha de comando. | Se preferir, você pode executar o utilitário de automação na linha de comando em vez de usar a interface do usuário do GitHub Actions. Use o seguinte comando:<pre># Run actual automation<br />python3 main.py</pre> | AWS DevOps | 

### Validação PRs e alterações
<a name="validate-prs-and-changes"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Revise o criado PRs e as alterações. | Para monitorar os resultados da execução do GitHub fluxo de trabalho, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-automated-pull-requests-for-terraform-managed-aws-infrastructure.html) | AWS DevOps | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| (Opcional) Limpe PRs. | Feche abandonado ou desnecessário PRs. | AWS DevOps | 

## Recursos relacionados
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-resources"></a>

**AWS Orientação prescritiva**
+ [Usando o Terraform como uma ferramenta IaC para o Nuvem AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/choose-iac-tool/terraform.html)

**GitHub documentação**
+ [About pull requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
+ [Managing your personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
+ [Entendendo GitHub as ações](https://docs.github.com/en/actions/get-started/understand-github-actions)
+ [Guia de início rápido para ações GitHub ](https://docs.github.com/en/actions/get-started/quickstart)

# Criar pipelines dinâmicos de CI para projetos Java e Python automaticamente
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically"></a>

*Aromal Raj Jayarajan, Vijesh Vijayakumaran Nair, MAHESH RAGHUNANDANAN e Amarnath Reddy, Amazon Web Services*

## Resumo
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-summary"></a>

Este padrão mostra como criar pipelines dinâmicos de integração contínua (CI) para projetos Java e Python automaticamente usando as ferramentas de desenvolvedor da AWS.

À 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 no AWS Step Functions, você pode garantir que o uso e a abordagem de seus pipelines de CI sejam consistentes.

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

**nota**  
O Step Functions orquestra a criação do pipeline usando vários serviços da AWS. Para obter mais informações sobre os serviços da AWS usados nesta solução, consulte a seção **Ferramentas** deste padrão.

## Pré-requisitos e limitações
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket do Amazon S3 na mesma região da AWS em que essa solução está sendo implantada
+ Um [diretor](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) do AWS Identity and Access Management (IAM) que tem as CloudFormation permissões da AWS 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.
+ Os perfis do IAM provisionados neste padrão seguem o princípio do privilégio mínimo. As permissões deste perfil do IAM devem ser atualizadas com base nos recursos específicos que seu pipeline precisa criar.

## Arquitetura
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-architecture"></a>

**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
+ AWS Lambda
+ Amazon DynamoDB

**Arquitetura de destino**

O diagrama a seguir mostra um exemplo de fluxo de trabalho para criar automaticamente pipelines dinâmicos de CI para projetos Java e Python usando ferramentas de desenvolvedor da AWS.

![\[Fluxo de trabalho para criar automaticamente pipelines dinâmicos de CI para projetos Java e Python usando ferramentas da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/bef2ccb8-68b3-4c0f-9ee7-4b93e9422d9c/images/b5ed003f-cf16-4130-8bfb-2bc2cb9a0d33.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um usuário da AWS fornece os parâmetros de entrada para a criação do pipeline de CI no formato JSON. Esta entrada inicia um fluxo de trabalho do Step Functions (*máquina de estado*) que cria um pipeline de CI usando as ferramentas de desenvolvedor da AWS.

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

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

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

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

1. 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 [Conceitos básicos da AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) na CloudFormation documentação.

## Ferramentas
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-tools"></a>

**Ferramentas**
+ O [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) é um serviço de orquestração de tecnologia sem servidor que permite combinar funções do AWS Lambda e outros serviços da AWS para criar aplicações essenciais aos negócios.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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.
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 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 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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 Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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.
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+ O [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) oferece armazenamento hierárquico seguro para o 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](https://github.com/aws-samples/automated-ci-pipeline-creation)repositório. O repositório contém os CloudFormation modelos necessários para criar a arquitetura de destino descrita nesse padrão.

## Práticas recomendadas
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-best-practices"></a>
+ 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?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html). CodePipeline CodePipeline 
+ Aplique permissões de privilégio mínimo ao configurar perfis do IAM. Para obter mais informações, consulte [Aplicar permissões de privilégios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) na documentação do 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configuring-block-public-access-bucket.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) na documentação do Amazon S3.
+ Use o IAM Access Analyzer ao configurar políticas do IAM. A ferramenta fornece recomendações práticas para ajudar você a criar políticas do IAM seguras e funcionais. Para obter mais informações, consulte [Usar o AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) na documentação do IAM.
+ Quando possível, defina condições de acesso específicas ao configurar as políticas do IAM.
+ Ative o CloudWatch registro na Amazon para fins de monitoramento e auditoria. Para obter mais informações, consulte [O que é o Amazon CloudWatch Logs?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) na CloudWatch documentação.

## Épicos
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-epics"></a>

### Configurar os pré-requisitos
<a name="configure-the-prerequisites"></a>


| Tarefa | Description | 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) na documentação do Amazon S3.O bucket do Amazon S3 deve estar na mesma região da AWS na qual você está implantando a solução. | AWS DevOps | 
| Clone o GitHub repositório. | Clone o GitHub [automated-ci-pipeline-creation](https://github.com/aws-samples/automated-ci-pipeline-creation)repositório executando o seguinte comando em uma janela de terminal:<pre>git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git</pre>Para obter mais informações, consulte [Clonar um repositório](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) na GitHub documentação. | 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) na documentação do Amazon S3.Certifique-se de fazer o upload somente do conteúdo da pasta **Solution-Templates**. Você pode fazer upload dos arquivos somente no nível raiz do bucket do Amazon S3. | AWS DevOps | 

### Implante a solução
<a name="deploy-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma CloudFormation pilha para implantar a solução usando o arquivo template.yml no repositório clonado. GitHub  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)Durante a criação da pilha, ela estará listada na página **Pilhas** com um status de **CREATE\$1IN\$1PROGRESS**. Certifique-se de esperar que o status da pilha mude para **CREATE\$1COMPLETE** antes de concluir as etapas restantes desse padrão. | Administrador da AWS, AWS DevOps | 

### Testar a configuração
<a name="test-the-setup"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Selecione a função que você criou.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)**Formatação JSON**<pre>{<br />  "details": {<br />    "tech_stack": "Name of the Tech Stack (python/java)",<br />    "project_name": "Name of the Project that you want to create with",<br />    "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />  }<br />}</pre>**Exemplo de entrada em Java JSON**<pre>{<br />  "details": {<br />    "tech_stack": "java",<br />    "project_name": "pipeline-java-pjt",<br />    "pre_build": "yes",<br />    "build": "yes",<br />    "post_build": "yes",<br />    "reports": "yes"<br />  }<br />}</pre>**Exemplo de entrada em Python JSON**<pre>{<br />  "details": {<br />    "tech_stack": "python",<br />    "project_name": "pipeline-python-pjt",<br />    "pre_build": "yes",<br />    "build": "yes",<br />    "post_build": "yes",<br />    "reports": "yes"<br />  }<br />}</pre> | Administrador da AWS, AWS DevOps | 
| Confirme se o CodeCommit repositório do pipeline de CI foi criado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Verifique os recursos CodeBuild do projeto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Valide os CodePipeline estágios. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Confirme se o pipeline de CI foi executado com êxito. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 

### Limpe os seus recursos
<a name="clean-up-your-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua a pilha de recursos. CloudFormation | Exclua a pilha de recursos do pipeline de CI. CloudFormationPara obter mais informações, consulte [Excluir uma pilha no CloudFormation console da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) na CloudFormation documentação.Certifique-se de excluir a pilha chamada **<project\$1name>-stack**. | AWS DevOps | 
| Exclua as dependências do pipeline de CI no Amazon S3 e. CloudFormation | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) na documentação do Amazon S3. | AWS DevOps | 

## Recursos relacionados
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-resources"></a>
+ [Creating a Step Functions state machine that uses Lambda](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html) (documentação do AWS Step Functions)
+ [AWS Step Functions WorkFlow Studio](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html) (documentação do AWS Step Functions)
+ [DevOps e AWS](https://aws.amazon.com/devops/)
+ [Como a AWS CloudFormation funciona?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html) ( CloudFormation Documentação da AWS)
+ [Completo CI/CD com AWS CodeCommit, AWS CodeBuild CodeDeploy, AWS e AWS CodePipeline](https://aws.amazon.com/blogs/devops/complete-ci-cd-with-aws-codecommit-aws-codebuild-aws-codedeploy-and-aws-codepipeline/) (publicação no blog da AWS)
+ [Cotas, requisitos de nome e limites de caracteres do IAM e AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) (documentação do IAM)

# Implante canários CloudWatch Synthetics usando o Terraform
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform"></a>

*Dhrubajyoti Mukherjee e Jean-Francois Landreau, Amazon Web Services*

## Resumo
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-summary"></a>

É importante validar a integridade de um sistema do ponto de vista do cliente e confirmar se os clientes conseguem se conectar. Isso é mais difícil quando os clientes não chamam constantemente o endpoint. [A Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) apoia a criação de canários, que podem testar endpoints públicos e privados. Ao usar canários, você pode saber o status de um sistema mesmo que ele não esteja em uso. Esses canários são scripts Node.js Puppeteer ou scripts Python Selenium.

Esse padrão descreve como usar o HashiCorp Terraform para implantar canários que testam endpoints privados. Incorpora um script do Puppeteer que testa se um URL retorna. `200-OK` O script do Terraform pode então ser integrado ao script que implanta o endpoint privado. Também é possível modificar a solução para monitorar endpoints públicos.

## Pré-requisitos e limitações
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-prereqs"></a>

**Pré-requisitos**
+ Uma conta ativa da Amazon Web Services (AWS) com uma nuvem privada virtual (VPC) e sub-redes privadas
+ O URL do endpoint que pode ser acessado a partir das sub-redes privadas
+ Terraform instalado no ambiente de implantação

**Limitações**

A solução atual funciona para as seguintes versões de tempo de execução do CloudWatch Synthetics:
+ syn-nodejs-puppeteer-3,4
+ syn-nodejs-puppeteer-3,5
+ syn-nodejs-puppeteer-3,6
+ syn-nodejs-puppeteer-3,7

À medida que novas versões de runtime forem lançadas, talvez você precise atualizar a solução atual. Você também precisará modificar a solução para acompanhar as atualizações de segurança.

**Versões do produto**
+ Terraform 1.3.0

## Arquitetura
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-architecture"></a>

O Amazon CloudWatch Synthetics é baseado no CloudWatch Lambda e no Amazon Simple Storage Service (Amazon S3). A Amazon CloudWatch oferece um assistente para criar os canários e um painel que exibe o status das corridas de canários. A função do Lambda executa o script. O Amazon S3 armazena os logs e as capturas de tela das execuções canárias.

Esse padrão simula um endpoint privado por meio de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) implantada nas sub-redes de destino. A função do Lambda requer interfaces de rede elásticas na VPC em que o endpoint privado é implantado.

![\[A descrição segue o diagrama.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/73ed0103-ec45-4653-bb29-f402a88f0c64/images/39aaed0f-f259-4f2a-98fb-8e3a340d0b02.png)


O diagrama mostra o seguinte:

1. O canário Synthetics inicializa a função do Lambda do canário.

1. A função do Lambda canário se conecta à interface de rede elástica.

1. A função do Lambda canário monitora o status do endpoint.

1. O canário Synthetics envia os dados de execução para o bucket e as métricas do S3. CloudWatch 

1. Um CloudWatch alarme é iniciado com base nas métricas.

1. O CloudWatch alarme inicia o tópico Amazon Simple Notification Service (Amazon SNS).

## Ferramentas
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-tools"></a>

**Serviços da AWS**
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus recursos da AWS e dos aplicativos que você executa na AWS em tempo real.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS. Esse padrão usa endpoints da VPC e interfaces de rede elástica.

**Outros serviços**
+ [HashiCorp O Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura como código (IaC) de código aberto que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem. Esse padrão usa o Terraform para implantar a infraestrutura.
+ O [Puppeteer](https://pptr.dev/) é uma biblioteca Node.js. O tempo de execução do CloudWatch Synthetics usa a estrutura do Puppeteer.

**Código **

A solução está disponível no watch-synthetics-canary-terraform repositório na GitHub [nuvem](https://github.com/aws-samples/cloudwatch-synthetics-canary-terraform). Para obter mais informações, consulte a seção *Informações adicionais*.

## Épicos
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-epics"></a>

### Implemente a solução para monitorar um URL privado
<a name="implement-the-solution-for-monitoring-a-private-url"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Reúna os requisitos para monitorar o URL privado. | Reúna a definição completa do URL: domínio, parâmetros e cabeçalhos. Para se comunicar de forma privada com o Amazon S3 e a CloudWatch Amazon, use endpoints VPC. Observe como a VPC e as sub-redes são acessíveis ao endpoint. Considere a frequência das corridas de canários. | Arquiteto de nuvem, administrador de rede | 
| Modificar a solução existente para monitorar o URL privado. | Modificar o arquivo `terraform.tfvars`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Arquiteto de nuvem | 
| Implanta e opera a solução. | Para implantar a solução, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Arquiteto de nuvem, DevOps engenheiro | 

## Solução de problemas
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A exclusão dos recursos provisionados é interrompida. | Exclua manualmente a função do Lambda canário, a interface de rede elástica correspondente e o grupo de segurança, nessa ordem. | 

## Recursos relacionados
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-resources"></a>
+ [Usar monitoramento sintético](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)
+ [Monitore os endpoints do API Gateway com o Amazon CloudWatch Synthetics](https://aws.amazon.com/blogs/mt/monitor-api-gateway-endpoints-with-amazon-cloudwatch-synthetics/) (publicação no blog)

## Mais informações
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-additional"></a>

**Artefatos do repositório**

Os artefatos do repositório estão na seguinte estrutura.

```
.
├── README.md
├── main.tf
├── modules
│   ├── canary
│   └── canary-infra
├── terraform.tfvars
├── tf.plan
└── variable.tf
```

O arquivo `main.tf` contém o módulo principal e implanta dois submódulos:
+ `canary-infra` implanta a infraestrutura necessária para as canárias.
+ `canary` implanta os canários.

Os parâmetros de entrada da solução estão localizados no arquivo `terraform.tfvars`. Você pode usar o exemplo de código a seguir para criar um canário.

```
module "canary" {
    source = "./modules/canary"
    name   = var.name
    runtime_version = var.runtime_version
    take_screenshot = var.take_screenshot
    api_hostname = var.api_hostname
    api_path = var.api_path
    reports-bucket = module.canary_infra.reports-bucket
    role = module.canary_infra.role
    security_group_id = module.canary_infra.security_group_id
    subnet_ids = var.subnet_ids
    frequency = var.frequency
    alert_sns_topic = var.alert_sns_topic
}
```

O arquivo .var correspondente segue.

```
name   = "my-canary"
runtime_version = "syn-nodejs-puppeteer-3.7"
take_screenshot = false
api_hostname = "mydomain.internal"
api_path = "/path?param=value"
vpc_id = "vpc_id"
subnet_ids = ["subnet_id1"]
frequency = 5
alert_sns_topic = "arn:aws:sns:eu-central-1:111111111111:yyyyy"
```

**Como limpar a solução**

Se você estiver testando em um ambiente de desenvolvimento, poderá limpar a solução para evitar custos acumulados.

1. No Console de Gerenciamento da AWS, navegue até o console do Amazon S3. Esvazie o bucket do Amazon S3 que a solução criou. Certifique-se de fazer um backup dos dados, se necessário.

1. No seu ambiente de desenvolvimento, a partir do diretório `cloudwatch-synthetics-canary-terraform`, execute o comando `destroy`.

   ```
   terraform destroy
   ```

# Implemente uma ChatOps solução para gerenciar os resultados do escaneamento SAST usando o Amazon Q Developer em aplicativos de bate-papo, ações personalizadas e CloudFormation
<a name="deploy-chatops-solution-to-manage-sast-scan-results"></a>

*Anand Bukkapatnam Tirumala, Amazon Web Services*

## Resumo
<a name="deploy-chatops-solution-to-manage-sast-scan-results-summary"></a>

Esse padrão apresenta uma solução abrangente que usa o Amazon Q Developer em aplicativos de bate-papo para agilizar o gerenciamento de falhas de verificação de testes estáticos de segurança de aplicativos (SAST) relatadas. SonarQube Essa abordagem inovadora integra ações e notificações personalizadas em uma interface conversacional, permitindo processos eficientes de colaboração e tomada de decisão nas equipes de desenvolvimento.

No ambiente de desenvolvimento de software acelerado de hoje, gerenciar os resultados de verificação de SAST com eficiência é crucial para manter a qualidade e a segurança do código. No entanto, muitas organizações enfrentam os seguintes desafios significativos:
+ Atraso na conscientização de vulnerabilidades críticas devido a sistemas de notificação ineficientes
+ Processos lentos de tomada de decisão causados por fluxos de trabalho de aprovação desconectados
+ Falta de respostas imediatas e acionáveis às falhas de verificação de SAST
+ Comunicação e colaboração fragmentadas em torno das descobertas de segurança
+ Configuração manual de infraestrutura demorada e propensa a erros para ferramentas de segurança

Esses problemas geralmente levam ao aumento dos riscos de segurança, atrasos nos lançamentos e à redução da produtividade da equipe. Para enfrentar esses desafios de forma eficaz, é necessária uma solução que possa agilizar o gerenciamento de resultados de SAST, aprimorar a colaboração das equipes e automatizar o provisionamento da infraestrutura.

Os principais recursos da solução incluem:
+ **Notificações personalizadas**: alertas e notificações em tempo real são enviados diretamente aos canais de chat da equipe, garantindo o conhecimento e a ação de maneira rápida para as vulnerabilidades ou falhas da verificação de SAST.
+ **Aprovações conversacionais**: as partes interessadas podem iniciar e concluir fluxos de trabalho de aprovação dos resultados de verificação de SAST facilmente na interface de chat, acelerando os processos de tomada de decisão.
+ **Ações personalizadas**: as equipes podem definir e executar ações personalizadas com base nos resultados da verificação de SAST, como acionar automaticamente mensagens de e-mail em caso de falhas no quality gate, melhorando a capacidade de resposta aos problemas de segurança.
+ **Colaboração centralizada**: todas as discussões, decisões e ações relacionadas à verificação de SAST são mantidas em um ambiente de chat unificado, promovendo melhor colaboração e compartilhamento de conhecimento entre os membros da equipe.
+ **Infraestrutura como código (IaC)** — Toda a solução está repleta de AWS CloudFormation modelos, permitindo um provisionamento de infraestrutura mais rápido e confiável, ao mesmo tempo que reduz os erros de configuração manual.

## Pré-requisitos e limitações
<a name="deploy-chatops-solution-to-manage-sast-scan-results-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Uma função AWS Identity and Access Management (IAM) com permissões para criar e gerenciar recursos associados aos Serviços da AWS listados em [Ferramentas](#deploy-chatops-solution-to-manage-sast-scan-results-tools).
+ Um espaço de trabalho do Slack.
+ O Amazon Q Developer em aplicações de chat foi adicionado ao espaço de trabalho do Slack necessário como um plug-in. Para obter mais informações, consulte [Add apps to your Slack workspace](https://slack.com/intl/en-in/help/articles/202035138-Add-apps-to-your-Slack-workspace) na documentação do Slack. Anote o ID do espaço de trabalho do Slack, conforme mostrado Console de gerenciamento da AWS após o registro bem-sucedido.
+ Um Amazon Q Developer configurado no cliente de aplicativos de bate-papo, com o ID do espaço de trabalho prontamente disponível para entrada no CloudFormation console. Para obter instruções, consulte [Configure a Slack client](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup) no *Guia do administrador do Amazon Q Developer em aplicações de chat*.
+ Uma conta de e-mail de origem criada e verificada no Amazon Simple Email Service (Amazon SES) para enviar mensagens de aprovação por e-mail. Para obter instruções de configuração, consulte [Creating and verifying email identities](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure) no *Guia do desenvolvedor do Amazon Simple Email Service*.
+ Um endereço de e-mail de destino para receber notificações de aprovação. Esse endereço pode ser uma caixa de entrada compartilhada ou uma lista específica de distribuição da equipe.
+ Uma SonarQube instância operacional que pode ser acessada a partir do seu Conta da AWS. Para obter mais informações, consulte as [instruções SonarQube de instalação](https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/introduction/).
+ Um [token de SonarQube usuário](https://docs.sonarsource.com/sonarqube-server/latest/user-guide/managing-tokens/) com permissões para acionar e criar projetos por meio do pipeline.

**Limitações**
+ A criação de botões de ação personalizados é um processo manual nessa solução. 
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="deploy-chatops-solution-to-manage-sast-scan-results-architecture"></a>

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

![\[Fluxo de trabalho para implantar a garantia de qualidade de código automatizada para gerenciamento de versões usando o Amazon Q Developer.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/198312ed-e379-49a7-b706-8e79e2142f21/images/a977924c-957e-4f91-99d6-ed790e343ea6.png)


O diagrama mostra o fluxo de trabalho da garantia de qualidade do código automatizada:

1. Preparação e upload do código:
   + O desenvolvedor compacta a base do código em um arquivo .zip.
   + O desenvolvedor carrega manualmente o arquivo .zip em um bucket designado do Amazon Simple Storage Service (Amazon S3).

1. Gatilho e orquestração de eventos do Amazon S3: AWS Step Functions 
   + O evento de upload do Amazon S3 aciona um fluxo de trabalho do Step Functions.
   + Step Functions orquestra uma verificação SAST usando. SonarQube
   + O fluxo de trabalho monitora o status do AWS CodeBuild trabalho para determinar as próximas ações. Se for CodeBuild bem-sucedido (Quality Gate Pass), o fluxo de trabalho será encerrado. Se CodeBuild falhar, uma AWS Lambda função será invocada para diagnóstico. Para obter mais detalhes, consulte **Lógica do AWS Step Functions ** mais adiante nesta seção.

1. AWS CodeBuild execução:
   + O CodeBuild trabalho executa uma SonarQube varredura na base de código carregada.
   + Os artefatos da verificação são armazenados em um bucket separado do Amazon S3 para auditoria e análise.

1. Análise de falhas (função do Lambda):
   + Em CodeBuild caso de falha, a função `CheckBuildStatus` Lambda é acionada.
   + Em CodeBuild caso de sucesso, o processo é encerrado e nenhuma ação adicional é necessária.

1. A função do Lambda analisa a causa da falha (falha no quality gate ou outros problemas)
   + A função `CheckBuildStatus` cria uma carga útil personalizada com informações detalhadas sobre falhas.
   + A função `CheckBuildStatus` publica a carga útil personalizada em um tópico do Amazon Simple Notiﬁcation Service (Amazon SNS).

1. Sistema de notificações:
   + O Amazon SNS encaminha a carga útil ao Amazon Q Developer em aplicações de chat para integração com o Slack.

1. Integração do Slack:
   + O Amazon Q Developer em aplicações de chat publica uma notificação no canal designado do Slack.

1. Processo de aprovação:
   + Os aprovadores analisam os detalhes da falha na notificação do Slack.
   + Os aprovadores podem iniciar a aprovação usando o botão **Aprovar** no Slack.

1. Manipulador de aprovação:
   + Uma função do Lambda de aprovação processa a ação de aprovação do Slack.
   + A função de aprovação publica a mensagem personalizada no Amazon SES.

1. Mensagem gerada:
   + A função de aprovação gera uma mensagem personalizada para notificação ao desenvolvedor.

1. Notificação ao desenvolvedor:
   + O Amazon SES envia uma mensagem de e-mail ao desenvolvedor com as próximas etapas ou ações necessárias.

Esse fluxo de trabalho combina o upload manual de código com verificações de qualidade automatizadas, fornece feedback imediato por meio do Slack e permite a intervenção humana quando necessário, garantindo um processo robusto e flexível de revisão de código.

Lógica **AWS Step Functions  **

Conforme mostrado no diagrama de arquitetura anterior, se a passagem do portal de qualidade SonarQube falhar, o fluxo de trabalho vai para a função `CheckBuildStatus` Lambda. A função `CheckBuildStatus` aciona uma notificação no canal do Slack. Cada notificação inclui informações com as próximas etapas sugeridas. Seguem abaixo os tipos de notificações:
+ **O aplicativo falhou na verificação de segurança do código** — O usuário recebe essa notificação quando o código carregado não passou pela verificação SonarQube de segurança. O usuário pode escolher **APROVAR** para aceitar a compilação. No entanto, a notificação informa ao usuário sobre possíveis riscos de segurança e baixa qualidade do código. A notificação inclui os seguintes detalhes:
  + Próximas etapas: Erro: Status do quality gate: FALHOU \$1 Veja os detalhes no URL fornecido.
  + Faça a triagem das vulnerabilidades conforme mencionado no documento no URL fornecido.
  + CodeBuild os detalhes estão disponíveis no local no URL fornecido.
+ **O pipeline de verificação da aplicação falhou por algum outro motivo**: o usuário recebe essa notificação quando o pipeline falhou por algum motivo que não seja a falha na verificação de segurança do código. A notificação inclui os seguintes detalhes:
  + Para ver as próximas etapas, acesse o link fornecido para obter mais informações sobre a solução de problemas.

Para ver as capturas de tela das notificações conforme elas aparecem em um canal do Slack, acesse a [pasta de ativos no repositório](https://github.com/aws-samples/chatops-slack/tree/main/assets) GitHub chatops-slack.

O diagrama a seguir mostra um exemplo do status da etapa do Step Functions após a falha na aprovação do quality gate.

![\[Fluxo de trabalho do status da etapa do AWS Step Functions após a falha de aprovação no quality gate.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/198312ed-e379-49a7-b706-8e79e2142f21/images/40b7ebf0-2518-4413-9717-0bfb7559adde.png)


## Ferramentas
<a name="deploy-chatops-solution-to-manage-sast-scan-results-tools"></a>

**Serviços da AWS**
+ [O Amazon Q Developer em aplicativos de bate-papo](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) permite que você use os canais de bate-papo Amazon Chime, Microsoft Teams e Slack para monitorar e responder a eventos operacionais em seus aplicativos. AWS *Aviso de fim do suporte:* em 20 de fevereiro de 2026, AWS encerrará o suporte para o serviço Amazon Chime. Após 20 de fevereiro de 2026, não será mais possível acessar o console do Amazon Chime ou os recursos de aplicação do Amazon Chime. Para obter mais informações, acesse esta [publicação no blog](https://aws.amazon.com/blogs/messaging-and-targeting/update-on-support-for-amazon-chime/). Isso não afeta a disponibilidade do [serviço do SDK do Amazon Chime](https://aws.amazon.com/chime/chime-sdk/).
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) ajuda a substituir credenciais codificadas, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo por programação.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html): ajuda você a enviar e receber mensagens de e-mail usando seus próprios endereços de e-mail e domínios.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)é um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.

**Outras ferramentas**
+ O [Slack](https://slack.com/help/articles/115004071768-What-is-Slack-), uma solução da Salesforce, consiste em uma plataforma de conversação com tecnologia de IA que oferece colaboração por chat e vídeo, automatiza processos no-code e facilita o compartilhamento de informações.
+ [SonarQube](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/)é uma ferramenta de análise local projetada para detectar problemas de codificação em mais de 30 linguagens, estruturas e plataformas de IaC.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [chatops-slack](https://github.com/aws-samples/chatops-slack).

## Práticas recomendadas
<a name="deploy-chatops-solution-to-manage-sast-scan-results-best-practices"></a>
+ **CloudFormation gerenciamento de pilha** — Se você encontrar alguma falha durante a execução da CloudFormation pilha, recomendamos que você exclua a pilha com falha. Em seguida, recrie-a com os valores corretos dos parâmetros. Essa abordagem oferece suporte a uma implantação limpa e ajuda a evitar possíveis conflitos ou implementações parciais.
+ **Configuração de e-mail de caixa de entrada compartilhada**: ao configurar o parâmetro `SharedInboxEmail`, use uma lista de distribuição comum que seja acessível a todos os desenvolvedores relevantes. Essa abordagem promove transparência e ajuda notificações importantes a chegarem aos membros relevantes da equipe.
+ **Fluxo de trabalho de aprovação de produção**: para ambientes de produção, restrinja o acesso ao canal do Slack usado para aprovações de compilação. Somente aprovadores designados devem ser membros desse canal. Essa prática mantém uma cadeia clara de responsabilidade e aumenta a segurança ao limitar quem pode aprovar mudanças críticas.
+ **Permissões do IAM**: siga o princípio do privilégio mínimo e forneça o mínimo de permissões para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) na documentação do IAM.

## Épicos
<a name="deploy-chatops-solution-to-manage-sast-scan-results-epics"></a>

### Execute a configuração inicial
<a name="perform-initial-setup"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o repositório [chatops-slack](https://github.com/aws-samples/chatops-slack) deste padrão, use o seguinte comando:`git clone "git@github.com:aws-samples/chatops-slack.git"` | AWS DevOps, líder de construção, DevOps engenheiro, administrador de nuvem | 
| Crie os arquivos .zip que contêm o código do Lambda. | Crie os arquivos.zip para o código da AWS Lambda função para a `ApprovalEmail` funcionalidade `CheckBuildStatus` e. Para criar `notification.zip` e `approval.zip`, use os comandos a seguir.<pre>cd chatops-slack/src</pre><pre>chmod -R 775 *</pre><pre>zip -r approval.zip approval</pre><pre>zip -r notification.zip notification</pre> | AWS DevOps, líder de construção, DevOps engenheiro, administrador de nuvem | 

### Implantar o arquivo de pilha pre-requisite.yml
<a name="deploy-the-pre-requisite-yml-stack-file"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o arquivo de pilha `pre-requisite.yml`. | O arquivo de `pre-requisite.yml` CloudFormation pilha implanta os recursos iniciais necessários antes de você executar o arquivo de `app-security.yml` pilha. Para executar o arquivo `pre-requisite.yml`, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | Administrador da AWS, AWS DevOps, líder de construção, DevOps engenheiro | 
| Faça upload dos arquivos .zip no bucket do Amazon S3. | Faça upload dos arquivos `notification.zip` e `approval.zip` que você criou anteriormente para o bucket do Amazon S3 chamado `S3LambdaBucket`. O arquivo `app-security.yml` CloudFormation de pilha é usado `S3LambdaBucket` para provisionar a função Lambda. | AWS DevOps, líder de construção, DevOps engenheiro, administrador de sistemas da AWS | 

### Executar o arquivo de app-security.yml
<a name="execute-the-app-security-yml-stack-file"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o arquivo de pilha `app-security.yml`. | Os arquivos de pilha `app-security.yml` implantam a infraestrutura restante para o sistema de notificação e aprovação. Para executar o arquivo `app-security.yml`, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | AWS DevOps, administrador de sistemas da AWS, DevOps engenheiro, líder de criação | 
| Teste a configuração das notificações. | Para testar a configuração de notificações, faça o seguinte.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html)Depois que a mensagem de teste for entregue com sucesso, você verá uma notificação no canal do Slack. Para obter mais informações, consulte [Notificações de teste do Serviços da AWS Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#test-notifications-slack) no *Guia do administrador do Amazon Q Developer em aplicativos de bate-papo*. | AWS DevOps, administrador de sistemas da AWS, DevOps engenheiro, líder de criação | 

### Configurar o fluxo de aprovação
<a name="set-up-approval-flow"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure a ação personalizada do Lambda. | Para configurar a AWS Lambda ação personalizada, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | Administrador da AWS, AWS DevOps, líder de construção, DevOps engenheiro, administrador do Slack | 
| Valide o fluxo de aprovação. | Para validar se o fluxo de aprovação funciona conforme o esperado, escolha o botão **Aprovar** no Slack.O Slackbot deve enviar uma notificação no tópico da mensagem com a string de confirmação **E-mail de aprovação enviado com sucesso**. | Administrador da AWS, AWS DevOps, DevOps engenheiro, administrador do Slack | 

## Solução de problemas
<a name="deploy-chatops-solution-to-manage-sast-scan-results-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Configurações incorretas do Slack | Para obter informações sobre como solucionar problemas relacionados a configurações incorretas do Slack, consulte a solução de problemas no Amazon Q Developer no *Guia do administrador do Amazon Q Developer em aplicações de chat*. | 
| A verificação falhou devido a algum outro motivo | Esse erro significa que a tarefa de criação do código falhou. Para solucionar o problema, acesse o link que está na mensagem. A falha na tarefa de criação de código pode ter as seguintes causas possíveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | 

## Recursos relacionados
<a name="deploy-chatops-solution-to-manage-sast-scan-results-resources"></a>

**AWS documentação**
+ [Configure a Slack client](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup)
+ [Criação de uma ação personalizada](https://docs.aws.amazon.com/chatbot/latest/adminguide/custom-actions.html#creating-custom-actions)
+ [Creating an email address identity](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure) [procedure](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure)
+ [Tutorial: Comece a usar o Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html)

**Outros recursos**
+ [Add apps to your Slack workspace](https://slack.com/intl/en-in/help/articles/202035138-Add-apps-to-your-Slack-workspace) (documentação do Slack)
+ [Geração e uso de tokens](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/) (SonarQube documentação)
+ [Introdução à instalação do servidor](https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/introduction/) (SonarQube documentação)

## Mais informações
<a name="deploy-chatops-solution-to-manage-sast-scan-results-additional"></a>

Esta solução enfatiza as soluções personalizadas do Amazon Q Developer em aplicações de chat para fins de gerenciamento de versão. No entanto, você pode reutilizar a solução modificando o código do Lambda para seu caso de uso específico e construindo com base nela.

**Parâmetros dos arquivos de CloudFormation pilha**

A tabela a seguir mostra os parâmetros e suas descrições para o arquivo `pre-requisite.yml` de CloudFormation pilha.


| 
| 
| **Chave** | **Descrição** | 
| --- |--- |
| `StackName` | O nome da CloudFormation pilha. | 
| `S3LambdaBucket` | O nome do bucket do Amazon S3 onde você carregou o código do Lambda. O nome precisa ser globalmente exclusivo. | 
| `SonarToken` | O token SonarQube do usuário, conforme descrito em [Pré-requisitos](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs). | 

A tabela a seguir mostra os parâmetros e suas descrições para o arquivo `app-security.yml` de CloudFormation pilha.


| 
| 
| **Chave** | **Descrição** | 
| --- |--- |
| `CKMSKeyArn` | O AWS KMS key Amazon Resource Name (ARN) usado nas funções do IAM e nas funções do Lambda criadas nessa pilha. | 
| `CKMSKeyId` | O AWS KMS key ID usado no tópico do Amazon SNS criado nessa pilha. | 
| `EnvironmentType` | O nome do ambiente de cliente para implantação do pipeline de verificação de aplicações. Selecione o nome do ambiente na lista suspensa de valores permitidos. | 
| `S3LambdaBucket` | O nome do bucket do Amazon S3 que contém os arquivos `approval.zip` e `notification.zip`. | 
| `SESEmail` | O nome da identidade de e-mail registrada no Amazon SES, conforme descrito em [Pré-requisitos](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs). Essa identidade é o endereço de e-mail de origem. | 
| `SharedInboxMail` | O endereço de e-mail de destino para o qual as notificações de verificação são enviadas. | 
| `SlackChannelId` | O ID do canal do Slack para o qual você deseja que as notificações sejam enviadas. Para encontrar o ID do canal, clique com o botão direito do mouse no nome do canal em **Detalhes do canal** na aplicação do Slack. O ID do canal está na parte inferior. | 
| `SlackWorkspaceId` | O ID do espaço de trabalho do Slack, conforme descrito em [Pré-requisitos](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs). **Para encontrar o ID do espaço de trabalho do Slack, faça login no Console de gerenciamento da AWS, abra o Amazon Q Developer no console de aplicativos de bate-papo e escolha **Clientes configurados**, **Slack**, WorkspaceID.** | 
| `StackName` | O nome da CloudFormation pilha. | 
| `SonarFileDirectory` | O diretório que contém o arquivo `sonar.project.<env>.properties`. | 
| `SonarFileName` | O nome do arquivo `sonar.project.<env>properties`. | 
| `SourceCodeZip` | O nome do arquivo .zip que contém o arquivo `sonar.project.<env>properties` e o código-fonte. | 

# Implantação de sistemas agênticos no Amazon Bedrock com a estrutura do CrewAI usando o Terraform
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework"></a>

*Vanitha Dontireddy, Amazon Web Services*

## Resumo
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-summary"></a>

Este padrão demonstra como implementar sistemas escaláveis multiagente de IA usando a estrutura do [CrewAI](https://www.crewai.com/) integrada ao [Amazon Bedrock](https://aws.amazon.com/bedrock/?nc1=h_ls) e ao [Terraform](https://registry.terraform.io/). A solução permite que as organizações criem, implantem e gerenciem fluxos de trabalho sofisticados de agentes de IA por meio da infraestrutura como código (IaC). Neste padrão, os recursos de orquestração multiagente da CrewAI se combinam com os modelos de base do Amazon Bedrock e a automação da infraestrutura do Terraform. Como resultado, as equipes podem criar sistemas de IA prontos para produção que lidam com tarefas complexas com o mínimo de supervisão humana. O padrão implementa as práticas recomendadas operacionais, de escalabilidade e de segurança de nível corporativo. 

## Pré-requisitos e limitações
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS com permissões apropriadas para [acessar os modelos da Amazon Bedrock Foundation](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ Terraform versão 1.5 ou posterior [instalada](https://developer.hashicorp.com/terraform/install)
+ [Python versão 3.9 ou posterior instalado](https://www.python.org/downloads/)
+ Estrutura do CrewAI [instalada](https://docs.crewai.com/installation)

**Limitações**
+ As interações de agentes são limitadas pelas janelas de contexto do modelo.
+ As considerações de gerenciamento de estado do Terraform para implantações em grande escala se aplicam a este padrão.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture"></a>

Neste padrão, as seguintes interações ocorrem:
+ O Amazon Bedrock fornece a base para a inteligência de agentes por meio de seu conjunto de modelos básicos (FMs). Ele permite recursos de processamento de linguagem natural (PLN), raciocínio e tomada de decisão para os agentes de IA, mantendo alta disponibilidade e escalabilidade.
+ A estrutura do CrewAI serve como a principal camada de orquestração para criar e gerenciar agentes de IA. Ela lida com protocolos de comunicação de agentes, delegação de tarefas e gerenciamento de fluxo de trabalho enquanto se integra ao Amazon Bedrock.
+ O Terraform gerencia toda a pilha de infraestrutura por meio de código, incluindo recursos computacionais, redes, grupos de segurança e funções AWS Identity and Access Management (IAM). Ele garante implantações consistentes e com controle de versão em todos os ambientes. A implantação do Terraform cria o seguinte:
  + AWS Lambda função para executar o aplicativo CrewAI
  + Buckets do Amazon Simple Storage Service (Amazon S3) para código e relatórios
  + Perfis do IAM com as permissões apropriadas
  +  CloudWatch Registro na Amazon
  + Execução programada pela Amazon EventBridge

O diagrama a seguir ilustra a arquitetura para implantar sistemas multiagente do CrewAI usando o Amazon Bedrock e o Terraform.

![\[Fluxo de trabalho para implantar sistemas multiagente do CrewAI usando o Terraform e o Amazon Bedrock.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/b46069e9-4c38-405f-b0f0-310eabb06b06/images/b3296b17-e388-46ba-8d71-2ec7ce3ed3e0.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. O usuário clona o repositório.

1. O usuário executa o comando `terraform apply` para implantar os AWS recursos.

1. A configuração do modelo do Amazon Bedrock inclui a especificação do modelo de base (FM) a ser usado para configurar os agentes do CrewAI.

1. Uma EventBridge regra é estabelecida para acionar a função Lambda de acordo com o cronograma definido.

1. Quando acionada (por agendamento ou manualmente), a função Lambda inicializa e assume a função do IAM com permissões de acesso ao Amazon Bedrock. Serviços da AWS 

1. A estrutura do CrewAI carrega configurações de agentes por meio de arquivos YAML e cria agentes de IA especializados (a equipe de *auditoria de segurança da infraestrutura da AWS *). A função Lambda executa sequencialmente esses agentes para verificar AWS recursos, analisar vulnerabilidades de segurança e gerar relatórios de auditoria abrangentes.

1. CloudWatch Os registros capturam informações detalhadas de execução da função Lambda com um período de retenção de 365 dias AWS Key Management Service e AWS KMS() criptografia para requisitos de conformidade. Os logs fornecem visibilidade das atividades de agentes, do rastreamento de erros e das métricas de performance, permitindo o monitoramento e a solução de problemas eficazes do processo de auditoria de segurança.

1. O relatório de auditoria de segurança é gerado e armazenado automaticamente no bucket do Amazon S3 designado. A configuração automatizada ajuda a manter um monitoramento de segurança consistente com o mínimo de sobrecarga operacional.

Após a implantação inicial, o fluxo de trabalho fornece auditoria e relatórios de segurança contínuos para sua AWS infraestrutura sem intervenção manual.

**Visão geral dos agentes de IA**

Este padrão cria vários agentes de IA, cada um com funções, metas e ferramentas exclusivas:
+ O **agente do analista de segurança** coleta e analisa as informações AWS dos recursos.
+ O **agente testador de penetração** identifica vulnerabilidades nos recursos. AWS 
+ O **agente especialista em conformidade** verifica as configurações em relação aos padrões de conformidade.
+ O **agente redator de relatórios** compila as descobertas em relatórios abrangentes.

Esses agentes colaboram em uma série de tarefas, aproveitando suas habilidades coletivas para realizar auditorias de segurança e gerar relatórios abrangentes. (O arquivo `config/agents.yaml` descreve os recursos e configurações de cada agente dessa equipe.)

O processamento da análise de segurança consiste nas seguintes ações:

1. O agente analista de segurança examina os dados coletados sobre AWS recursos, como os seguintes:
   + Instâncias e grupos de segurança do Amazon Elastic Compute Cloud (Amazon EC2)
   + Configurações e buckets do Amazon S3
   + Políticas, permissões e perfis do IAM
   + Definições de rede e configurações de rede da nuvem privada virtual (VPC)
   + Bancos de dados e configurações de segurança do Amazon RDS
   + Configurações e funções do Lambda
   + Outros Serviços da AWS dentro do escopo da auditoria

1. O agente testador de penetração identifica possíveis vulnerabilidades.

1. Os agentes colaboram por meio da estrutura do CrewAI para compartilhar descobertas.

A geração de relatórios consiste nas seguintes ações:

1. O agente redator do relatório compila as descobertas de todos os outros agentes.

1. Os problemas de segurança são organizados por serviço, gravidade e impacto na conformidade.

1. Recomendações de remediação são geradas para cada problema identificado.

1. Um relatório abrangente de auditoria de segurança é criado em formato markdown e carregado no bucket do Amazon S3 designado. Os relatórios históricos são preservados para rastreamento de conformidade e melhoria da postura de segurança.

As atividades de registro em log e monitoramento incluem:
+ CloudWatch os registros capturam detalhes da execução e quaisquer erros.
+ As métricas de execução do Lambda são registradas para monitoramento.

**nota**  
O código para `aws-security-auditor-crew` é originado do repositório GitHub [3P-Agentic\$1Frameworks](https://github.com/aws-samples/3P-Agentic-Frameworks/blob/main/crewai/aws-security-auditor-crew/README.md), disponível na coleção Samples. AWS 

**Disponibilidade e escala**

Você pode expandir os agentes disponíveis para mais do que os quatro agentes principais. Para escalar com agentes especializados adicionais, considere os seguintes novos tipos de agentes:
+ Um agente *especialista em inteligência de ameaças* pode fazer o seguinte:
  + Monitorar os feeds de ameaças externos e correlacionar com as descobertas internas
  + Fornecer contexto sobre ameaças emergentes relevantes para sua infraestrutura
  + Priorizar vulnerabilidades com base na exploração ativa de casos reais
+ Os agentes da *estrutura de conformidade* podem se concentrar em áreas regulatórias específicas, como as seguintes:
  + Agente de conformidade com o padrão de segurança de dados do setor de cartões de pagamento (PCI DSS)
  + Agente de conformidade com a Lei de Portabilidade e Responsabilidade de Provedores de Saúde de 1996 (HIPAA)
  + Agente de conformidade com Controles de Sistema e Organização 2 (SOC 2)
  + Agente de conformidade do Regulamento Geral de Proteção de Dados (RGDP)

Ao expandir cuidadosamente os agentes disponíveis, essa solução pode fornecer insights de segurança mais profundos e especializados, mantendo a escalabilidade em grandes ambientes. AWS Para obter mais informações sobre uma abordagem de implementação, desenvolvimento de ferramentas e considerações de escalabilidade, consulte [Informações adicionais](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional).

## Ferramentas
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-tools"></a>

**Serviços da AWS**
+ [O Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) é um serviço de IA totalmente gerenciado que disponibiliza modelos básicos de alto desempenho (FMs) para uso por meio de uma API unificada.
+ O [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) ajuda você a centralizar os registros de todos os seus sistemas e aplicativos, Serviços da AWS para que você possa monitorá-los e arquivá-los com segurança.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS Neste padrão, ele é usado para agendar e orquestrar fluxos de trabalho de agentes.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados. Neste padrão, ele fornece armazenamento de objetos para artefatos de agentes e gerenciamento de estado.

**Outras ferramentas**
+ O [CrewAI](https://www.crewai.com/open-source) é uma estrutura de código aberto baseada em Python para criar sistemas de IA multiagente.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

**Repositório de código**

O código desse padrão está disponível no GitHub [deploy-crewai-agents-terraform](https://github.com/aws-samples/deploy-crewai-agents-terraform.git)repositório.

## Práticas recomendadas
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-best-practices"></a>
+ Implemente o gerenciamento de estado adequado para o Terraform usando um backend do Amazon S3 com bloqueio do Amazon DynamoDB. Para obter mais informações, consulte [Práticas recomendadas de back-end](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/backend.html) em *Melhores práticas para usar o Terraform AWS Provider*.
+ Use espaços de trabalho para separar ambientes de desenvolvimento, preparação e produção.
+ Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [nas melhores práticas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.
+ Ative o registro e o monitoramento detalhados por meio do CloudWatch Logs.
+ Implemente mecanismos de repetição e tratamento de erros para operações de agentes.

## Épicos
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-epics"></a>

### Implantar a estrutura do CrewAI
<a name="deploy-crewai-framework"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Para clonar o repositório correspondente a este padrão em sua máquina local, execute o seguinte comando:<pre>git clone "git@github.com:aws-samples/deploy-crewai-agents-terraform.git"<br />cd deploy-crewai-agents-terraform</pre> | DevOps engenheiro | 
| Edite as variáveis de ambiente. | Para editar as variáveis de ambiente, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps engenheiro | 
| Crie a infraestrutura. | Para criar a infraestrutura, execute os seguintes comandos:<pre>cd terraform</pre><pre>terraform init</pre><pre>terraform plan</pre>Analise cuidadosamente o plano de execução. Se as alterações propostas estiverem adequadas, execute o seguinte comando:<pre>terraform apply --auto-approve</pre> | DevOps engenheiro | 

### Acessar os agentes do CrewAI
<a name="access-crewai-agents"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Acesse os agentes. | Os agentes da equipe de Auditoria e Relatórios de Segurança da AWS Infraestrutura são implantados como uma função Lambda. Para acessar os agentes, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps engenheiro | 
| (Opcional) Configure a execução manual dos agentes. | Os agentes são configurados para serem executados automaticamente em uma programação diária (meia-noite UTC). No entanto, é possível acioná-los manualmente usando as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)Para obter mais detalhes, consulte [Como testar funções do Lambda no console](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html) na documentação do Lambda. | DevOps engenheiro | 
| Acesse os logs do agente para depuração. | Os agentes do CrewAI são executados em um ambiente do Lambda com as permissões necessárias para realizar auditorias de segurança e armazenar relatórios no Amazon S3. O resultado é um relatório de redução que fornece uma análise de segurança abrangente da sua AWS infraestrutura.Para ajudar na depuração detalhada do comportamento do agente, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps engenheiro | 
| Veja os resultados da execução do agente. | Para visualizar os resultados da execução de um agente, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)Os relatórios são armazenados com nomes de arquivo baseados em carimbo de data/hora da seguinte forma: `security-audit-report-YYYY-MM-DD-HH-MM-SS.md)` | DevOps engenheiro | 
| Monitore a execução do agente. | Para monitorar a execução dos agentes por meio de CloudWatch registros, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps engenheiro | 
|  Personalize o comportamento do agente. | Para modificar os agentes ou suas tarefas, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)<pre>cd terraform </pre><pre>terraform apply</pre> | DevOps engenheiro | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os recursos criados. | Para excluir toda a infraestrutura criada por este padrão, execute o seguinte comando:<pre>terraform plan -destroy </pre>O comando a seguir excluirá permanentemente todos os recursos criados por este padrão. O comando solicitará confirmação antes de remover quaisquer recursos.Analise cuidadosamente o plano de exclusão. Se as exclusões propostas estiverem adequadas, execute o seguinte comando:<pre>terraform destroy</pre> | DevOps engenheiro | 

## Solução de problemas
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Comportamento do agente | Para obter informações sobre este problema, consulte [Test and troubleshoot agent behavior](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) na documentação do Amazon Bedrock. | 
| Problemas de rede relacionados ao Lambda | Para obter informações sobre estes problemas, consulte [Solucionar problemas de redes no Lambda](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) na documentação do Lambda. | 
| permissões do IAM | Para obter informações sobre estes problemas, consulte [Solucionar problemas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html) na documentação do IAM. | 

## Recursos relacionados
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-resources"></a>

**AWS Blogs**
+ [Build agentic systems with CrewAI and Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/build-agentic-systems-with-crewai-and-amazon-bedrock/)

**AWS documentação**
+ [Documentação do Amazon Bedrock](https://docs.aws.amazon.com/bedrock/)
+ [Como o Amazon Bedrock Agents funciona](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html)

**Outros recursos**
+ [Documentação do CrewAI](https://docs.crewai.com/introduction)
+ [Documentação do Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Mais informações
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional"></a>

Esta seção contém informações sobre uma abordagem de implementação, desenvolvimento de ferramentas e considerações de escalabilidade relacionadas à discussão anterior em [Automação e escala](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture).

**Abordagem da implementação**

Considere a seguinte abordagem para adicionar agentes:

1. Configuração do agente:
   + Adicione novas definições de agente ao arquivo `config/agents.yaml`.
   + Defina histórias de fundo, metas e ferramentas especializadas para cada agente.
   + Configure os recursos de memória e análise com base na especialidade do agente.

1. Orquestração de tarefas
   + Atualize o arquivo `config/tasks.yaml` para incluir novas tarefas específicas de agente.
   + Crie dependências entre as tarefas para ajudar a garantir o fluxo adequado de informações.
   + Implemente a execução paralela de tarefas quando apropriado.

**Implementação técnica**

Segue abaixo uma adição ao arquivo `agents.yaml` de uma sugestão de agente especialista em inteligência de ameaças:

```
Example new agent configuration in agents.yaml
threat_intelligence_agent:
 name: "Threat Intelligence Specialist"
 role: "Cybersecurity Threat Intelligence Analyst"
 goal: "Correlate AWS security findings with external threat intelligence"
 backstory: "Expert in threat intelligence with experience in identifying emerging threats and attack patterns relevant to cloud infrastructure." 
verbose: true 
allow_delegation: true 
tools: 
- "ThreatIntelligenceTool" 
- "AWSResourceAnalyzer"
```

**Desenvolvimento de ferramentas**

Com a estrutura do CrewAI, você pode realizar as seguintes ações para melhorar a eficácia da sua equipe de auditoria de segurança:
+ Crie ferramentas personalizadas para novos agentes.
+ Integre-se com o externo APIs para obter inteligência contra ameaças.
+ Desenvolva analisadores especializados para diferentes. Serviços da AWS

**Considerações sobre escalabilidade**

Ao expandir seu sistema de auditoria e emissão de relatórios de segurança de AWS infraestrutura para lidar com ambientes maiores ou auditorias mais abrangentes, considere os seguintes fatores de escalabilidade:
+ **Recursos computacionais**
  + Aumente a alocação de memória do Lambda para lidar com agentes adicionais.
  + Considere dividir as workloads de agentes em várias funções do Lambda.
+ **Gerenciamento de custos**
  + Monitore o uso da API do Amazon Bedrock à medida que o número de agentes aumenta.
  + Implemente a ativação seletiva de agentes com base no escopo da auditoria.
+ **Eficiência da colaboração**
  + Otimize o compartilhamento de informações entre agentes.
  + Implemente estruturas hierárquicas de agentes para ambientes complexos.
+ **Aprimoramento da base de conhecimento**
  + Forneça aos agentes bases de conhecimento especializadas para seus domínios.
  + Atualize regularmente o conhecimento dos agentes com as novas práticas recomendadas de segurança.

# Implante um trabalho do AWS Glue com um pipeline de CodePipeline CI/CD da AWS
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline"></a>

*Bruno Klein e Luis Henrique Massao Yamada, Amazon Web Services*

## Resumo
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-summary"></a>

Esse padrão demonstra como você pode integrar a AWS CodeCommit e a AWS CodePipeline com o AWS Glue e usar o AWS Lambda para iniciar trabalhos assim que um desenvolvedor envia suas alterações para um repositório remoto da AWS. CodeCommit  

Quando um desenvolvedor envia uma alteração para um repositório de extração, transformação e carregamento (ETL) e envia as alterações para a AWS CodeCommit, um novo pipeline é invocado. O pipeline inicia uma função do Lambda que inicia um trabalho do AWS Glue com essas alterações. O trabalho do AWS Glue executa a tarefa de ETL.

Essa solução é útil na situação em que empresas, desenvolvedores e engenheiros de dados desejam iniciar tarefas assim que as alterações forem confirmadas e enviadas aos repositórios de destino. Isso ajuda a alcançar um nível mais alto de automação e reprodutibilidade, evitando erros durante o lançamento e o ciclo de vida do trabalho.

## Pré-requisitos e limitações
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ [Git](https://git-scm.com/) instalado na máquina local
+ [Amazon Cloud Development Kit (Amazon CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) instalado na máquina local
+ [Python](https://www.python.org/) instalado na máquina local
+ O código na seção *Anexos*

**Limitações**
+ O pipeline é concluído assim que o trabalho do AWS Glue for lançado com sucesso. Ele não vai esperar chegar ao fim do trabalho.
+ O código fornecido no anexo é destinado apenas para fins de demonstração.

## Arquitetura
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS Glue
+ AWS Lambda
+ AWS CodePipeline
+ AWS CodeCommit

**Arquitetura de destino**

![\[Usar o Lambda para iniciar uma tarefa do Glue assim que um desenvolvedor envia as alterações para um repositório. CodeCommit\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/99a67388-5939-4267-8324-b6ca8bfa7962/images/917c9041-b94d-4e95-a3c4-9a1115ead228.png)


 

O processo consiste nestas etapas:

1. O desenvolvedor ou engenheiro de dados faz uma modificação no código ETL, confirma e envia a alteração para a AWS. CodeCommit

1. O push inicia o pipeline.

1. O pipeline inicia uma função do Lambda, que chama `codecommit:GetFile` no repositório e faz upload do arquivo para o Amazon Simple Storage Service (Amazon S3).

1. A função do Lambda lança um novo trabalho do AWS Glue com o código ETL.

1. A função do Lambda finaliza o pipeline.

**Automação e escala**

O exemplo de anexo demonstra como você pode integrar o AWS Glue com a AWS CodePipeline. Ele fornece um exemplo básico que você pode personalizar ou estender para seu próprio uso. Consulte a seção *Épicos * para obter detalhes.

## Ferramentas
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-tools"></a>
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/) — CodePipeline A AWS é um serviço de [entrega contínua](https://aws.amazon.com/devops/continuous-delivery/) totalmente gerenciado que ajuda você a automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e infraestrutura.
+ [AWS CodeCommit](https://aws.amazon.com/codecommit/) — CodeCommit A AWS é um serviço de [controle de origem](https://aws.amazon.com/devops/source-control/) totalmente gerenciado que hospeda repositórios seguros baseados em Git.
+ [AWS Lambda](https://aws.amazon.com/lambda/): o AWS Lambda é um serviço de computação com tecnologia sem servidor que pode ser usado para executar código sem provisionamento ou gerenciamento de servidores.
+ [AWS Glue](https://aws.amazon.com/glue): o AWS Glue é um serviço de integração de dados com tecnologia sem servidor que facilita a descoberta, preparação e combinação de dados para análise, machine learning e desenvolvimento de aplicações.
+ [Cliente Git](https://git-scm.com/downloads) — O Git fornece ferramentas de GUI, ou você pode usar a linha de comando ou uma ferramenta de desktop para verificar os artefatos necessários. GitHub 
+ [CDK da AWS](https://aws.amazon.com/cdk/): o CDK da AWS é um framework de desenvolvimento de software de código aberto que ajuda a definir recursos de aplicativos em nuvem usando linguagens de programação familiares.

## Épicos
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-epics"></a>

### Implantar o código de exemplo
<a name="deploy-the-sample-code"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure a AWS CLI. | Configure a AWS Command Line Interface (AWS CLI) para direcionar e autenticar com sua conta da AWS atual. Para obter instruções, consulte a [documentação da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). | Desenvolvedor, DevOps engenheiro | 
| Extraia os arquivos de exemplo do projeto. | Extraia os arquivos do anexo para criar uma pasta que contém os arquivos de exemplo do projeto. | Desenvolvedor, DevOps engenheiro | 
| Implantar o código de exemplo. | Depois de extrair os arquivos, execute os seguintes comandos no local da extração para criar um exemplo básico:<pre>cdk bootstrap<br />cdk deploy<br />git init<br />git remote add origin <code-commit-repository-url><br />git stage .<br />git commit -m "adds sample code"<br />git push --set-upstream origin main</pre>Depois do último comando, é possível monitorar o status do pipeline e do trabalho do AWS Glue. | Desenvolvedor, DevOps engenheiro | 
| Personalize o código. | Personalize o código do arquivo etl.py de acordo com seus requisitos comerciais. Você pode revisar o código ETL, modificar os estágios do pipeline ou estender a solução. | Engenheiro de dados | 

## Recursos relacionados
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-resources"></a>
+ [Conceitos básicos dos AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)
+ [Adicionar trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Integrações de ações de origem em CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/integrations-action-type.html#integrations-source)
+ [Invoque uma função do AWS Lambda em um pipeline no CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html)
+ [Programação do AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming.html)
+ [ CodeCommit GetFile API DA AWS](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFile.html)

## Anexos
<a name="attachments-99a67388-5939-4267-8324-b6ca8bfa7962"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/99a67388-5939-4267-8324-b6ca8bfa7962/attachments/attachment.zip)

# Implemente código em várias regiões da AWS usando AWS CodePipeline CodeCommit, AWS e AWS CodeBuild
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Resumo
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-summary"></a>

Esse padrão demonstra como criar infraestrutura ou arquitetura em várias regiões da Amazon Web Services (AWS) usando a AWS CloudFormation. Inclui integração contínua (CI) /implantação contínua (CD) em várias regiões da AWS para implantações mais rápidas. ****As etapas desse padrão foram testadas para a criação de um CodePipeline trabalho da AWS para implantação em três regiões da AWS, como exemplo. Você pode alterar o número de regiões com base no caso de uso.

## Pré-requisitos e limitações
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ 
  + Uma CodeBuild função com o *AmazonS3 FullAccess* e as políticas. *CloudWatchFullAccess* Essas políticas dão CodeBuild acesso para assistir eventos da AWS CodeCommit por meio da Amazon CloudWatch e usar o Amazon Simple Storage Service (Amazon S3) como um armazenamento de artefatos.
  + Uma CloudFormation função da AWS com as seguintes políticas, que dão à AWS CloudFormation, no estágio final de criação, a capacidade de criar ou atualizar funções do AWS Lambda, enviar ou observar CloudWatch registros da Amazon e criar e atualizar conjuntos de alterações. 
    + *AWSLambdaFullAccess*
    + *AWSCodeDeployFullAccess*
    + *CloudWatchFullAccess*
    + *AWSCloudFormationFullAccess*
    + *AWSCodePipelineFullAccess*
**nota**  
Duas funções do AWS Identity and Access Management (IAM) para a AWS CodeBuild e a AWS CloudFormation com políticas adequadas CodeBuild para realizar as tarefas de CI de testar, agrupar, empacotar os artefatos e implantá-los em várias regiões da AWS em paralelo.  Verifique as políticas criadas por CodePipeline para verificar se a CodeBuild AWS CloudFormation tem as permissões adequadas nas fases de CI e CD.

## Arquitetura
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-architecture"></a>

![\[Um CodePipeline trabalho da AWS que é implantado em três regiões da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/d44c393c-7243-4d4e-8b84-88a8503af98f/images/5c27fc35-5e62-4292-8b18-a7bc7faf2631.png)


A arquitetura e o fluxo de trabalho de várias regiões deste padrão abrangem as etapas a seguir.

1. Você envia seu código para um CodeCommit repositório.

1. Ao receber qualquer atualização ou confirmação de código, CodeCommit invoca um CloudWatch evento que, por sua vez, inicia um CodePipeline trabalho.

1. CodePipeline engaja o CI que é tratado por. CodeBuild As tarefas a seguir são executadas.
   + Teste dos CloudFormation modelos da AWS (opcional)
   + Empacotamento dos CloudFormation modelos da AWS para cada região incluída na implantação. Por exemplo, esse padrão é implantado paralelamente em três regiões da AWS, então CodeBuild empacota os CloudFormation modelos da AWS em três buckets S3, um em cada região especificada. Os buckets do S3 são usados somente CodeBuild como repositórios de artefatos.

1. CodeBuild empacota os artefatos como entrada para a próxima fase de implantação, que é executada paralelamente nas três regiões da AWS. Se você especificar um número diferente de regiões, CodePipeline será implantado nessas regiões.

## Ferramentas
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-tools"></a>

**Ferramentas**
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — CodePipeline é um serviço de entrega contínua que você pode usar para modelar, visualizar e automatizar as etapas necessárias para liberar suas alterações de software continuamente.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — CodeBuild é um serviço de construção totalmente gerenciado que compila seu código-fonte, executa testes unitários e produz artefatos prontos para implantação.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — CodeCommit é um serviço de controle de versão hospedado pela Amazon Web Services que você pode usar para armazenar e gerenciar de forma privada ativos (como código-fonte e arquivos binários) na nuvem.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS é um serviço que ajuda você a modelar e configurar seus recursos da Amazon Web Services para que você possa passar menos tempo gerenciando esses recursos e mais tempo se concentrando em seus aplicativos que são executados na AWS.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html): o AWS Identity and Access Management (IAM) é um serviço da web que ajuda você a controlar o acesso aos recursos da AWS com segurança.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html): o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet. Ele foi projetado para facilitar a computação de escala na web para os desenvolvedores.

**Código**

O código de exemplo a seguir é para o arquivo `BuildSpec.yaml` (fase de compilação).

```
---
artifacts:
discard-paths: true
files:
- packaged-first-region.yaml
- packaged-second-region.yaml
- packaged-third-region.yaml
phases:
build:
commands:
- echo "********BUILD PHASE - CF PACKAGING**********"
- "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION"
- "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION"
- "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION"
install:
commands:
- echo "********BUILD PHASE - PYTHON SETUP**********"
runtime-versions:
python: 3.8
post_build:
commands:
- echo "********BUILD PHASE - PACKAGING COMPLETION**********"
pre_build:
commands:
- echo "********BUILD PHASE - DEPENDENCY SETUP**********"
- "npm install --silent --no-progress"
- echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********"
version: 0.2
```

## Épicos
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-epics"></a>

### Prepare o código e o CodeCommit repositório
<a name="prepare-the-code-and-the-codecommit-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Selecione a principal região da AWS para a implantação. | Faça login em sua conta da AWS e escolha a região principal para a implantação. O CodeCommit repositório estará na região principal. | DevOps | 
| Crie o CodeCommit repositório. | Crie o CodeCommit repositório e insira o código necessário nele. O código geralmente inclui os modelos da AWS CloudFormation ou do AWS SAM, o código Lambda, se houver, e os CodeBuild `buildspec.yaml` arquivos como entrada para a AWS. CodePipeline | DevOps | 
| Envie o código para o CodeCommit repositório. | Na seção *Anexos*, baixe o código desse exemplo e, em seguida, insira o código necessário nele. Geralmente, o código pode incluir modelos AWS CloudFormation ou AWS SAM, código Lambda e os CodeBuild `buildspec.yaml` arquivos como entrada para o pipeline. | DevOps | 

### Fase de origem: criar o pipeline
<a name="source-phase-create-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o CodePipeline trabalho. | No CodePipeline console, escolha **Criar pipeline**. | DevOps | 
| Dê um nome ao CodePipeline trabalho e escolha a configuração da função de serviço. | Insira um nome para o trabalho e mantenha a configuração padrão da função de serviço para CodePipeline criar a função com as políticas necessárias anexadas. | DevOps | 
| Especifique a localização do armazenamento de artefatos. | Em **Configurações avançadas**, mantenha a opção padrão para CodePipeline criar um bucket S3 a ser usado para armazenamento de artefatos de código. Se você usar um bucket S3 existente em vez disso, o bucket deverá estar na região principal que você especificou no primeiro épico. | DevOps | 
| Especifique a chave de criptografia. | Mantenha a opção padrão, **Chave gerenciada pela AWS padrão**, ou opte por usar sua própria chave gerenciada pelo cliente do AWS Key Management Service (AWS KMS). | DevOps | 
| Especificar o provedor de origem. | Em **Provedor de origem**, escolha **AWS CodeCommit**. | DevOps | 
| Especificar o repositório. | Escolha o CodeCommit repositório que você criou no primeiro épico. Se você inseriu o código em uma ramificação, escolha a ramificação. | DevOps | 
| Especifique como as alterações no código são detectadas. | Mantenha o padrão, **Amazon CloudWatch Events**, como o gatilho de mudança CodeCommit para iniciar o CodePipeline trabalho. | DevOps | 

### Fase de compilação: configurar o pipeline
<a name="build-phase-configure-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Especifique o provedor de compilação. | Para o provedor de compilação, escolha **AWS CodeBuild**. | DevOps | 
| Especifique a região da AWS. | Escolha a região principal, que você especificou no primeiro épico. | DevOps | 

### Fase de compilação: criar e configurar o projeto
<a name="build-phase-create-and-configure-the-project"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar o projeto | Escolha **Criar projeto** e insira um nome para o projeto. | DevOps | 
| Especifique a imagem do ambiente. | Para essa demonstração de padrão, use a imagem CodeBuild gerenciada padrão. Também há a opção de usar uma imagem do Docker personalizada, se tiver uma. | DevOps | 
| Especifique o sistema operacional. | Escolha Amazon Linux 2 ou Ubuntu.O Amazon Linux 2 está se aproximando do fim do suporte. Para obter mais informações, consulte o [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/). | DevOps | 
| Especifique o perfil de serviço. | Escolha a função para a qual você criou CodeBuild antes de começar a criar a CodePipeline tarefa. (Consulte a seção *Pré-requisitos*.) | DevOps | 
| Configure opções adicionais. | Para **Tempo limite** e **Tempo limite em fila**, mantenha os valores padrão. Para ter um certificado, mantenha a configuração padrão, a menos que você tenha um certificado personalizado que queira usar. | DevOps | 
| Crie as variáveis de ambiente. | Para cada região da AWS na qual você deseja implantar, crie variáveis de ambiente fornecendo o nome do bucket do S3 e o nome da região (por exemplo, us-east-1). | DevOps | 
| Forneça o nome do arquivo buildspec, se não for buildspec.yml. | Mantenha esse campo em branco se o nome do arquivo for o padrão, `buildspec.yaml`. Se você renomeou o arquivo buildspec, insira o nome aqui. Verifique se ele corresponde ao nome do arquivo que está no CodeCommit repositório. | DevOps | 
| Especifique o registro. | Para ver os registros do Amazon CloudWatch Events, mantenha a configuração padrão. ou você pode definir qualquer nome específico de grupo ou registrador. | DevOps | 

### Ignore a fase de Implantação
<a name="skip-the-deploy-phase"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Pule a fase de implantação e conclua a criação do pipeline. | Quando você configura o pipeline, CodePipeline permite criar apenas um estágio na fase de implantação. Para implantar em várias regiões da AWS, pule esta fase. Depois que o pipeline for criado, você poderá adicionar vários estágios da fase de Implantação. | DevOps | 

### Fase de Implantação: configurar o pipeline para implantação na primeira região
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-first-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione um estágio à fase de Implantação. | Edite o pipeline e escolha **Adicionar estágio** na fase de Implantação. Essa primeira etapa é para a região principal. | DevOps | 
| Forneça um nome de ação para o estágio. | Insira um nome exclusivo que reflita o primeiro estágio (principal) e a região. Por exemplo, insira **primary\$1<region>\$1deploy**. | DevOps | 
| Especificar o provedor de ação.  | Para o **provedor Action**, escolha AWS CloudFormation. | DevOps | 
| Configure a região para o primeiro estágio. | Escolha a primeira região (primária), a mesma região em que CodePipeline CodeBuild estão configurados. Essa é a região principal na qual você deseja implantar a pilha. | DevOps | 
| Especifique o artefato de entrada. | Selecione **BuildArtifact**. Esse é o resultado da fase de compilação. | DevOps | 
| Especifique a ação a ser tomada. | Para o **Modo de ação**, escolha **Criar ou atualizar uma pilha**. | DevOps | 
| Insira um nome para a CloudFormation pilha. |  | DevOps | 
| Especifique o modelo para a primeira região. | Selecione o nome do pacote específico da região que foi empacotado CodeBuild e despejado no bucket do S3 para a primeira região (primária). | DevOps | 
| Especifique os recursos. | Os recursos são necessários se o modelo de pilha incluir recursos do IAM ou se você criar uma pilha diretamente de um modelo que contém macros. Para esse padrão, use CAPABILITY\$1IAM, CAPABILITY\$1NAMED\$1IAM, CAPABILITY\$1AUTO\$1EXPAND. | DevOps | 

### Fase de implantação: configurar o pipeline para implantação na segunda região
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-second-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione o segundo estágio à fase de Implantação. | Para adicionar um estágio para a segunda região, edite o pipeline e escolha **Adicionar estágio** na fase de Implantação. Importante: o processo de criação da segunda região é o mesmo da primeira região, exceto pelos valores a seguir. | DevOps | 
| Forneça um nome de ação para o segundo estágio. | Insira um nome exclusivo que reflita o segundo estágio e a segunda região. | DevOps | 
| Configure a região para o segundo estágio. | Selecione a segunda região onde você deseja implantar a pilha. | DevOps | 
| Especifique o modelo para a segunda região. | Selecione o nome do pacote específico da região que foi empacotado CodeBuild e despejado no bucket do S3 para a segunda região. | DevOps | 

### Fase de Implantação: configurar o pipeline para implantação na terceira região
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-third-region"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione o terceiro estágio à fase de Implantação. | Para adicionar um estágio para a terceira região, edite o pipeline e escolha **Adicionar estágio** na fase de Implantação. Importante: o processo de criação da segunda região é o mesmo das duas regiões anteriores, exceto pelos valores a seguir. | DevOps | 
| Forneça um nome de ação para o terceiro estágio. | Insira um nome exclusivo que reflita o terceiro estágio e a terceira região. | DevOps | 
| Configure a região para o terceiro estágio. | Selecione a região onde você deseja implantar a pilha. | DevOps | 
| Especifique o modelo para a terceira região. | Selecione o nome do pacote específico da região que foi empacotado CodeBuild e despejado no bucket do S3 para a terceira região. | DevOps | 

### Limpar a implantação
<a name="clean-up-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Excluir os recursos da AWS. | Para limpar a implantação, exclua as CloudFormation pilhas em cada região. Em seguida CodeCommit CodeBuild, exclua CodePipeline os recursos, e da região primária. | DevOps | 

## Recursos relacionados
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-resources"></a>
+ [O que é a AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Modelo de aplicativo sem servidor da AWS](https://aws.amazon.com/serverless/sam/)
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [Referência de estrutura de CloudFormation arquitetura da AWS para AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html)

## Anexos
<a name="attachments-d44c393c-7243-4d4e-8b84-88a8503af98f"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/d44c393c-7243-4d4e-8b84-88a8503af98f/attachments/attachment.zip)

# Implante cargas de trabalho dos DevOps pipelines do Azure em clusters privados do Amazon EKS
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Resumo
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-summary"></a>

Esse padrão demonstra como implementar a integração contínua e a entrega contínua (CI/CD) dos DevOps pipelines do Azure para clusters privados do Amazon Elastic Kubernetes Service (Amazon EKS). Ele aborda um desafio crítico enfrentado por organizações que estão aprimorando sua postura de segurança ao fazer a transição para endpoints de servidor de API privados para seus clusters do Amazon EKS.

Um endpoint público expõe o servidor da API do Kubernetes diretamente à Internet, criando uma superfície de ataque maior que agentes mal-intencionados poderiam potencialmente atingir. Ao mudar para um endpoint privado, o acesso ao ambiente de gerenciamento do cluster é restrito à nuvem privada virtual (VPC) do cliente.

Embora a transição de um cluster Amazon EKS para um endpoint de API privado aumente significativamente a segurança, ela introduz desafios de conectividade para plataformas externas, como o Azure. CI/CD DevOps O endpoint privado só pode ser acessado de dentro da VPC ou das redes emparelhadas do cluster. Portanto, os DevOps agentes padrão do Azure hospedados pela Microsoft, operando fora da rede AWS privada, não podem acessar diretamente o servidor da API Kubernetes. Isso interrompe os fluxos de trabalho de implantação típicos que dependem de ferramentas como kubectl ou Helm executadas nesses agentes porque eles não conseguem estabelecer uma conexão com o cluster.

Para superar esse problema, esse padrão mostra uma abordagem eficiente usando DevOps agentes do Azure auto-hospedados em clusters privados do Amazon EKS. Essa solução oferece otimização de custos, eficiência operacional e escalabilidade superiores, preservando os requisitos de segurança. Essa abordagem beneficia particularmente as empresas que buscam otimizar seus DevOps processos multinuvem sem comprometer o desempenho ou a segurança.

## Pré-requisitos e limitações
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ AWS Command Line Interface [(AWS CLI) versão 2.13.17 ou posterior, instalada.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ kubectl versão 1.25.1 ou posterior, [instalado](https://kubernetes.io/docs/tasks/tools/).
+ Um cluster privado do Amazon EKS versão 1.24 ou posterior [criado](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), com permissões para criar namespaces, segredos e implantações[.](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ Nós de trabalho em um cluster do Amazon EKS com conectividade de saída à Internet para que o DevOps agente do Azure executado neles possa se conectar ao pool de DevOps agentes do Azure.
+ GitHub conta [criada](https://github.com/signup).
+ [Um DevOps projeto do Azure com acesso para configurar conexões de serviço, que são conexões autenticadas entre o Azure Pipelines e serviços externos ou remotos, criado.](https://learn.microsoft.com/en-us/azure/devops/user-guide/sign-up-invite-teammates?view=azure-devops&tabs=microsoft-account)
+ A Kit de ferramentas da AWS para Azure DevOps versão 1.15 ou posterior instalada para o DevOps projeto Azure descrito no ponto anterior. Para obter as instruções de instalação, consulte [Kit de ferramentas da AWS para Azure DevOps](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools) no Visual Studio Marketplace.

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-architecture"></a>

Este padrão cria o seguinte:
+ Repositório **Amazon ECR — O repositório** Amazon Elastic Container Registry (Amazon ECR) armazena a imagem do Docker com o agente do DevOps Azure e o aplicativo de amostra que é implantado.
+ Pool de ** DevOps agentes do Azure - Um pool** de agentes DevOps auto-hospedado do Azure registra o agente em execução no cluster privado do Amazon EKS.
+ **Função do IAM** - Uma função AWS Identity and Access Management (IAM) da conexão de serviço do Azure para fornecer o acesso necessário ao agente que está sendo executado em um cluster privado do Amazon EKS.
+ **Conexão DevOps de serviço do Azure** - Uma conexão de serviço em uma DevOps conta do Azure para usar a função do IAM que fornece o acesso necessário para que os trabalhos do pipeline acessem Serviços da AWS.

O diagrama a seguir mostra a arquitetura da implantação de um DevOps agente do Azure auto-hospedado em um cluster privado do Amazon EKS e da implantação de um aplicativo de amostra no mesmo cluster.

![\[Implantação do DevOps agente do Azure auto-hospedado e do aplicativo de amostra no cluster privado Amazon EKS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a965834f-a1e2-4679-bd8c-15eed4f57b55/images/ee22bd3e-311c-46e0-8024-9b7e7752080a.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Implante um DevOps agente do Azure auto-hospedado como uma implantação dentro de um cluster Amazon EKS.

1. Um DevOps agente do Azure se conecta ao pool de agentes em uma DevOps conta do Azure usando um token de acesso pessoal (PAT) para autenticação.

1. O Azure Pipelines configura um pipeline para implantação usando o código de um GitHub repositório.

1. O pipeline é executado no agente pelo do pool de agentes que foi configurado na configuração do pipeline. O DevOps agente do Azure obtém as informações do trabalho do pipeline fazendo pesquisas constantes na DevOps conta do Azure.

1. O DevOps agente do Azure cria uma imagem do Docker como parte do trabalho do pipeline e envia a imagem para o repositório Amazon ECR.

1. O DevOps agente do Azure implanta o aplicativo de amostra em um cluster privado do Amazon EKS em um namespace chamado. `webapp` 

## Ferramentas
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-tools"></a>

**Ferramentas**
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+ [O Amazon Elastic Kubernetes Service (Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

**Outras ferramentas**
+ O [Docker](https://www.docker.com/) é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) é uma interface de linha de comando que ajuda você na execução de comandos em clusters do Kubernetes.

**Repositório de código**
+ O código desse padrão está disponível no repositório GitHub [deploy-kubernetes-resources-to- amazon-eks-using-azure -devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops).

## Práticas recomendadas
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-best-practices"></a>
+ Para o Amazon EKS, consulte o [Amazon EKS Best Practices Guide](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html).
+ Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

## Épicos
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-epics"></a>

### Criar uma conexão de serviço
<a name="create-a-service-connection"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Encontre o GUID da DevOps organização do Azure. | Entre na sua DevOps conta do Azure e use a seguinte URL para encontrar o GUID da organização: `https://dev.azure.com/{DevOps_Org_ID}/_apis/projectCollections?api-version=6.0` Na URL, `{DevOps_org_ID}` substitua pela ID da DevOps organização do Azure. | AWS DevOps | 
| Configure um IdP na Conta da AWS. | Para configurar um provedor de identidade (IdP) no Conta da AWS para uma conexão de serviço do Azure, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obter mais detalhes, consulte [Como federar a AWS partir do Azure DevOps usando o OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/). | AWS DevOps | 
| Crie uma política do IAM na Conta da AWS. | Para criar uma política do IAM para fornecer as permissões necessárias para a função do IAM usada pelo DevOps pipeline do Azure, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Crie um perfil do IAM na Conta da AWS. | Para configurar uma função do IAM na conexão Conta da AWS de serviço do Azure, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Federated": "arn:aws:iam::{account_id}:oidc-provider/vstoken.dev.azure.com/{OrganizationGUID}"<br />      },<br />      "Action": "sts:AssumeRoleWithWebIdentity",<br />      "Condition": {<br />        "StringEquals": {<br />          "vstoken.dev.azure.com/{OrganizationGUID}:aud": "api://AzureADTokenExchange",<br />          "vstoken.dev.azure.com/{OrganizationGUID}:sub": "sc://{OrganizationName}/{ProjectName}/{ServiceConnectionName}"<br />        }<br />      }<br />    }<br />  ]<br />}</pre>Na política, forneça suas informações para os seguintes espaços reservados:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Crie uma conexão de serviço na DevOps conta do Azure. | Para configurar uma conexão de serviço do Azure, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obter mais detalhes, consulte [Create a service connection](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#create-a-service-connection) na documentação da Microsoft. | AWS DevOps | 
| Adicione o perfil do IAM ao arquivo de configuração do Amazon EKS. | O perfil do IAM deve ter permissões necessárias para executar as operações necessárias no cluster do Amazon EKS. Por ser uma função de pipeline, o perfil do IAM deve ser capaz de gerenciar quase todos os tipos de recursos no cluster. Portanto, a permissão do grupo `system:masters` é apropriada para esse perfil.Para adicionar a configuração necessária a `aws-auth ConfigMap` no Kubernetes, use o seguinte código:<pre>- groups:<br />  - system:masters<br />  rolearn: arn:aws:iam::{account_id}:role/ADO-role<br />  username: ADO-role</pre>`{account_id}`Substitua pelo seu Conta da AWS ID.Para obter mais informações, consulte [Como o Amazon EKS funciona com o IAM](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-service-with-iam.html#security-iam-service-with-iam-roles) na documentação do Amazon EKS. | AWS DevOps | 

### Criar um pool de agentes
<a name="create-an-agent-pool"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um pool de agentes auto-hospedado. | Para configurar um pool de agentes auto-hospedado na DevOps conta do Azure, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obter mais detalhes, consulte [Create and manage agent pools](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser) na documentação da Microsoft. |  | 

### Crie uma imagem de DevOps agente do Azure e envie para o Amazon ECR
<a name="build-azure-devops-agent-image-and-push-to-ecr"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um repositório do Amazon ECR. | As imagens do Docker usadas para implantar o DevOps agente do Azure e o aplicativo de amostra (`webapp`) no cluster privado do Amazon EKS devem ser armazenadas em um repositório Amazon ECR. Para criar um repositório do Amazon ECR, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Para obter mais detalhes, consulte [Creating an Amazon ECR private repository to store images](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) na documentação do Amazon ECR. | AWS DevOps | 
| Crie um Dockerfile para criar o agente do Azure DevOps . | Crie um Dockerfile para criar a imagem do Docker que tem o agente do Azure DevOps instalado. Armazene o seguinte conteúdo em um arquivo chamado `Dockerfile`:<pre><br />FROM ubuntu:22.04 <br />ENV TARGETARCH="linux-x64"<br />RUN apt update && apt upgrade -y && apt install -y curl git jq libicu70 unzip wget<br /><br />RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />RUN unzip awscliv2.zip<br />RUN ./aws/install<br />RUN rm -rf aws awscliv2.zip<br /><br />RUN curl -sSL https://get.docker.com/ | sh<br /><br />RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash<br />RUN mkdir -p azp <br />WORKDIR /azp/<br /><br />COPY ./start.sh ./ <br />RUN chmod +x ./start.sh<br /><br />RUN useradd -m -d /home/agent agent <br />RUN chown -R agent:agent /azp /home/agent<br />RUN groupadd -f docker <br />RUN usermod -aG docker agent<br />USER agent<br /><br />ENTRYPOINT [ "./start.sh" ]</pre> | AWS DevOps | 
| Crie um script para o DevOps agente do Azure. | Para criar o script `start.sh`, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Crie uma imagem do Docker com o DevOps agente do Azure.  | Para criar uma imagem do Docker para instalar o DevOps agente do Azure, use o Dockerfile que você criou anteriormente para criar a imagem. No mesmo diretório em que o Dockerfile está armazenado, execute os seguintes comandos:<pre>aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com<br /><br />docker build --platform linux/amd64 -t ado-agent:latest .<br /><br />docker tag ado-agent:latest aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br /><br />docker push aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest</pre>`region`Substitua `aws_account_id` e por seu Conta da AWS ID Região da AWS e. | AWS DevOps | 

### Implante o DevOps agente do Azure em um cluster privado do Amazon EKS
<a name="deploy-the-azure-devops-agent-to-a-private-eks-cluster"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Gere um token de acesso pessoal do Azure. | O agente em execução no cluster privado do Amazon EKS requer um token de acesso pessoal (PAT) para que possa se autenticar com a conta do Azure DevOps . Para gerar um PAT, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>apiVersion: v1<br />kind: Secret<br />metadata:<br />  name: azdevops-pat<br />  namespace: default<br />type: Opaque<br />stringData:<br />  AZP_TOKEN: <PAT Token></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>kubectl create -f ado-secret.yaml</pre>Para obter mais detalhes, consulte [Register an agent using a personal access token (PAT)](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/personal-access-token-agent-registration?view=azure-devops) na documentação da Microsoft. | AWS DevOps | 
| Use o arquivo de manifesto do Kubernetes para a implantação de agentes. | Para implantar o DevOps agente do Azure no cluster privado do Amazon EKS, copie o seguinte arquivo de manifesto e armazene o arquivo como`agent-deployment.yaml`: <pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: azure-pipelines-agent-eks<br />  labels:<br />    app: azure-pipelines-agent<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: azure-pipelines-agent<br />  template:<br />    metadata:<br />      labels:<br />        app: azure-pipelines-agent<br />    spec:<br />      containers:<br />      - name: docker<br />        image: docker:dind<br />        securityContext: <br />          privileged: true<br />        volumeMounts:<br />        - name: shared-workspace<br />          mountPath: /workspace<br />        - name: dind-storage<br />          mountPath: /var/lib/docker<br />        env:<br />        - name: DOCKER_TLS_CERTDIR<br />          value: ""<br />      - name: azure-pipelines-agent<br />        image: aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br />        env:<br />        - name: AZP_URL<br />          value: "<Azure account URL>"<br />        - name: AZP_POOL<br />          value: "eks-agent"<br />        - name: AZP_TOKEN<br />          valueFrom:<br />            secretKeyRef:<br />              name: azdevops-pat<br />              key: AZP_TOKEN<br />        - name: AZP_AGENT_NAME<br />          valueFrom:<br />            fieldRef:<br />              fieldPath: metadata.name<br />        - name: DOCKER_HOST<br />          value: tcp://localhost:2375<br />        volumeMounts:<br />        - mountPath: /workspace<br />          name: shared-workspace<br />      volumes:<br />      - name: dind-storage<br />        emptyDir: {}<br />      - name: shared-workspace<br />        emptyDir: {}</pre>Substitua `aws_account_id` e `<Azure account URL>` por sua Conta da AWS ID e URL DevOps da conta do Azure. | AWS DevOps | 
| Implante o agente no cluster privado do Amazon EKS. | Para implantar o agente do Azure Devops no cluster privado do Amazon EKS, use o seguinte comando:<pre>kubectl create -f agent-deployment.tf</pre> | AWS DevOps | 
| Verifique se o agente está em execução. | Para verificar se o DevOps agente do Azure está em execução, use o seguinte comando:<pre>kubectl get deploy azure-pipelines-agent-eks<br /></pre>A saída esperada deve ser semelhante ao seguinte:<pre><br />NAME                        READY   UP-TO-DATE   AVAILABLE   AGE<br />azure-pipelines-agent-eks   1/1     1            1           58s</pre>Certifique-se de que a coluna `READY ` mostre `1/1`. | AWS DevOps | 
| Verifique se o agente está registrado no pool de DevOps agentes do Azure. | Para verificar se o agente está implantado no cluster privado do Amazon EKS e está registrado no pool de agentes `eks-agent`, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Você deve ver um agente listado com o **status** **Online** e o nome do agente deve começar com **azure-pipelines-agent-eks-\$1**. | AWS DevOps | 

### Implantar a aplicação de exemplo
<a name="deploy-sample-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Bifurque o repositório de aplicativos de amostra para sua GitHub conta.  | Bifurque o seguinte repositório de AWS amostras para sua GitHub conta:[https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure -DevOps](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops) | AWS DevOps | 
| Crie um pipeline. | Para criar um pipeline na sua DevOps conta do Azure, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>pool:<br />  name: eks-agent<br />#pool: self-hosted # If you are running self-hosted Azure DevOps Agents<br /><br />stages:<br /># Refering the pipeline template, input parameter that are not specified will be added with defaults<br />- template: ./pipeline_templates/main_template.yaml<br />  parameters:<br />    serviceConnectionName: aws-sc<br />    awsRegion: <your region><br />    awsEKSClusterName: <name of your EKS cluster><br />    projectName: webapp<br /></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Verifique se a aplicação de exemplo foi implantada. | Após a conclusão do pipeline, verifique se a implantação da aplicação de exemplo foi bem-sucedida conferindo o repositório do Amazon ECR e o cluster do Amazon EKS.Para verificar artefatos no repositório do Amazon ECR, siga as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Por exemplo, `20250501.1-image` e `20250501.1-helm`.Para verificar a implantação no cluster privado do Amazon EKS no namespace `webapp`, use o seguinte comando:<pre>kubectl get deploy -n webapp </pre>A saída esperada é a seguinte:<pre><br />NAME     READY   UP-TO-DATE   AVAILABLE<br />webapp   1/1     1            1           </pre>Observação: se essa for sua primeira execução do pipeline, talvez seja necessário autorizar a conexão de serviço e o pool de agentes. Procure solicitações de permissão na interface do DevOps pipeline do Azure e aprove-as para continuar. | AWS DevOps | 

## Solução de problemas
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O pipeline falha quando o nome do repositório do Amazon ECR não corresponde a `webapp` | A aplicação de exemplo espera que o nome do repositório do Amazon ECR corresponda ao parâmetro `projectName: webapp` em `azure_pipeline.yml`.Para resolver esse problema, renomeie seu repositório do Amazon ECR para `webapp` ou atualize o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 
| Erro: cluster do Kubernetes inacessível: o servidor solicitou que o cliente fornecesse credenciais | Se você encontrar esse erro na etapa “Pull and Deploy Helm Chart” no pipeline do Azure, a causa-raiz geralmente decorre de uma configuração incorreta do perfil do IAM no `aws-auth ConfigMap` do cluster do Amazon EKS.Para resolver esse problema, verifique o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 

## Recursos relacionados
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-resources"></a>

**AWS Blogs**
+ [Como se federar a AWS partir do Azure DevOps usando o OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/)

**Serviços da AWS documentação**
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)

**Documentação da Microsoft**
+ [O que é o Azure DevOps?](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)
+ [What is Azure Pipelines?](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops)

# Execução de consultas SQL no Amazon Redshift usando o Terraform
<a name="execute-redshift-sql-queries-using-terraform"></a>

*Sylvia Qi e Aditya Ambati, Amazon Web Services*

## Resumo
<a name="execute-redshift-sql-queries-using-terraform-summary"></a>

Usar a infraestrutura como código (IaC) para a implantação e o gerenciamento do Amazon Redshift é uma prática predominante na empresa. DevOps A IaC facilita a implantação e a configuração de diversos recursos do Amazon Redshift, como clusters, snapshots e grupos de parâmetros. No entanto, a IaC não abrange o gerenciamento de recursos de banco de dados, como tabelas, esquemas, visualizações e procedimentos armazenados. Esses elementos de banco de dados são gerenciados por meio de consultas SQL e não são diretamente compatíveis com as ferramentas de IaC. Embora existam soluções e ferramentas para gerenciar esses recursos, você pode preferir não adicionar ferramentas extras à sua pilha tecnológica.

Este padrão descreve uma metodologia que usa o Terraform para implantar recursos de banco de dados do Amazon Redshift, incluindo tabelas, esquemas, visualizações e procedimentos armazenados. O padrão faz a distinção entre dois tipos de consultas SQL:
+ **Consultas não repetíveis**: essas consultas são executadas uma única vez durante a implantação inicial do Amazon Redshift para estabelecer os componentes essenciais do banco de dados. 
+ **Consultas repetíveis**: essas consultas são imutáveis e podem ser executadas novamente sem impactar o banco de dados. A solução emprega o Terraform para monitorar mudanças nas consultas repetíveis e aplicá-las de forma apropriada.

Para obter mais detalhes, consulte *Explicação passo a passo da solução* em [Informações adicionais](#execute-redshift-sql-queries-using-terraform-additional).

## Pré-requisitos e limitações
<a name="execute-redshift-sql-queries-using-terraform-prereqs"></a>

**Pré-requisitos **

Você deve ter um ativo Conta da AWS e instalar o seguinte em sua máquina de implantação:
+ [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (AWS CLI)
+ Um [AWS CLI perfil](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) configurado com permissões do Amazon Redshift read/write 
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) versão 1.6.2 ou versões posteriores
+ [Python 3](https://www.python.org/downloads/)
+ [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)

**Limitações**
+ Esta solução fornece suporte para um único banco de dados do Amazon Redshift, pois o Terraform permite a criação de apenas um banco de dados durante a criação do cluster.
+ Este padrão não inclui testes para validar as alterações nas consultas repetíveis antes de aplicá-las. Recomendamos que você incorpore esses testes para aumentar a confiabilidade.
+ Para ilustrar a solução, este padrão fornece um arquivo de amostra `redshift.tf` que usa um arquivo de estado local do Terraform. No entanto, para ambientes de produção, recomendamos que você utilize um arquivo de estado remoto com um mecanismo de bloqueio para maior estabilidade e colaboração.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**

Esta solução foi desenvolvida e testada no [patch 179 do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/cluster-versions.html#cluster-version-179).

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [amazon-redshift-sql-deploy-terraform](https://github.com/aws-samples/amazon-redshift-sql-deploy-terraform).

## Arquitetura
<a name="execute-redshift-sql-queries-using-terraform-architecture"></a>

O diagrama apresentado a seguir ilustra como o Terraform gerencia os recursos do banco de dados do Amazon Redshift ao lidar tanto com consultas SQL não repetíveis quanto com consultas SQL repetíveis.

![\[Processo para o Terraform gerenciar os recursos do banco de dados do Amazon Redshift usando consultas SQL.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/0f4467ac-761b-4b6b-a32f-e18a2ca2245d/images/3b6ff9e8-e3d1-48ed-9fa1-4b14f7d3d65b.png)


O diagrama mostra as seguintes etapas:

1. O Terraform aplica consultas SQL não repetíveis durante a implantação inicial do cluster do Amazon Redshift.

1. O desenvolvedor faz a confirmação das alterações nas consultas SQL repetíveis.

1. O Terraform monitora as mudanças nas consultas SQL repetíveis.

1. O Terraform aplica consultas SQL repetíveis no banco de dados do Amazon Redshift.

A solução fornecida por este padrão é desenvolvida com base no [módulo do Terraform para o Amazon Redshift](https://registry.terraform.io/modules/terraform-aws-modules/redshift/aws/latest). O módulo do Terraform provisiona um cluster e um banco de dados do Amazon Redshift. Para aprimorar o módulo, usamos `terraform_data` recursos, que invocam um script Python personalizado para executar consultas SQL usando a operação de API do Amazon Redshift. [ExecuteStatement](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html) Como resultado, o módulo é capaz de realizar o seguinte:
+ Implantar qualquer número de recursos de banco de dados usando consultas SQL após o provisionamento do banco de dados.
+ Realizar o monitoramento contínuo em busca de alterações nas consultas SQL repetíveis e aplicar essas mudanças usando o Terraform.

Para obter mais detalhes, consulte *Explicação passo a passo da solução* em [Informações adicionais](#execute-redshift-sql-queries-using-terraform-additional).

## Ferramentas
<a name="execute-redshift-sql-queries-using-terraform-tools"></a>

**Serviços da AWS**
+ O [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html) é um serviço totalmente gerenciado de data warehouse em escala de petabytes na Nuvem AWS.

**Outras ferramentas**
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ [Python](https://www.python.org/) é uma linguagem de programação de uso geral, empregada neste padrão para executar consultas SQL. 

## Práticas recomendadas
<a name="execute-redshift-sql-queries-using-terraform-best-practices"></a>
+ [Melhores práticas do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/best-practices.html)
+ [Using the Amazon Redshift Data API to interact with Amazon Redshift clusters](https://aws.amazon.com/blogs/big-data/using-the-amazon-redshift-data-api-to-interact-with-amazon-redshift-clusters/)

## Épicos
<a name="execute-redshift-sql-queries-using-terraform-epics"></a>

### Implementação da solução usando o Terraform
<a name="deploy-the-solution-using-terraform"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| **Clone o repositório.** | Para clonar o repositório Git que contém o código do Terraform para o provisionamento de um cluster do Amazon Redshift, use o comando apresentado a seguir.<pre>git clone https://github.com/aws-samples/amazon-redshift-sql-deploy-terraform.git</pre> | DevOps engenheiro | 
| **Atualize as variáveis do Terraform.** | Para personalizar a implantação do cluster do Amazon Redshift de acordo com seus requisitos específicos, atualize os parâmetros apresentados a seguir no arquivo `terraform.tfvars`.<pre>region                    = "<AWS_REGION>"<br />cluster_identifier        = "<REDSHIFT_CLUSTER_IDENTIFIER>"<br />node_type                 = "<REDSHIFT_NODE_TYPE>"<br />number_of_nodes           = "<REDSHIFT_NODE_COUNT>"<br />database_name             = "<REDSHIFT_DB_NAME>"<br />subnet_ids                = "<REDSHIFT_SUBNET_IDS>"<br />vpc_security_group_ids    = "<REDSHIFT_SECURITY_GROUP_IDS>"<br />run_nonrepeatable_queries = true<br />run_repeatable_queries    = true<br />sql_path_bootstrap        = "<BOOTSTRAP_SQLS_PATH>"<br />sql_path_nonrepeatable    = "<NON-REPEATABLE_SQLS_PATH>"<br />sql_path_repeatable       = "<REPEATABLE_SQLS_PATH>"<br />sql_path_finalize         = "<FINALIZE_SQLS_PATH>"<br />create_random_password    = false<br />master_username           = "<REDSHIFT_MASTER_USERNAME>"</pre> | DevOps engenheiro | 
| Implante os recursos usando o Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/execute-redshift-sql-queries-using-terraform.html) | DevOps engenheiro | 
| (Opcional) Execute consultas SQL adicionais. | O repositório de amostra fornece várias consultas SQL para fins de demonstração. Para executar suas próprias consultas SQL, adicione-as às seguintes pastas:`/bootstrap` `/nonrepeatable` `/repeatable` `/finalize` |  | 

### Monitoramento da execução das instruções SQL
<a name="monitor-the-execution-of-sql-statements"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Monitore a implantação das instruções SQL. | É possível monitorar os resultados das execuções SQL em um cluster do Amazon Redshift. Para obter exemplos de saída que mostram uma execução SQL com falha e uma execução com êxito, consulte as *Instruções SQL de exemplo* em [Informações adicionais](#execute-redshift-sql-queries-using-terraform-additional).  | DBA, engenheiro DevOps  | 
| Limpe recursos. | Para excluir todos os recursos implantados pelo Terraform, execute o comando apresentado a seguir.<pre>terraform destroy</pre> | DevOps engenheiro | 

### Validação dos resultados
<a name="validate-the-results"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide os dados no cluster do Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/execute-redshift-sql-queries-using-terraform.html) | DBA, AWS DevOps | 

## Recursos relacionados
<a name="execute-redshift-sql-queries-using-terraform-resources"></a>

**AWS documentação**
+ [Clusters provisionados pelo Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)
+ [Solução de problemas com a API de dados do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/data-api-troubleshooting.html)

**Outros recursos**
+ [Command: apply](https://developer.hashicorp.com/terraform/cli/commands/apply) (documentação do Terraform)

## Mais informações
<a name="execute-redshift-sql-queries-using-terraform-additional"></a>

**Explicação passo a passo da solução**

Para usar a solução, você deve organizar suas consultas SQL do Amazon Redshift de uma forma específica. Todas as consultas SQL devem ser armazenadas em arquivos com a extensão `.sql`.

No exemplo de código fornecido com este padrão, as consultas SQL estão organizadas na estrutura de pastas apresentada a seguir. É possível modificar o código (`sql-queries.tf` e `sql-queries.py`) para funcionar com qualquer estrutura que atenda ao seu caso de uso específico.

```
/bootstrap
     |- Any # of files
     |- Any # of sub-folders
/nonrepeatable
     |- Any # of files
     |- Any # of sub-folders
/repeatable
     /udf
          |- Any # of files
          |- Any # of sub-folders
     /table
          |- Any # of files
          |- Any # of sub-folders
     /view
          |- Any # of files
          |- Any # of sub-folders
     /stored-procedure
          |- Any # of files
          |- Any # of sub-folders
/finalize
     |- Any # of files
     |- Any # of sub-folders
```

Dada a estrutura de pastas apresentada anteriormente, durante a implantação do cluster do Amazon Redshift, o Terraform executa as consultas na seguinte ordem:

1. `/bootstrap`

1. `/nonrepeatable`

1. `/repeatable`

1. `/finalize`

A pasta `/repeatable` contém quatro subpastas: `/udf`, `/table`, `/view` e `/stored-procedure`. Essas subpastas indicam a ordem em que o Terraform executa as consultas SQL.

O script em Python que executa as consultas SQL é `sql-queries.py`. Primeiro, o script realiza a leitura de todos os arquivos e subpastas de um diretório de origem específico, por exemplo, o parâmetro `sql_path_bootstrap`. Em seguida, o script executa as consultas chamando a operação da API do Amazon [ExecuteStatement](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html)Redshift. É possível ter uma ou mais consultas SQL em um arquivo. O trecho de código apresentado a seguir mostra a função em Python que executa as instruções SQL armazenadas em um arquivo em um cluster do Amazon Redshift.

```
def execute_sql_statement(filename, cluster_id, db_name, secret_arn, aws_region):
    """Execute SQL statements in a file"""
    redshift_client = boto3.client(
        'redshift-data', region_name=aws_region)
    contents = get_contents_from_file(filename),
    response = redshift_client.execute_statement(
        Sql=contents[0],
        ClusterIdentifier=cluster_id,
        Database=db_name,
        WithEvent=True,
        StatementName=filename,
        SecretArn=secret_arn
    )
    ...
```

O script do Terraform `sql-queries.tf` cria os recursos [terraform\$1data](https://developer.hashicorp.com/terraform/language/resources/terraform-data) que invocam o script `sql-queries.py`. Há um recurso `terraform_data` para cada uma das quatro pastas: `/bootstrap`, `/nonrepeatable`, `/repeatable` e `/finalize`. O trecho de código apresentado a seguir mostra o recurso `terraform_data` que executa as consultas SQL na pasta `/bootstrap`.

```
locals {
  program               = "${path.module}/sql-queries.py"
  redshift_cluster_name = try(aws_redshift_cluster.this[0].id, null)
}

resource "terraform_data" "run_bootstrap_queries" {
  count      = var.create && var.run_nonrepeatable_queries && (var.sql_path_bootstrap != "") && (var.snapshot_identifier == null) ? 1 : 0
  depends_on = [aws_redshift_cluster.this[0]]

  provisioner "local-exec" {
    command = "python3 ${local.program} ${var.sql_path_bootstrap} ${local.redshift_cluster_name} ${var.database_name} ${var.redshift_secret_arn} ${local.aws_region}"
  }
}
```

É possível controlar se as consultas serão executadas usando as variáveis apresentadas a seguir. Caso não deseje executar as consultas em `sql_path_bootstrap`, `sql_path_nonrepeatable`, `sql_path_repeatable` ou `sql_path_finalize`, defina seus valores como `""`.

```
  run_nonrepeatable_queries = true
  run_repeatable_queries    = true
  sql_path_bootstrap        = "src/redshift/bootstrap"
  sql_path_nonrepeatable    = "src/redshift/nonrepeatable"
  sql_path_repeatable       = "src/redshift/repeatable"
  sql_path_finalize         = "src/redshift/finalize"
```

Quando você executa `terraform apply`, o Terraform considera o recurso `terraform_data` adicionado após a conclusão do script, independentemente dos resultados do script. Se algumas consultas SQL falharem e você desejar executá-las novamente, é possível remover manualmente o recurso do estado do Terraform e executar `terraform apply` novamente. Por exemplo, o seguinte comando remove o recurso `run_bootstrap_queries` do estado do Terraform.

`terraform state rm module.redshift.terraform_data.run_bootstrap_queries[0]`

O exemplo de código apresentado a seguir mostra como o recurso `run_repeatable_queries` monitora alterações na pasta `repeatable` usando [sha256 hash](https://developer.hashicorp.com/terraform/language/functions/sha256). Se qualquer arquivo presente na pasta for atualizado, o Terraform marca todo o diretório para atualização. Em seguida, o Terraform executa novamente as consultas do diretório na próxima execução de `terraform apply`.

```
resource "terraform_data" "run_repeatable_queries" {
  count      = var.create_redshift && var.run_repeatable_queries && (var.sql_path_repeatable != "") ? 1 : 0
  depends_on = [terraform_data.run_nonrepeatable_queries]

  # Continuously monitor and apply changes in the repeatable folder
  triggers_replace = {
    dir_sha256 = sha256(join("", [for f in fileset("${var.sql_path_repeatable}", "**") : filesha256("${var.sql_path_repeatable}/${f}")]))
  }

  provisioner "local-exec" {
    command = "python3 ${local.sql_queries} ${var.sql_path_repeatable} ${local.redshift_cluster_name} ${var.database_name} ${var.redshift_secret_arn}"
  }
}
```

Para aprimorar o código, você pode implementar um mecanismo para detectar e aplicar alterações apenas nos arquivos que foram atualizados na pasta `repeatable`, em vez de aplicá-las a todos os arquivos indiscriminadamente.

**Instruções SQL de exemplo**

A saída a seguir apresenta uma execução SQL com falha, juntamente com a mensagem de erro correspondente.

```
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Executing: ["/bin/sh" "-c" "python3 modules/redshift/sql-queries.py src/redshift/nonrepeatable testcluster-1 db1 arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:/redshift/master_user/password-8RapGH us-east-1"]
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): src/redshift/nonrepeatable/table/admin/admin.application_family.sql
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Status: FAILED
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): SQL execution failed.
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Error message: ERROR: syntax error at or near ")"
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec):   Position: 244
module.redshift.terraform_data.run_nonrepeatable_queries[0]: Creation complete after 3s [id=ee50ba6c-11ae-5b64-7e2f-86fd8caa8b76]
```

A saída apresentada a seguir mostra uma execução SQL com êxito.

```
module.redshift.terraform_data.run_bootstrap_queries[0]: Provisioning with 'local-exec'...
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): Executing: ["/bin/sh" "-c" "python3 modules/redshift/sql-queries.py src/redshift/bootstrap testcluster-1 db1 arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:/redshift/master_user/password-8RapGH us-east-1"]
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): src/redshift/bootstrap/db.sql
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): Status: FINISHED
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): SQL execution successful.
module.redshift.terraform_data.run_bootstrap_queries[0]: Creation complete after 2s [id=d565ef6d-be86-8afd-8e90-111e5ea4a1be]
```

# Exporte relatórios do AWS Backup de toda a organização no AWS Organizations como um arquivo CSV
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file"></a>

*Aromal Raj Jayarajan e Purushotham G K, Amazon Web Services*

## Resumo
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-summary"></a>

Esse padrão mostra como exportar relatórios de trabalho do AWS Backup de toda a organização para o AWS Organizations como um arquivo CSV. A solução usa o AWS Lambda e EventBridge a Amazon para categorizar os relatórios de trabalho do AWS Backup com base em seu status, o que pode ajudar na configuração de automações baseadas em status.

O AWS Backup ajuda organizações a gerenciar e automatizar centralmente a proteção de dados nos serviços da AWS, na nuvem e em ambientes on-premises. No entanto, para trabalhos do AWS Backup configurados dentro do AWS Organizations, os relatórios consolidados estão disponíveis somente no Console de Gerenciamento da AWS da conta de gerenciamento de cada organização. Trazer esses relatórios para fora da conta de gerenciamento pode reduzir o esforço necessário para a auditoria e aumentar o escopo de automações, notificações e alertas.

## Pré-requisitos e limitações
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Uma [organização](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html) ativa no AWS Organizations que inclui pelo menos uma conta de gerenciamento e uma conta de membro
+ AWS Backup configurado no nível da organização no AWS Organizations (para obter mais informações, consulte [Automatizar o backup centralizado em grande escala em todos os serviços da AWS usando o AWS Backup](https://aws.amazon.com/blogs/storage/automate-centralized-backup-at-scale-across-aws-services-using-aws-backup/) no blog da AWS)
+ O [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) instalado e configurado em sua máquina local

**Limitações **

A solução fornecida nesse padrão identifica os recursos da AWS que estão configurados somente para trabalhos do AWS Backup. O relatório não consegue identificar recursos da AWS que não estão configurados para backup por meio do AWS Backup.

## Arquitetura
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS Backup
+ AWS CloudFormation
+ Amazon EventBridge
+ AWS Lambda
+ AWS Security Token Service (AWS STS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Identity and Access Management (IAM)

**Arquitetura de destino**

O diagrama a seguir mostra um exemplo de fluxo de trabalho para exportar relatórios de trabalho do AWS Backup de toda a organização para o AWS Organizations como um arquivo CSV.

![\[Usando Lambda EventBridge, AWS STS e IAM para exportar relatórios de tarefas do AWS Backup de toda a organização em formato CSV.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/74955aad-cc6d-488b-aa34-ae43f50fec60/images/5c39c79f-e731-4ad0-b404-51ebe0976420.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Uma regra de EventBridge evento programado invoca uma função Lambda na conta membro (de relatórios) da AWS.

1. A função do Lambda então usa o AWS STS para presumir um perfil do IAM que tem as permissões necessárias para se conectar à conta de gerenciamento.

1. A função do Lambda faz o seguinte:
   + Solicita o relatório consolidado de trabalhos do AWS Backup para o serviço AWS Backup
   + Categoriza os resultados com base no status do trabalho do AWS Backup
   + Converte a resposta em um arquivo CSV
   + Carrega os resultados em um bucket do Amazon S3 na conta de relatórios dentro de pastas que são rotuladas com base na data de criação

## Ferramentas
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-tools"></a>

**Ferramentas**
+ O [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) é um serviço totalmente gerenciado que ajuda você a centralizar e automatizar a proteção de dados nos serviços da AWS, na nuvem e em ambientes on-premises.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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 Lambda, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outras contas da AWS.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Código **

O código desse padrão está disponível no GitHub [aws-backup-report-generator](https://github.com/aws-samples/aws-backup-report-generator)repositório.

## Práticas recomendadas
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-best-practices"></a>
+ [Práticas recomendadas de segurança para o Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) (*Guia do usuário do Amazon S3*)
+ [Práticas recomendadas para trabalhar com funções do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) (*Guia do desenvolvedor do AWS Lambda*)
+ [Práticas recomendadas para a conta de gerenciamento](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html) (*Guia do usuário do AWS Organizations*)

## Épicos
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-epics"></a>

### Implante os componentes da solução
<a name="deploy-the-solution-components"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o GitHub repositório. | Clone o GitHub [aws-backup-report-generator](https://github.com/aws-samples/aws-backup-report-generator)repositório executando o seguinte comando em uma janela de terminal:<pre>git clone https://github.com/aws-samples/aws-backup-report-generator.git</pre>Para obter mais informações, consulte [Clonar um repositório no GitHub Docs](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). | AWS DevOps, DevOps engenheiro | 
| Implante os componentes da solução na conta membro (de relatórios) da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | DevOps engenheiro, AWS DevOps | 

### Testar a solução
<a name="test-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Certifique-se de que a EventBridge regra seja executada antes do teste. | Certifique-se de que a EventBridge regra seja executada aguardando pelo menos 24 horas ou aumentando a frequência do relatório no arquivo CloudFormation **template-reporting.yml** do modelo.**Como aumentar a frequência do relatório**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps engenheiro | 
| Verifique o bucket do Amazon S3 para ver o relatório gerado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps engenheiro | 

### Limpe os seus recursos
<a name="clean-up-your-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os componentes da solução da conta membro (de relatórios). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps engenheiro | 
| Exclua os componentes da solução da conta de gerenciamento. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps engenheiro | 

## Recursos relacionados
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-resources"></a>
+ [Tutorial: Using AWS Lambda with scheduled events](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents-tutorial.html) (documentação do AWS Lambda)
+ [Criação de eventos programados para executar funções do AWS Lambda](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/scheduled-events-invoking-lambda-example.html) (SDK da AWS para documentação) JavaScript 
+ [Tutorial do IAM: Delegar acesso entre contas da AWS usando perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) (documentação do IAM)
+ [Terminologia e conceitos do AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) (documentação do AWS Organizations)
+ [Creating report plans using the AWS Backup console](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-report-plan-console.html) (documentação do AWS Backup)
+ [Create an audit report](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-audit-report.html) (documentação do AWS Backup)
+ [Creating on-demand reports](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-on-demand-reports.html) (documentação do AWS Backup)
+ [O que é o AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) (documentação do AWS Backup)
+ [Automate centralized backup at scale across AWS services using AWS Backup](https://aws.amazon.com/blogs/storage/automate-centralized-backup-at-scale-across-aws-services-using-aws-backup/) (publicação do Blog da AWS)

# Exportar tags de uma lista de EC2 instâncias da Amazon para um arquivo CSV
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file"></a>

*Sida Ju e Pac Joonhyun, Amazon Web Services*

## Resumo
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-summary"></a>

Esse padrão mostra como exportar programaticamente tags de uma lista de instâncias do Amazon Elastic Compute Cloud (Amazon EC2) para um arquivo CSV.

Ao usar o script Python de exemplo fornecido, você pode reduzir o tempo necessário para revisar e categorizar suas EC2 instâncias da Amazon por tags específicas. Por exemplo, você pode usar o script para identificar e categorizar rapidamente uma lista de instâncias que sua equipe de segurança sinalizou para atualizações de software.

## Pré-requisitos e limitações
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-prereqs"></a>

**Pré-requisitos **
+ Python 3 instalado e configurado
+ AWS Command Line Interface (AWS CLI) instalado e configurado

**Limitações**

O exemplo de script Python fornecido nesse padrão pode pesquisar EC2 instâncias da Amazon com base somente nos seguintes atributos:
+ Instância IDs
+  IPv4 Endereços privados
+  IPv4 Endereços públicos

## Ferramentas
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-tools"></a>
+ O [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.
+ O [virtualenv](https://virtualenv.pypa.io/en/latest/) ajuda você a criar ambientes do Python isolados.
+ A [‭AWS Command Line Interface (AWS CLI)‭](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.

**Repositório de código**

O script Python de exemplo para esse padrão está disponível no repositório GitHub [search-ec2](https://github.com/aws-samples/search-ec2-instances-export-tags) -. instances-export-tags

## Épicos
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-epics"></a>

### Instalar e configurar os pré-requisitos
<a name="install-and-configure-the-prerequisites"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o GitHub repositório. | Caso ocorram erros ao executar comandos da AWS CLI, [certifique-se de que você está usando a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html).Clone o instances-export-tags repositório GitHub [search-ec2-](https://github.com/aws-samples/search-ec2-instances-export-tags) executando o seguinte comando Git em uma janela de terminal:<pre>git clone https://github.com/aws-samples/search-ec2-instances-export-tags.git</pre> | DevOps engenheiro | 
| Instale e ative o virtualenv. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.html)Para obter mais informações, consulte o [Guia do usuário do virtualenv](https://virtualenv.pypa.io/en/latest/user_guide.html). | DevOps engenheiro | 
| Instale as dependências. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.html) | DevOps engenheiro | 
| Configure um perfil nomeado da AWS.  | Se ainda não o fez, configure um perfil nomeado da AWS que inclua as credenciais necessárias para executar o script. Para criar um perfil nomeado, execute o comando [configurar a AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods).Para obter mais informações, consulte [Uso de perfis nomeados](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) na documentação da AWS CLI. | DevOps engenheiro | 

### Configure e execute o script do Python
<a name="configure-and-run-the-python-script"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o arquivo de entrada. | Crie um arquivo de entrada que contenha uma lista das EC2 instâncias da Amazon para as quais você deseja que o script pesquise e exporte tags. Você pode listar instâncias IDs, IPv4 endereços privados ou IPv4 endereços públicos.Certifique-se de que cada EC2 instância da Amazon esteja listada em sua própria linha no arquivo de entrada.**Exemplo de arquivo de entrada**<pre>1    i-0547c351bdfe85b9f<br />2    54.157.194.156<br />3    172.31.85.33<br />4    54.165.198.144<br />5    i-0b6223b5914111a4b<br />6    172.31.85.44<br />7    54.165.198.145<br />8    172.31.80.219<br />9    172.31.94.199</pre> | DevOps engenheiro | 
| Execute o script em Python . | Execute o script executando o comando a seguir no terminal:<pre>python search_instances.py -i INPUTFILE -o OUTPUTFILE -r REGION [-p PROFILE]</pre>Substitua `INPUTFILE` pelo nome do arquivo de entrada. Substitua `OUTPUTFILE` pelo nome que você deseja dar ao arquivo de saída CSV. `REGION`Substitua pela região da AWS em que seus EC2 recursos da Amazon estão. Se você estiver usando um perfil nomeado da AWS, substitua `PROFILE` pelo perfil nomeado que você está usando.Para obter uma lista com os parâmetros compatíveis e a descrição deles, execute o comando a seguir:<pre>python search_instances.py -h</pre>Para obter mais informações e ver um exemplo de arquivo de saída, consulte o `README.md` arquivo no repositório GitHub [search-ec2-](https://github.com/aws-samples/search-ec2-instances-export-tags). instances-export-tags | DevOps engenheiro | 

## Recursos relacionados
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-resources"></a>
+ [Configuração da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) (*Guia do usuário da AWS CLI*)

# Gere um CloudFormation modelo da AWS contendo regras gerenciadas do AWS Config usando o Troposphere
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere"></a>

*Lucas Nation e Freddie Wilson, Amazon Web Services*

## Resumo
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-summary"></a>

Muitas organizações usam [regras gerenciadas do AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) para avaliar a conformidade de seus recursos da Amazon Web Services (AWS) em relação às melhores práticas em geral. No entanto, a manutenção dessas regras pode ser demorada e esse padrão ajuda você a aproveitar a [Troposphere](https://troposphere.readthedocs.io/en/latest/quick_start.html), uma biblioteca Python, para gerar e gerenciar regras gerenciadas do AWS Config.

O padrão ajuda você a gerenciar suas regras gerenciadas do AWS Config usando um script Python para converter uma planilha do Microsoft Excel contendo regras gerenciadas da AWS em um modelo da AWS. CloudFormation O Troposphere atua como infraestrutura como código (IaC) e isso significa que você pode atualizar a planilha do Excel com regras gerenciadas, em vez de usar um arquivo no formato JSON ou YAML. Em seguida, você usa o modelo para iniciar uma CloudFormation pilha da AWS que cria e atualiza as regras gerenciadas na sua conta da AWS.

O CloudFormation modelo da AWS define cada regra gerenciada do AWS Config usando a planilha do Excel e ajuda você a evitar a criação manual de regras individuais no AWS Management Console. *O script padroniza os parâmetros de cada regra gerenciada para um dicionário vazio e os `ComplianceResourceTypes` padrões do escopo são de. `THE_RULE_IDENTIFIER.template file`* Para obter mais informações sobre o identificador da regra, consulte [Criação de regras gerenciadas do AWS Config com CloudFormation modelos da AWS na documentação](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html) do AWS Config.

## Pré-requisitos e limitações
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Familiaridade com o uso de CloudFormation modelos da AWS para criar regras gerenciadas do AWS Config. Para obter mais informações sobre isso, consulte [Criação de regras gerenciadas do AWS Config com CloudFormation modelos da AWS na documentação](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html) do AWS Config.  
+ Python 3 instalado e configurado. Para obter mais informações sobre isso, consulte a [documentação do Python](https://www.python.org/).
+ Um ambiente de desenvolvimento integrado (IDE) já existente.  
+ Identifique suas unidades organizacionais (OUs) em uma coluna na amostra de planilha `excel_config_rules.xlsx` do Excel (anexada).

## Épicos
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-epics"></a>

### Personalize e configure as regras gerenciadas do AWS Config
<a name="customize-and-configure-the-aws-config-managed-rules"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize o exemplo da planilha do Excel. | Faça o download do exemplo da planilha `excel_config_rules.xlsx` do Excel (anexada) e identifique como as regras gerenciadas `Implemented` do AWS Config que você deseja usar. As regras marcadas como `Implemented` serão adicionadas ao CloudFormation modelo da AWS. | Desenvolvedor | 
| (Opcional) Atualize o arquivo config\$1rules\$1params.json com os parâmetros de regra do AWS Config. | Algumas regras gerenciadas do AWS Config exigem parâmetros e devem ser passadas para o script Python como um arquivo JSON usando a opção `--param-file`. Por exemplo, a regra `access-keys-rotated` gerenciada usa o seguinte parâmetro `maxAccessKeyAge`:<pre>{<br />         "access-keys-rotated": {<br />             "InputParameters": {<br />                 "maxAccessKeyAge": 90<br />             }<br />         }<br />     }</pre>Neste parâmetro de exemplo, o `maxAccessKeyAge` é definido para 90 dias. O script lê o arquivo de parâmetros e adiciona qualquer `InputParameters` encontrado. | Desenvolvedor | 
| (Opcional) Atualize o arquivo config\$1rules\$1params.json com o AWS Config. ComplianceResourceTypes | Por padrão, o script Python recupera `ComplianceResourceTypes` a partir dos modelos definidos pela AWS. Se você quiser substituir o escopo de uma regra gerenciada específica do AWS Config, precisará passá-la para o script Python como um arquivo JSON usando a opção `--param-file`.Por exemplo, o código de exemplo a seguir mostra como o `ComplianceResourceTypes` para `ec2-volume-inuse-check` é definido na lista `["AWS::EC2::Volume"]`:<pre>{<br />         "ec2-volume-inuse-check": {<br />             "Scope": {<br />                 "ComplianceResourceTypes": [<br />                     "AWS::EC2::Volume"<br />                 ]<br />             }<br />         }<br />     }</pre> | Desenvolvedor | 

### Execute o script do Python
<a name="run-the-python-script"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale os pacotes pip do arquivo requirements.txt.  | Baixe o arquivo `requirements.txt` (anexado) e execute o seguinte comando em seu IDE para instalar os pacotes Python:`pip3 install -r requirements.txt` | Desenvolvedor | 
| Execute o script em Python .  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html)Você também pode adicionar os seguintes parâmetros opcionais:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | Desenvolvedor | 

### Implantar as regras gerenciadas do AWS Config
<a name="deploy-the-aws-config-managed-rules"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o AWS CloudFormation stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | Desenvolvedor | 

## Anexos
<a name="attachments-07c1cfff-fc9e-4a1f-bd36-48f025808bd8"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/07c1cfff-fc9e-4a1f-bd36-48f025808bd8/attachments/attachment.zip)

# Conceda às instâncias do SageMaker notebook acesso temporário a um CodeCommit repositório em outra conta da AWS
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account"></a>

*Helge Aufderheide, Amazon Web Services*

## Resumo
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-summary"></a>

Esse padrão mostra como conceder aos usuários e instâncias de SageMaker notebooks da Amazon acesso temporário a um CodeCommit repositório da AWS que está em outra conta da AWS. Esse padrão também mostra como você pode conceder permissões granulares para ações específicas que cada entidade pode realizar em cada repositório.

As organizações geralmente armazenam CodeCommit repositórios em uma conta da AWS diferente da conta que hospeda seu ambiente de desenvolvimento. Essa configuração de várias contas ajuda a controlar o acesso aos repositórios e reduz o risco de sua exclusão acidental. Para conceder essas permissões entre contas, é uma melhor prática usar perfis do Identity and Access Management (IAM) da AWS. Em seguida, identidades predefinidas do IAM em cada conta da AWS podem assumir temporariamente as funções para criar uma cadeia de confiança controlada em todas as contas.

**nota**  
Você pode aplicar um procedimento semelhante para conceder acesso entre contas a outras identidades do IAM a um CodeCommit repositório. Para obter mais informações, consulte [Configurar o acesso entre contas a um CodeCommit repositório da AWS usando funções no Guia CodeCommit ](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) *do usuário da AWS*.

## Pré-requisitos e limitações
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da AWS com um CodeCommit repositório (*conta A*)
+ Uma segunda conta ativa da AWS com uma instância de SageMaker notebook (*conta B*)
+ Um usuário da AWS com permissões suficientes para criar e modificar perfis do IAM na conta A
+ Um segundo usuário da AWS com permissões suficientes para criar e modificar perfis do IAM na conta B

## Arquitetura
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-architecture"></a>

O diagrama a seguir mostra um exemplo de fluxo de trabalho para conceder acesso cruzado a um repositório a uma instância de SageMaker notebook e aos usuários em uma CodeCommit conta da AWS:

![\[Fluxo de trabalho para acesso entre contas ao CodeCommit\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/54d0fdb3-6d25-4433-9f67-c87846633d61/images/97a799af-ce88-4495-a61c-d0cd22493ce2.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. A função de usuário da AWS e a função de instância do SageMaker notebook na conta B assumem um [perfil nomeado](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles).

1. A política de permissões do perfil nomeado especifica uma função de CodeCommit acesso na conta A que o perfil então assume.

1. A política de confiança da função de CodeCommit acesso na conta A permite que o perfil nomeado na conta B assuma a função de CodeCommit acesso.

1. A política de permissões do IAM do CodeCommit repositório na conta A permite que a função de CodeCommit acesso acesse o CodeCommit repositório.

**Pilha de tecnologia**
+ CodeCommit
+ Git
+ IAM
+ pip
+ SageMaker

## Ferramentas
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-tools"></a>
+  CodeCommitA [AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
+ O [Git](https://git-scm.com/) é um sistema distribuído de controle de versões para rastrear alterações no código-fonte durante o desenvolvimento do software.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)é um utilitário que ajuda você a enviar e extrair código de CodeCommit repositórios estendendo o Git.
+ [pip](https://pypi.org/project/pip/) é o instalador de pacotes para Python. Você pode usar o pip para instalar pacotes do Python Package Index e outros índices.

## Práticas recomendadas
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-best-practices"></a>

Ao definir permissões com as políticas do IAM, certifique-se de conceder apenas as permissões necessárias para executar uma tarefa. Para obter mais informações, consulte [Aplicar permissões de privilégios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) na documentação do IAM.

Ao implementar esse padrão, certifique-se de fazer o seguinte:
+ Confirme se os princípios do IAM têm somente as permissões necessárias para realizar ações específicas e necessárias em cada repositório. Por exemplo, é recomendável permitir que os princípios aprovados do IAM enviem e mesclem alterações em ramificações específicas do repositório, mas somente solicitem mesclagens em ramificações protegidas. 
+ Confirme se os princípios do IAM recebem diferentes perfis do IAM com base em suas respectivas funções e responsabilidades em cada projeto. Por exemplo, um desenvolvedor terá permissões de acesso diferentes das de um gerente de lançamento ou administrador da AWS. 

## Épicos
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-epics"></a>

### Configurar o perfil do IAM
<a name="configure-the-iam-roles"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure a função de CodeCommit acesso e a política de permissões. | Para automatizar o processo de configuração manual documentado neste épico,**** você pode usar um [ CloudFormation modelo da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).Na conta que contém o CodeCommit repositório (*conta A*), faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Antes de migrar esta configuração para o ambiente de produção, é uma prática recomendada criar sua própria política do IAM voltada para a concessão de [permissões com o princípio de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Para obter mais informações, consulte a seção **Informações adicionais** desse padrão. | AWS geral, AWS DevOps | 
| Conceda à função da instância do SageMaker notebook na conta B permissões para assumir a função de CodeCommit acesso na conta A. | Na conta que contém a função IAM da instância do SageMaker notebook (*conta B),* faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Para ver o Amazon Resource Name (ARN) do seu repositório, [consulte CodeCommit Exibir detalhes do repositório](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-view-repository-details.html) no Guia do usuário da *AWS CodeCommit *. | AWS geral, AWS DevOps | 

### Configure sua instância do SageMaker notebook na conta B
<a name="set-up-your-sagemaker-notebook-instance-in-account-b"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure um perfil de usuário na instância do SageMaker notebook da AWS para assumir a função na conta A.  | [Certifique-se de que você tem a versão mais recente da AWS Command Line Interface (AWS CLI) instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).Na conta que contém a instância do SageMaker notebook (*conta B),* faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)<pre>------.aws/config--------------<br />[profile remoterepouser]<br />role_arn = arn:aws:iam::<ID of Account A>:role/<rolename><br />role_session_name = remoteaccesssession<br />region = eu-west-1<br />credential_source  = Ec2InstanceMetadata<br />----------------------------------</pre> | AWS geral, AWS DevOps | 
| Instale o utilitário git-remote-codecommit. | Siga as instruções na [Etapa 2: Instalação git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install) no *Guia do CodeCommit usuário da AWS*. | Cientista de dados | 

### Acesse o repositório
<a name="access-the-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Acesse o CodeCommit repositório usando os comandos Git ou. SageMaker | **Para usar Git**Os diretores do IAM que assumem a função da instância do SageMaker notebook na conta B agora podem executar comandos Git para acessar CodeCommit o repositório na conta A. Por exemplo, os usuários podem executar comandos `git clone` como`git pull`, e. `git push`Para obter instruções, consulte [Conecte-se a um CodeCommit repositório da AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) no *Guia do CodeCommit usuário da AWS*.Para obter informações sobre como usar o Git com CodeCommit, consulte [Introdução à AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started-cc.html) no Guia * CodeCommit do usuário da AWS*.**Para usar SageMaker**Para usar o Git a partir do SageMaker console, você deve permitir que o Git recupere as credenciais do seu repositório. CodeCommit Para obter instruções, consulte [Associar um CodeCommit repositório em uma conta diferente da AWS a uma instância de notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-cross.html) na SageMaker documentação. | Git, console bash | 

## Recursos relacionados
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-resources"></a>
+ [Configure o acesso entre contas a um CodeCommit repositório da AWS usando funções (documentação](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) da AWS CodeCommit )
+ [Tutorial do IAM: Delegar acesso entre contas da AWS usando perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) (documentação do IAM)

## Mais informações
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-additional"></a>

**Restringindo CodeCommit permissões para ações específicas**

Para restringir as ações que um diretor do IAM pode realizar no CodeCommit repositório, modifique as ações que são permitidas na política de CodeCommit acesso.

Para obter mais informações sobre operações de CodeCommit API, consulte a [referência de CodeCommit permissões](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-permissions-reference.html) no *Guia CodeCommit do usuário da AWS*.

**nota**  
Você também pode editar a política gerenciada [AWSCodeCommitPowerUser](https://docs.aws.amazon.com/codecommit/latest/userguide/security-iam-awsmanpol.html#managed-policies-poweruser)da AWS de acordo com seu caso de uso.

**Restringindo CodeCommit permissões para repositórios específicos**

Para criar um ambiente multilocatário em que mais de um repositório de código possa ser acessado somente por usuários específicos, faça o seguinte:

1. Crie várias funções de CodeCommit acesso na conta A. Em seguida, configure a política de confiança de cada função de acesso para permitir que usuários específicos na conta B assumam a função.

1. Restrinja quais repositórios de código cada função pode assumir adicionando uma condição de **“Recurso”** à política de cada função de CodeCommit acesso.

**Exemplo de condição de “Recurso” que restringe o acesso de um diretor do IAM a um repositório específico CodeCommit **

```
"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]
```

**nota**  
Para facilitar a identificação e a diferenciação de múltiplos repositórios de código na mesma conta da AWS, é possível atribuir prefixos distintos aos nomes dos repositórios. Por exemplo, você pode nomear repositórios de código com prefixos que se alinham a diferentes grupos de desenvolvedores, como **myproject-subproject1-repo1** e **myproject-subproject2-repo1**. Em seguida, você pode criar um perfil do IAM para cada grupo de desenvolvedores com base nos prefixos atribuídos. **Por exemplo, você pode criar um perfil chamado **myproject-subproject1-repoaccess e conceder a ele acesso a todos os repositórios** de código que incluem o prefixo myproject-subproject1.**

**Exemplo da condição “Recurso” que faz referência a um ARN de repositório de código que inclui um prefixo específico**

```
"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*
```

# Implemente uma estratégia GitHub de ramificação do Flow para ambientes com várias contas DevOps
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens e Abhilash Vinod, Amazon Web Services*

## Resumo
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-summary"></a>

Ao gerenciar um repositório de código-fonte, diferentes estratégias de ramificação influenciam os processos de desenvolvimento e de liberação de software empregados pelas equipes de desenvolvimento. Exemplos de estratégias comuns de ramificação incluem Trunk, GitHub Flow e Gitflow. Essas estratégias usam diferentes ramificações, e as atividades realizadas em cada ambiente são distintas. As organizações que estão implementando DevOps processos se beneficiariam de um guia visual para ajudá-las a entender as diferenças entre essas estratégias de ramificação. A utilização deste material visual na sua organização auxilia as equipes de desenvolvimento a coordenar as atividades e cumprir os padrões organizacionais. Esse padrão fornece esse visual e descreve o processo de implementação de uma estratégia de ramificação do GitHub Flow em sua organização.

Esse padrão faz parte de uma série de documentação sobre como escolher e implementar estratégias de DevOps ramificação para organizações com várias Contas da AWS. Esta série foi criada para ajudar você a aplicar a estratégia correta e as melhores práticas desde o início, a fim de otimizar sua experiência na nuvem. GitHub O fluxo é apenas uma estratégia de ramificação possível que sua organização pode usar. Esta série de documentação também aborda os modelos de ramificação [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) e [Gitflow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html). Se você ainda não fez isso, recomendamos que você analise [Como escolher uma estratégia de ramificação do Git para DevOps ambientes com várias contas](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) antes de implementar a orientação desse padrão. É importante usar a diligência prévia para escolher a estratégia de ramificação mais adequada para a organização.

Este guia fornece um diagrama que mostra como uma organização pode implementar a estratégia GitHub de fluxo. É recomendável que você revise o [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance para analisar as melhores práticas. Esse padrão inclui tarefas, etapas e restrições recomendadas para cada etapa do DevOps processo.

## Pré-requisitos e limitações
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Pré-requisitos **
+ Git, [instalado](https://git-scm.com/downloads). Ele é usado como ferramenta de repositório para o código-fonte.
+ Draw.io, [instalado](https://github.com/jgraph/drawio-desktop/releases). Esta aplicação é usada para visualizar e editar o diagrama.

## Arquitetura
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Arquitetura de destino**

O diagrama apresentado a seguir pode ser usado de forma semelhante a um [Quadro de Punnett](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia). Você alinha as ramificações no eixo vertical com os AWS ambientes no eixo horizontal para determinar quais ações realizar em cada cenário. Os números representam a sequência das atividades no fluxo de trabalho. Neste exemplo, você acompanha o caminho de uma ramificação `feature` até a implantação em um ambiente de produção.

![\[Quadrado de Punnett das atividades do GitHub Flow em cada filial e ambiente.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/780a5bce-3cd2-4092-8537-b7a77c3d6b8d/images/8a2a774a-cd85-466e-838e-a9a1f3b58a63.png)


Para obter mais informações sobre ambientes e ramificações em uma abordagem de GitHub fluxo, consulte [Escolhendo uma estratégia de ramificação do Git para](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach) ambientes com várias contas. Contas da AWS DevOps 

**Automação e escala**

A integração contínua e a entrega contínua (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDpipelines) também fornecem governança e barreiras para as equipes de desenvolvimento, impondo consistência, padrões, melhores práticas e níveis mínimos de aceitação para aceitação e implantação de recursos. Para obter mais informações, consulte [Praticando a integração contínua e a entrega contínua em AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

AWS oferece um conjunto de serviços para desenvolvedores projetados para ajudá-lo a criar CI/CD pipelines. Por exemplo, [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)é um serviço de entrega contínua totalmente gerenciado que ajuda você a automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e infraestrutura. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)compila o código-fonte, executa testes e produz pacotes ready-to-deploy de software. Para obter mais informações, consulte [Ferramentas do desenvolvedor em AWS](https://aws.amazon.com/products/developer-tools/).

## Ferramentas
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS serviços e ferramentas**

AWS fornece um conjunto de serviços para desenvolvedores que você pode usar para implementar esse padrão:
+ O [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) é um serviço gerenciado e altamente escalável de repositório de artefatos, que facilita o armazenamento e o compartilhamento de pacotes de software para o desenvolvimento de aplicações.
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatiza implantações no Amazon Elastic Compute Cloud (Amazon EC2) ou em instâncias AWS Lambda , funções ou serviços do Amazon Elastic Container Service (Amazon ECS) no local.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.

**Outras ferramentas**
+ O [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) é uma aplicação voltada para a criação de fluxogramas e diagramas. O repositório de código contém modelos no formato .drawio para o Draw.io.
+ O [Figma](https://www.figma.com/design-overview/) é uma ferramenta de design on-line voltada para a colaboração. O repositório de código contém modelos no formato .fig para o Figma.

**Repositório de código**

Esse arquivo fonte para o diagrama nesse padrão está disponível no repositório GitHub [Git Branching Strategy for GitHub ](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/github-flow) Flow. Estão incluídos arquivos nos formatos PNG, draw.io e Figma. É possível modificar esses diagramas para adequação aos processos da sua organização.

## Práticas recomendadas
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Siga as melhores práticas e recomendações em [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance e Choosing a [Git branching](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) strategy para ambientes com várias contas. DevOps Isso ajuda você a implementar com eficiência o desenvolvimento GitHub baseado em Flow, promover a colaboração, melhorar a qualidade do código e simplificar o processo de desenvolvimento.

## Épicos
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Analisando os fluxos de trabalho do GitHub Flow
<a name="reviewing-the-github-flow-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Revise o processo GitHub de fluxo padrão. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) | DevOps engenheiro | 
| Revise o processo de correção de bugs do GitHub Flow. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) | DevOps engenheiro | 
| Revise o processo de hotfix GitHub Flow. | GitHub O Flow foi projetado para permitir a entrega contínua, em que as alterações de código são implantadas com frequência e confiabilidade em ambientes superiores. O ponto principal é que cada ramificação `feature` pode ser implantada a qualquer momento.As ramificações `Hotfix`, que são semelhantes às ramificações `feature` ou `bugfix`, podem seguir o mesmo procedimento que qualquer uma dessas outras ramificações. No entanto, devido à sua urgência, as correções urgentes geralmente recebem maior prioridade. Dependendo das políticas da equipe e da urgência da situação, determinadas etapas do processo podem ser agilizadas. Por exemplo, as revisões de código para correções urgentes podem receber prioridade e ser concluídas rapidamente. Assim, embora o processo de correção urgente ocorra de forma semelhante ao processo destinado aos recursos ou às correções de bugs, a urgência envolvida pode justificar adaptações no cumprimento dos procedimentos. É fundamental estabelecer diretrizes sobre o gerenciamento de correções urgentes para garantir que elas sejam tratadas com eficiência e segurança. | DevOps engenheiro | 

## Solução de problemas
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Conflitos em ramificações | Um problema comum que pode ocorrer com o modelo GitHub Flow é quando um hotfix precisa ocorrer na produção, mas uma alteração correspondente precisa ocorrer em uma `feature` `hotfix` ramificação ou ramificação em que os mesmos recursos estão sendo modificados. `bugfix` Recomendamos que você faça a mesclagem das alterações da ramificação `main` para as ramificações menos avançadas com frequência, a fim de evitar conflitos significativos ao mesclar de volta para a ramificação `main`. | 
| Nível de maturidade da equipe | GitHub O Flow incentiva implantações diárias em ambientes superiores, adotando a verdadeira integração contínua e entrega contínua (CI/CD). É indispensável que a equipe conte com maturidade técnica suficiente para desenvolver recursos e criar testes de automação para eles. A equipe precisa conduzir uma análise detalhada da solicitação de mesclagem antes que as alterações sejam aprovadas. Isso promove uma cultura técnica voltada à engenharia, que é robusta e valoriza a qualidade, a responsabilidade e a eficiência no processo de desenvolvimento. | 

## Recursos relacionados
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-resources"></a>

Este guia não inclui treinamento em Git. No entanto, existem muitos recursos de alta qualidade disponíveis na internet, caso você precise realizar esse treinamento. Recomendamos que você comece pelo site de [documentação do Git](https://git-scm.com/doc).

Os recursos a seguir podem ajudá-lo em sua jornada de ramificação do GitHub Flow no Nuvem AWS.

**AWS DevOps orientação**
+ [AWS DevOps Orientação](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Arquitetura de referência do pipeline de implantação](https://pipelines.devops.aws.dev/)
+ [O que DevOps é](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps recursos](https://aws.amazon.com/devops/resources/)

**GitHub Orientação de fluxo**
+ [GitHub Tutorial de início rápido do Flow](https://docs.github.com/en/get-started/using-github/github-flow) () GitHub
+ [Por que GitHub Flow?](https://githubflow.github.io/)

**Outros recursos**
+ [Twelve-factor app methodology](https://12factor.net/) (12factor.net)

# Implemente uma estratégia de ramificação do Gitflow para ambientes com várias contas DevOps
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens, Stephen DiCato, Abhilash Vinod e Tim Wondergem, da Amazon Web Services*

## Resumo
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-summary"></a>

Ao gerenciar um repositório de código-fonte, diferentes estratégias de ramificação influenciam os processos de desenvolvimento e de liberação de software empregados pelas equipes de desenvolvimento. Exemplos de estratégias comuns de ramificação incluem Trunk, Gitflow e Flow. GitHub Essas estratégias usam diferentes ramificações, e as atividades realizadas em cada ambiente são distintas. As organizações que estão implementando DevOps processos se beneficiariam de um guia visual para ajudá-las a entender as diferenças entre essas estratégias de ramificação. A utilização deste material visual na sua organização auxilia as equipes de desenvolvimento a coordenar as atividades e cumprir os padrões organizacionais. O presente padrão fornece este material visual e descreve o processo de implementação da estratégia de ramificação do Gitflow em sua organização.

Esse padrão faz parte de uma série de documentação sobre como escolher e implementar estratégias de DevOps ramificação para organizações com várias Contas da AWS. A série foi desenvolvida para orientar você na aplicação da estratégia adequada e das práticas recomendadas desde o início, simplificando sua experiência na nuvem. O Gitflow é apenas uma das possíveis estratégias de ramificação que sua organização pode utilizar. Esta série de documentação também aborda os modelos de ramificação [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) e [GitHub Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html). Se você ainda não fez isso, recomendamos que você analise [Como escolher uma estratégia de ramificação do Git para DevOps ambientes com várias contas](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) antes de implementar a orientação desse padrão. É importante usar a diligência prévia para escolher a estratégia de ramificação mais adequada para a organização.

Este guia fornece um diagrama que ilustra como uma organização poderia implementar a estratégia do Gitflow. É recomendável que você revise o [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance para analisar as melhores práticas. Esse padrão inclui tarefas, etapas e restrições recomendadas para cada etapa do DevOps processo.

## Pré-requisitos e limitações
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Pré-requisitos **
+ Git, [instalado](https://git-scm.com/downloads). Ele é usado como ferramenta de repositório para o código-fonte.
+ Draw.io, [instalado](https://github.com/jgraph/drawio-desktop/releases). Esta aplicação é usada para visualizar e editar o diagrama.
+ (Opcional) Plug-in do Gitflow, [instalado](https://github.com/nvie/gitflow).

## Arquitetura
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Arquitetura de destino**

O diagrama apresentado a seguir pode ser usado de forma semelhante a um [Quadro de Punnett](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia). Você alinha as ramificações no eixo vertical com os AWS ambientes no eixo horizontal para determinar quais ações realizar em cada cenário. Os números representam a sequência das atividades no fluxo de trabalho. Neste exemplo, você acompanha o caminho de uma ramificação de recurso até a implantação em um ambiente de produção.

![\[Quadro de Punnett das atividades do Gitflow em cada ramificação e ambiente.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/1dee2a06-cc54-4797-b9a9-78b6685edd33/images/d8be49bf-dca1-4892-ac4c-11996a7258c2.png)


Para obter mais informações sobre ambientes e ramificações em uma abordagem do Contas da AWS Gitflow, consulte [Escolhendo uma estratégia de ramificação do Git](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) para ambientes com várias contas. DevOps 

**Automação e escala**

A integração contínua e a entrega contínua (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDpipelines) também fornecem governança e barreiras para as equipes de desenvolvimento, impondo consistência, padrões, melhores práticas e níveis mínimos de aceitação para aceitação e implantação de recursos. Para obter mais informações, consulte [Praticando a integração contínua e a entrega contínua em AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

AWS oferece um conjunto de serviços para desenvolvedores projetados para ajudá-lo a criar CI/CD pipelines. Por exemplo, [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)é um serviço de entrega contínua totalmente gerenciado que ajuda você a automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e infraestrutura. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)compila o código-fonte, executa testes e produz pacotes ready-to-deploy de software. Para obter mais informações, consulte [Ferramentas do desenvolvedor em AWS](https://aws.amazon.com/products/developer-tools/).

## Ferramentas
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS serviços e ferramentas**

AWS fornece um conjunto de serviços para desenvolvedores que você pode usar para implementar esse padrão:
+ O [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) é um serviço gerenciado e altamente escalável de repositório de artefatos, que facilita o armazenamento e o compartilhamento de pacotes de software para o desenvolvimento de aplicações.
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatiza implantações no Amazon Elastic Compute Cloud (Amazon EC2) ou em instâncias AWS Lambda , funções ou serviços do Amazon Elastic Container Service (Amazon ECS) no local.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.

**Outras ferramentas**
+ O [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) é uma aplicação voltada para a criação de fluxogramas e diagramas. O repositório de código contém modelos no formato .drawio para o Draw.io.
+ O [Figma](https://www.figma.com/design-overview/) é uma ferramenta de design on-line voltada para a colaboração. O repositório de código contém modelos no formato .fig para o Figma.
+ (Opcional) O [plug-in do Gitflow](https://github.com/nvie/gitflow) consiste em um conjunto de extensões do Git que disponibilizam operações avançadas de repositório para o modelo de ramificação do Gitflow.

**Repositório de código**

Esse arquivo fonte para o diagrama nesse padrão está disponível na [Estratégia de ramificação do GitHub Git](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/gitflow) para repositório. GitFlow Estão incluídos arquivos nos formatos PNG, draw.io e Figma. É possível modificar esses diagramas para adequação aos processos da sua organização.

## Práticas recomendadas
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Siga as melhores práticas e recomendações em [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance e Choosing a [Git branching](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) strategy para ambientes com várias contas. DevOps Esses recursos auxiliam na implementação eficiente do desenvolvimento baseado em Gitflow, incentivam a colaboração, aumentam a qualidade do código e agilizam o processo de desenvolvimento.

## Épicos
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Análise dos fluxos de trabalho do Gitflow
<a name="reviewing-the-gitflow-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Analise o processo padrão do Gitflow. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps engenheiro | 
| Analise o processo do Gitflow para correções urgentes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps engenheiro | 
| Analise o processo do Gitflow para correções de bugs. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps engenheiro | 

## Solução de problemas
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Conflitos em ramificações | Um problema comum que pode ocorrer com o modelo do Gitflow é quando uma correção urgente precisa ser aplicada em um ambiente de produção, mas é necessário realizar uma alteração correspondente em um ambiente menos avançado, no qual outra ramificação está modificando os mesmos recursos. Recomendamos que você tenha apenas uma ramificação de liberação ativa por vez. Se você tiver mais de uma ramificação ativa ao mesmo tempo, as alterações nos ambientes podem entrar em conflito, impedindo que uma ramificação seja transferida para a produção. | 
| Mesclar | As liberações devem ser mescladas de volta nas ramificações principal e de desenvolvimento o quanto antes, para consolidar o trabalho nas ramificações primárias. | 
| Mesclagem por compressão | Use a mesclagem por compressão apenas ao mesclar de uma ramificação `feature` para uma ramificação `develop`. Usar mesclagens por compressão em ramificações avançadas dificulta a mesclagem das alterações de volta para as ramificações menos avançadas. | 

## Recursos relacionados
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-resources"></a>

Este guia não inclui treinamento em Git. No entanto, existem muitos recursos de alta qualidade disponíveis na internet, caso você precise realizar esse treinamento. Recomendamos que você comece pelo site de [documentação do Git](https://git-scm.com/doc).

Os recursos apresentados a seguir podem ajudar você na jornada de implementação de ramificações do Gitflow na Nuvem AWS.

**AWS DevOps orientação**
+ [AWS DevOps Orientação](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Arquitetura de referência do pipeline de implantação](https://pipelines.devops.aws.dev/)
+ [O que DevOps é](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps recursos](https://aws.amazon.com/devops/resources/)

**Orientações para o Gitflow**
+ [O blog original do Gitflow](https://nvie.com/posts/a-successful-git-branching-model/) (publicação do blog do Vincent Driessen)
+ [Gitflow workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) (Atlassian)
+ [Gitflow ativado GitHub: Como usar fluxos de trabalho do Git Flow com GitHub ](https://youtu.be/WQuxeEvaCxs) repositórios baseados (vídeo) YouTube 
+ [Exemplo de Git Flow Init](https://www.youtube.com/watch?v=d4cDLBFbekw) (vídeo) YouTube 
+ [A ramificação de lançamento do Gitflow do início ao fim (vídeo](https://www.youtube.com/watch?v=rX80eKPdA28)) YouTube 

**Outros recursos**

[Twelve-factor app methodology](https://12factor.net/) (12factor.net)

# Implemente uma estratégia de ramificação de troncos para ambientes com várias contas DevOps
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens e Rayjan Wilson, Amazon Web Services*

## Resumo
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-summary"></a>

Ao gerenciar um repositório de código-fonte, diferentes estratégias de ramificação influenciam os processos de desenvolvimento e de liberação de software empregados pelas equipes de desenvolvimento. Exemplos de estratégias comuns de ramificação incluem Trunk, GitHub Flow e Gitflow. Essas estratégias usam diferentes ramificações, e as atividades realizadas em cada ambiente são distintas. As organizações que estão implementando DevOps processos se beneficiariam de um guia visual para ajudá-las a entender as diferenças entre essas estratégias de ramificação. A utilização deste material visual na sua organização auxilia as equipes de desenvolvimento a coordenar as atividades e cumprir os padrões organizacionais. O presente padrão fornece este material visual e descreve o processo de implementação da estratégia de ramificação do Trunk em sua organização.

Esse padrão faz parte de uma série de documentação sobre como escolher e implementar estratégias de DevOps ramificação para organizações com várias Contas da AWS. A série foi desenvolvida para orientar você na aplicação da estratégia adequada e das práticas recomendadas desde o início, simplificando sua experiência na nuvem. O Trunk é apenas uma das possíveis estratégias de ramificação que sua organização pode utilizar. Esta série de documentação também aborda os modelos de ramificação do [GitHub Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) e do [Gitflow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html). Se você ainda não fez isso, recomendamos que você analise [Como escolher uma estratégia de ramificação do Git para DevOps ambientes com várias contas](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) antes de implementar a orientação desse padrão. É importante usar a diligência prévia para escolher a estratégia de ramificação mais adequada para a organização.

Este guia fornece um diagrama que ilustra como uma organização poderia implementar a estratégia do Trunk. É recomendável que você revise o [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance oficial para analisar as melhores práticas. Esse padrão inclui tarefas, etapas e restrições recomendadas para cada etapa do DevOps processo.

## Pré-requisitos e limitações
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Pré-requisitos **
+ Git, [instalado](https://git-scm.com/downloads). Ele é usado como ferramenta de repositório para o código-fonte.
+ Draw.io, [instalado](https://github.com/jgraph/drawio-desktop/releases). Esta aplicação é usada para visualizar e editar o diagrama.

## Arquitetura
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Arquitetura de destino**

O diagrama apresentado a seguir pode ser usado de forma semelhante a um [Quadro de Punnett](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia). Você alinha as ramificações no eixo vertical com os AWS ambientes no eixo horizontal para determinar quais ações realizar em cada cenário. Os números representam a sequência das atividades no fluxo de trabalho. Neste exemplo, você acompanha o caminho de uma ramificação `feature` até a implantação em um ambiente de produção.

![\[Quadro de Punnett das atividades do Trunk em cada ramificação e ambiente\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/5df23e4d-84fe-4ab3-a54f-96b6406abc57/images/ad549ef4-90ad-47c1-bd01-f21d6ce5511a.png)


Para obter mais informações sobre ambientes e ramificações em uma abordagem de tronco, consulte [Escolhendo uma estratégia de ramificação do Git para](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach) ambientes com várias contas. Contas da AWS DevOps 

**Automação e escala**

A integração contínua e a entrega contínua (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDpipelines) também fornecem governança e barreiras para as equipes de desenvolvimento, impondo consistência, padrões, melhores práticas e níveis mínimos de aceitação para aceitação e implantação de recursos. Para obter mais informações, consulte [Praticando a integração contínua e a entrega contínua em AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

AWS oferece um conjunto de serviços para desenvolvedores projetados para ajudá-lo a criar CI/CD pipelines. Por exemplo, [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)é um serviço de entrega contínua totalmente gerenciado que ajuda você a automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e infraestrutura. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)compila o código-fonte, executa testes e produz pacotes ready-to-deploy de software. Para obter mais informações, consulte [Ferramentas do desenvolvedor em AWS](https://aws.amazon.com/products/developer-tools/).

## Ferramentas
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS serviços e ferramentas**

AWS fornece um conjunto de serviços para desenvolvedores que você pode usar para implementar esse padrão:
+ O [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) é um serviço gerenciado e altamente escalável de repositório de artefatos, que facilita o armazenamento e o compartilhamento de pacotes de software para o desenvolvimento de aplicações.
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatiza implantações no Amazon Elastic Compute Cloud (Amazon EC2) ou em instâncias AWS Lambda , funções ou serviços do Amazon Elastic Container Service (Amazon ECS) no local.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.

**Outras ferramentas**
+ O [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) é uma aplicação voltada para a criação de fluxogramas e diagramas.
+ O [Figma](https://www.figma.com/design-overview/) é uma ferramenta de design on-line voltada para a colaboração. O repositório de código contém modelos no formato .fig para o Figma.

**Repositório de código**

Esse arquivo fonte para o diagrama nesse padrão está disponível no repositório GitHub [Git Branching Strategy for Trunk](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/trunk). Estão incluídos arquivos nos formatos PNG, draw.io e Figma. É possível modificar esses diagramas para adequação aos processos da sua organização.

## Práticas recomendadas
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Siga as melhores práticas e recomendações em [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance e Choosing a [Git branching](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) strategy para ambientes com várias contas. DevOps Esses recursos auxiliam na implementação eficiente do desenvolvimento baseado em Trunk, incentivam a colaboração, aumentam a qualidade do código e agilizam o processo de desenvolvimento.

## Épicos
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Análise do fluxo de trabalho do Trunk
<a name="reviewing-the-trunk-workflow"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Analise o processo padrão do Trunk. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) | DevOps engenheiro | 

## Solução de problemas
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Conflitos em ramificações | Um problema comum que pode ocorrer com o modelo do Trunk é quando uma correção urgente precisa ser aplicada em um ambiente de produção, mas é necessário realizar uma alteração correspondente em uma ramificação `feature`, na qual os mesmos recursos estão sendo modificados. Recomendamos que você faça a mesclagem das alterações da ramificação `main` para as ramificações menos avançadas com frequência, a fim de evitar conflitos significativos ao mesclar de volta para a ramificação `main`. | 

## Recursos relacionados
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-resources"></a>

Este guia não inclui treinamento em Git. No entanto, existem muitos recursos de alta qualidade disponíveis na internet, caso você precise realizar esse treinamento. Recomendamos que você comece pelo site de [documentação do Git](https://git-scm.com/doc).

Os recursos apresentados a seguir podem ajudar você na jornada de implementação de ramificações do Trunk na Nuvem AWS.

**AWS DevOps orientação**
+ [AWS DevOps Orientação](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [Arquitetura de referência do pipeline de implantação da AWS](https://pipelines.devops.aws.dev/)
+ [O que DevOps é](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps recursos](https://aws.amazon.com/devops/resources/)

**Orientações sobre o Trunk**
+ [Trunk Based Development](https://trunkbaseddevelopment.com/)

**Outros recursos**
+ [Twelve-factor app methodology](https://12factor.net/) (12factor.net)

# Implemente o escaneamento Checkov personalizado e centralizado para aplicar a política antes de implantar a infraestrutura AWS
<a name="centralized-custom-checkov-scanning"></a>

*Benjamin Morris, Amazon Web Services*

## Resumo
<a name="centralized-custom-checkov-scanning-summary"></a>

Esse padrão fornece uma estrutura de GitHub ações para escrever políticas personalizadas do Checkov em um repositório que pode ser reutilizada em toda a organização. GitHub Ao seguir este padrão, uma equipe de segurança da informação poderá gravar, adicionar e manter políticas personalizadas de acordo com os requisitos da empresa. As políticas personalizadas podem ser inseridas automaticamente em todos os pipelines da GitHub organização. Essa abordagem pode ser usada para aplicar os padrões da empresa aos recursos antes que sejam implantados.

## Pré-requisitos e limitações
<a name="centralized-custom-checkov-scanning-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma GitHub organização usando GitHub Ações
+ AWS infraestrutura implantada com HashiCorp Terraform ou AWS CloudFormation

**Limitações**
+ Esse padrão foi escrito para GitHub Ações. No entanto, ele pode ser adaptado a estruturas similares de integração contínua e entrega contínua (CI/CD), como. GitLab Nenhuma versão paga específica do GitHub é necessária.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para a disponibilidade da região, consulte [Pontos de extremidade e cotas de serviço](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) na AWS documentação e escolha o link para o serviço.

## Arquitetura
<a name="centralized-custom-checkov-scanning-architecture"></a>

Esse padrão foi projetado para ser implantado como um GitHub repositório que contém um fluxo de trabalho GitHub reutilizável e políticas personalizadas do Checkov. O fluxo de trabalho reutilizável pode escanear tanto o Terraform quanto os repositórios de CloudFormation infraestrutura como código (IaC).

O diagrama a seguir mostra o repositório de ** GitHub fluxos de trabalho reutilizáveis e o repositório** de **políticas do Custom Checkov** como ícones separados. Contudo, é possível implementar esses repositórios como repositórios separados ou como um único repositório. O código de exemplo usa um único repositório, com arquivos destinados a fluxos de trabalho (`.github/workflows`) e arquivos destinados a políticas personalizadas (pasta `custom_policies` e o arquivo de configuração `.checkov.yml`) no mesmo repositório.

![\[GitHub O Actions usa GitHub fluxo de trabalho reutilizável e políticas personalizadas do Checkov para avaliar o IaC.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/6c0c941f-14f9-4569-92da-9f81ab3e525c/images/a1539ce5-0ee6-4af1-bd01-cafad0f71708.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um usuário cria uma pull request em um GitHub repositório.

1. Os fluxos de trabalho do pipeline começam em GitHub Ações, incluindo uma referência a um fluxo de trabalho reutilizável do Checkov.

1. O fluxo de trabalho do pipeline baixa o fluxo de trabalho reutilizável Checkov referenciado de um repositório externo e executa esse fluxo de trabalho Checkov usando Ações. GitHub 

1. O fluxo de trabalho reutilizável do Checkov faz o download das políticas personalizadas de um repositório externo.

1. O fluxo de trabalho reutilizável do Checkov avalia o IaC no GitHub repositório em relação às políticas incorporadas e personalizadas do Checkov. O fluxo de trabalho reutilizável do Checkov é aprovado ou reprovado dependendo da presença de problemas de segurança.

**Automação e escala**

Este padrão permite o gerenciamento centralizado da configuração do Checkov, para que as atualizações de políticas possam ser aplicadas em um único local. Entretanto, este padrão exige que cada repositório empregue um fluxo de trabalho que contenha uma referência ao fluxo de trabalho reutilizável central. É possível adicionar essa referência manualmente ou usar scripts para transferir o arquivo para a pasta `.github/workflows` de cada repositório.

## Ferramentas
<a name="centralized-custom-checkov-scanning-tools"></a>

**Serviços da AWS**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida em todas Contas da AWS as regiões. Checkov pode escanear CloudFormation.

**Outras ferramentas**
+ A ferramenta [Checkov](https://www.checkov.io/) é destinada à análise estática que verifica IaC para identificação de falhas de segurança e conformidade.
+ GitHub O [Actions](https://github.com/features/actions) é integrado à GitHub plataforma para ajudar você a criar, compartilhar e executar fluxos de trabalho em seus GitHub repositórios. Você pode usar o GitHub Actions para automatizar tarefas como criar, testar e implantar seu código.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de IaC HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local. O Checkov consegue realizar a verificação do Terraform.

**Repositório de código**

O código desse padrão está disponível no GitHub [centralized-custom-checkov-sast](https://github.com/aws-samples/centralized-custom-checkov-sast)repositório.

## Práticas recomendadas
<a name="centralized-custom-checkov-scanning-best-practices"></a>
+ Para garantir uma postura de segurança consistente, alinhe as políticas de segurança da sua empresa às políticas do Checkov.
+ Nas fases iniciais da implementação das políticas personalizadas do Checkov, você pode usar a opção de falha branda na verificação do Checkov para permitir que uma IaC com problemas de segurança seja mesclada. Com o amadurecimento do processo, faça a transição da opção de falha branda para a opção de falha definitiva.

## Épicos
<a name="centralized-custom-checkov-scanning-epics"></a>

### Criação de um repositório central do Checkov para políticas personalizadas
<a name="create-a-central-checkov-repository-for-custom-policies"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um repositório central do Checkov. | Crie um repositório para armazenar as políticas personalizadas do Checkov que serão aplicadas na organização.Para começar rapidamente, você pode copiar o conteúdo do repositório desse padrão em seu GitHub [centralized-custom-checkov-sast ](https://github.com/aws-samples/centralized-custom-checkov-sast)repositório central do Checkov. | DevOps engenheiro | 
| Crie um repositório para fluxos de trabalho reutilizáveis. | Se um repositório para fluxos de trabalho reutilizáveis já existir, ou se você planeja incluir os arquivos de fluxos de trabalho reutilizáveis no mesmo repositório das políticas personalizadas do Checkov, pode pular esta etapa.Crie um GitHub repositório para armazenar fluxos de trabalho reutilizáveis. Os pipelines de outros repositórios farão referência a este repositório. | DevOps engenheiro | 

### Criação de fluxos de trabalho reutilizáveis e de exemplo do Checkov
<a name="create-reusable-and-example-checkov-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione um fluxo de trabalho reutilizável do Checkov. | Crie um fluxo de trabalho Checkov GitHub Actions reutilizável (arquivo YAML) no repositório de fluxos de trabalho reutilizáveis. Você pode adaptar este fluxo de trabalho reutilizável usando o arquivo de fluxo de trabalho fornecido neste padrão.Um exemplo de alteração que você pode desejar fazer é alterar o fluxo de trabalho reutilizável para usar a opção de falha branda. Definir `soft-fail` como `true` permite que o trabalho seja concluído com êxito, mesmo que ocorra uma falha na verificação do Checkov. Para obter instruções, consulte [Hard and soft fail](https://www.checkov.io/2.Basics/Hard%20and%20soft%20fail.html) na documentação do Checkov. | DevOps engenheiro | 
| Adicione um fluxo de trabalho de exemplo. | Adicione um fluxo de trabalho de exemplo do Checkov que faça referência ao fluxo de trabalho `reusable`. Isso fornecerá um modelo de como reutilizar o fluxo de trabalho `reusable`. No repositório de exemplo, `checkov-source.yaml` representa o fluxo de trabalho reutilizável, enquanto `checkov-scan.yaml` é o exemplo que utiliza `checkov-source`.Para obter mais detalhes sobre como gravar um fluxo de trabalho de exemplo do Checkov, consulte [Informações adicionais](#centralized-custom-checkov-scanning-additional). | DevOps engenheiro | 

### Associação das políticas da empresa às políticas personalizadas do Checkov
<a name="associate-company-policies-to-checkov-custom-policies"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Determine as políticas que podem ser aplicadas com o Checkov. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralized-custom-checkov-scanning.html)Para obter mais detalhes sobre como criar políticas personalizadas do Checkov, consulte [Custom Policies Overview](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html) na documentação do Checkov. | Segurança e conformidade | 
| Adicione políticas personalizadas do Checkov. | Converta as políticas da empresa identificadas em políticas personalizadas do Checkov no repositório central. É possível gravar políticas simples do Checkov tanto em Python quanto em YAML. | Segurança | 

### Implementação das políticas personalizadas do Checkov de forma centralizada
<a name="implement-centralized-checkov-custom-policies"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione o fluxo de trabalho reutilizável do Checkov a todos os repositórios. | Nesse momento, você deve ter um fluxo de trabalho de exemplo do Checkov que faça referência ao fluxo de trabalho reutilizável. Copie o fluxo de trabalho de exemplo do Checkov, que referencia o fluxo de trabalho reutilizável, para cada repositório que necessitar dele. | DevOps engenheiro | 
| Crie um mecanismo para garantir que o Checkov seja executado antes das mesclagens. | Para garantir que o fluxo de trabalho do Checkov seja executado para cada pull request, crie uma [verificação de status](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks) que exija um fluxo de trabalho Checkov bem-sucedido antes que os pull requests possam ser mesclados. GitHub permite que você exija que fluxos de trabalho específicos sejam executados antes que as pull requests possam ser mescladas. | DevOps engenheiro | 
| Crie um PAT para toda a organização e compartilhe-o como um segredo. | Se sua GitHub organização estiver visível publicamente, você pode pular essa etapa.Esse padrão exige que o fluxo de trabalho do Checkov seja capaz de baixar políticas personalizadas do repositório de políticas personalizadas em sua GitHub organização. É necessário fornecer permissões para que o fluxo de trabalho do Checkov possa acessar esses repositórios.Para fazer isso, [crie um token de acesso pessoal](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) (PAT) com permissões de leitura para os repositórios da organização. Compartilhe este PAT com os repositórios, seja como um segredo organizacional (se estiver usando um plano pago) ou como um segredo em cada repositório (se estiver usando a versão gratuita). No código de amostra, o nome padrão para o segredo é `ORG_PAT`. | DevOps engenheiro | 
| (Opcional) Proteja os arquivos do fluxo de trabalho do Checkov contra modificações. | Para proteger os arquivos do fluxo de trabalho do Checkov contra alterações indesejadas, você pode usar um arquivo `CODEOWNERS`. O arquivo `CODEOWNERS` é geralmente implantado na raiz do diretório.Por exemplo, para exigir aprovações do `secEng` grupo da sua GitHub organização quando o `checkov-scan.yaml` arquivo for modificado, acrescente o seguinte ao arquivo do repositório: `CODEOWNERS`<pre>[Checkov]<br />.github/workflows/checkov-scan.yaml @myOrg/secEng</pre>O arquivo `CODEOWNERS` é específico para o repositório em que está localizado. Para proteger o fluxo de trabalho do Checkov usado pelo repositório, é necessário adicionar (ou atualizar) um arquivo `CODEOWNERS` em cada repositório.Para obter mais informações sobre como proteger os arquivos do fluxo de trabalho do Checkov, consulte [Informações adicionais](#centralized-custom-checkov-scanning-additional). Para obter mais informações sobre `CODEOWNERS` arquivos, consulte a documentação oficial do seu CI/CD provedor (como [GitHub](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)). | DevOps engenheiro | 

## Recursos relacionados
<a name="centralized-custom-checkov-scanning-resources"></a>
+ [Checkov Custom Policies Overview](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html)
+ [CloudFormation Escaneamento de configuração](https://www.checkov.io/7.Scan%20Examples/Cloudformation.html)
+ [GitHub Ações Fluxos de trabalho reutilizáveis](https://docs.github.com/en/actions/using-workflows/reusing-workflows)

## Mais informações
<a name="centralized-custom-checkov-scanning-additional"></a>

**Elaboração de arquivos de fluxo de trabalho do Checkov**

Ao elaborar o arquivo `checkov-scan.yaml`, considere quando deseja que ele seja executado. A chave `on` de nível superior determina quando o fluxo de trabalho será executado. No repositório de exemplo, o fluxo de trabalho será executado quando houver uma solicitação de pull direcionada para a ramificação `main` (e sempre que a ramificação de origem dessa solicitação de pull for modificada). O fluxo de trabalho também pode ser executado sob demanda, devido à chave `workflow_dispatch`.

É possível alterar as condições de acionamento do fluxo de trabalho com base na frequência com que deseja que ele seja executado. Por exemplo, você poderia alterar o fluxo de trabalho para ser executado sempre que o código for enviado a qualquer ramificação, substituindo `pull_request` por `push` e removendo a chave `branches`.

É possível modificar o arquivo de fluxo de trabalho de exemplo que foi criado em um repositório individual. Por exemplo, você poderia ajustar o nome da ramificação de destino de `main` para `production`, caso o repositório seja estruturado em torno de uma ramificação de `production`.

**Proteção de arquivos de fluxo de trabalho do Checkov**

A verificação do Checkov fornece informações úteis sobre potenciais erros de configuração relacionados à segurança. No entanto, alguns desenvolvedores podem considerar a ferramenta como um obstáculo para sua produtividade e tentar remover ou desabilitar o fluxo de trabalho de verificação.

Existem várias formas de resolver esse problema, incluindo uma comunicação mais eficaz sobre o valor a longo prazo da verificação de segurança e uma documentação mais clara sobre como implantar uma infraestrutura segura. Essas são abordagens “leves” importantes de DevSecOps colaboração que podem ser vistas como a solução para a causa raiz desse problema. No entanto, você também pode usar controles técnicos, como um arquivo `CODEOWNERS` e as barreiras de proteção para orientar os desenvolvedores corretamente.

**Padrão de testes em um ambiente de sandbox**

Para testar este padrão em um ambiente de sandbox, siga estas etapas:

1. Crie uma nova GitHub organização. Crie um token com acesso somente para leitura a todos os repositórios da organização. Como esse token é para um ambiente de sandbox, e não para um ambiente pago, não será possível armazená-lo como um segredo global da organização.

1. Crie um repositório`checkov` para armazenar a configuração do Checkov e um repositório `github-workflows` para armazenar a configuração do fluxo de trabalho reutilizável. Preencha os repositórios com o conteúdo fornecido no repositório de exemplo.

1. Crie um repositório de aplicação e copie e cole o fluxo de trabalho `checkov-scan.yaml` na pasta `.github/workflows` desse repositório. Adicione um segredo ao repositório que contenha o PAT que você criou para o acesso somente à leitura da organização. O segredo padrão é `ORG_PAT`.

1. Crie uma pull request que adicione um pouco de Terraform ou CloudFormation código ao repositório do aplicativo. O Checkov deve realizar a verificação e retornar um resultado.

# Implementação de diagnósticos e solução de problemas com base em IA no Kubernetes usando a integração do K8sGPT e do Amazon Bedrock
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration"></a>

*Ishwar Chauthaiwale, Muskan e Prafful Gupta, Amazon Web Services*

## Resumo
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-summary"></a>

Este padrão demonstra como implementar diagnósticos e solução de problemas com base em IA no Kubernetes, integrando o K8sGPT ao modelo Claude v2, da Anthropic, disponível no Amazon Bedrock. A solução fornece análise em linguagem natural e etapas de correção para problemas em clusters do Kubernetes por meio de uma arquitetura segura de bastion host. Ao combinar a experiência do K8sGpt Kubernetes com os recursos avançados de linguagem do Amazon Bedrock DevOps , as equipes podem identificar e resolver problemas de cluster rapidamente. Graças a essas funcionalidades, é possível reduzir o tempo médio de resolução (MTTR, na sigla em inglês) em até 50%. 

Este padrão nativo da nuvem usa o Amazon Elastic Kubernetes Service (Amazon EKS) para o gerenciamento do Kubernetes. O padrão implementa as melhores práticas de segurança por meio de funções AWS Identity and Access Management (IAM) adequadas e isolamento de rede. Esta solução é especialmente útil para organizações que desejam otimizar as operações no Kubernetes e aprimorar suas funcionalidades de solução de problemas com assistência de IA.

## Pré-requisitos e limitações
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS com as permissões apropriadas
+ AWS Command Line Interface (AWS CLI) [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Um cluster do Amazon EKS
+ Acesso ao modelo Claude 2 da Anthropic no [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ Um bastion host com as configurações de grupo de segurança necessárias
+ K8sGPT [instalado](https://docs.k8sgpt.ai/getting-started/installation/)

**Limitações**
+ A análise do K8sGPT é limitada pelo tamanho da janela de contexto do modelo Claude v2.
+ Os limites de taxa da API do Amazon Bedrock são aplicados com base nas cotas da sua conta.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ Amazon EKS, [versão 1.31 ou versões posteriores](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ [Modelo Claude 2](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) no Amazon Bedrock
+ K8sGpt, [v0.4.2 ou versões posteriores](https://github.com/k8sgpt-ai/k8sgpt/releases)

## Arquitetura
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-architecture"></a>

O diagrama apresentado a seguir ilustra a arquitetura para diagnósticos com base em IA no Kubernetes, usando o K8sGPT integrado ao Amazon Bedrock na Nuvem AWS.

![\[Fluxo de trabalho para diagnósticos no Kubernetes usando o K8sGPT integrado ao Amazon Bedrock.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/09bc08f6-e191-4cef-b26b-dcb6225b15cc/images/8789891d-4a90-44b0-a108-387f6d96496b.png)


A arquitetura apresenta o seguinte fluxo de trabalho:

1. Os desenvolvedores acessam o ambiente por meio de uma conexão segura com o bastion host. Essa EC2 instância da Amazon serve como ponto de entrada seguro e contém a instalação da interface de linha de comando (CLI) do K8SGpt e as configurações necessárias.

1. O bastion host, configurado com perfis do IAM específicos, estabelece conexões seguras tanto com o cluster do Amazon EKS quanto com os endpoints do Amazon Bedrock. O K8sGPT é instalado e configurado no bastion host para realizar a análise do cluster do Kubernetes.

1. O Amazon EKS gerencia o ambiente de gerenciamento do Kubernetes e os nós de processamento, fornecendo o ambiente de destino para a análise do K8sGPT. O serviço opera em várias zonas de disponibilidade dentro de uma nuvem privada virtual (VPC), o que ajuda a garantir alta disponibilidade e resiliência. O Amazon EKS fornece dados operacionais por meio da API do Kubernetes, permitindo uma análise completa do cluster.

1. O K8sGPT envia os dados de análise para o Amazon Bedrock, que fornece o modelo de base (FM) do Claude v2 para o processamento de linguagem natural. O serviço processa a análise do K8sGPT para gerar explicações legíveis para seres humanos e oferece sugestões detalhadas de correção com base nos problemas identificados. O Amazon Bedrock funciona como um serviço de IA com tecnologia sem servidor, alta disponibilidade e escalabilidade.

**nota**  
Neste fluxo de trabalho, o IAM controla o acesso entre os componentes por meio de perfis e políticas, gerenciando a autenticação das interações entre o bastion host, o Amazon EKS e o Amazon Bedrock. O IAM implementa o princípio de privilégio mínimo e possibilita a comunicação segura entre os serviços em toda a arquitetura.

**Automação e escala**

As operações do K8sGpt podem ser automatizadas e escaladas em vários clusters do Amazon EKS por meio de várias ferramentas. Serviços da AWS Essa solução oferece suporte à integração contínua e à integração de implantação contínua (CI/CD) usando [Jenkins](https://www.jenkins.io/), [GitHub Actions](https://docs.github.com/en/actions/get-started/understand-github-actions) ou [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)para análise programada. O operador do K8sGPT possibilita o monitoramento contínuo dentro do cluster, com funcionalidades automatizadas de detecção e de geração de relatório de problemas. Para implantações em escala empresarial, você pode usar a [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) para agendar escaneamentos e acionar respostas automatizadas com scripts personalizados. AWS A integração do SDK permite o controle programático em uma grande frota de clusters.

## Ferramentas
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-tools"></a>

**Serviços da AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ [O Amazon Elastic Kubernetes Service (Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

**Outras ferramentas**
+ O [K8sGPT](https://k8sgpt.ai/) é uma ferramenta de código aberto com base em IA que transforma o gerenciamento do Kubernetes. Essa ferramenta atua como um especialista virtual em engenharia de confiabilidade de sites (SRE), realizando, de forma automática, verificações, diagnósticos e solução de problemas em clusters do Kubernetes. Os administradores podem interagir com o K8sGPT em linguagem natural e obter insights claros e acionáveis sobre o estado do cluster, as falhas relacionadas ao pod e os problemas do serviço. Os analisadores integrados da ferramenta detectam uma ampla variedade de problemas, desde componentes mal configurados até restrições de recursos, e fornecem explicações e soluções. easy-to-understand

## Práticas recomendadas
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-best-practices"></a>
+ Implemente controles de acesso seguro usando o AWS Systems Manager Session Manager acesso [ao Bastion Host](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html).
+ Certifique-se de que a autenticação do K8sGPT use perfis do IAM dedicados, com permissões de privilégio mínimo, para as interações com o Amazon Bedrock e com o Amazon EKS. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [nas melhores práticas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.
+ Configure a [marcação de recursos](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html), habilite o CloudWatch [registro na Amazon para trilhas de auditoria](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html) e implemente a [anonimização de dados](https://aws.amazon.com/solutions/guidance/data-anonymization-on-aws/) para informações confidenciais. 
+ Mantenha backups regulares das configurações do K8sGPT, ao mesmo tempo em que define agendamentos de verificações automatizadas em horários com demanda reduzida para minimizar o impacto operacional.

## Épicos
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-epics"></a>

### Adição do Amazon Bedrock à lista de provedores de backend de IA
<a name="add-br-to-ai-backend-provider-list"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Defina o Amazon Bedrock como o provedor de backend de IA para o K8sGPT. | Para definir o Amazon Bedrock como o provedor de [back-end de IA r para](https://docs.k8sgpt.ai/reference/providers/backend/) o K8SGpt, use o seguinte comando: AWS CLI <pre>k8sgpt auth add -b amazonbedrock \<br /> -r us-west-2 \<br /> -m anthropic.claude-v2 \<br /> -n endpoint-name <br /></pre>O comando de exemplo usa `us-west-2` como a Região da AWS. No entanto, é possível selecionar outra região, desde que tanto o cluster do Amazon EKS quanto o modelo correspondente do Amazon Bedrock estejam disponíveis e habilitados nessa região selecionada.Para verificar se `amazonbedrock` foi adicionado à lista de provedores de backend de IA e está no estado `Active`, execute o seguinte comando:<pre>k8sgpt auth list</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>Default: <br />> openai<br />Active: <br />> amazonbedrock<br />Unused: <br />> openai<br />> localai<br />> ollama<br />> azureopenai<br />> cohere<br />> amazonsagemaker<br />> google<br />> noopai<br />> huggingface<br />> googlevertexai<br />> oci<br />> customrest<br />> ibmwatsonxai</pre> | AWS DevOps | 

### Verificação de recursos com um filtro
<a name="scan-resources-using-a-filter"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confira uma lista dos filtros disponíveis. | Para ver a lista de todos os filtros disponíveis, use o seguinte AWS CLI comando:<pre>k8sgpt filters list</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>Active: <br />> Deployment<br />> ReplicaSet<br />> PersistentVolumeClaim<br />> Service<br />> CronJob<br />> Node<br />> MutatingWebhookConfiguration<br />> Pod<br />> Ingress<br />> StatefulSet<br />> ValidatingWebhookConfiguration</pre> | AWS DevOps | 
| Realize a verificação de um pod em um namespace específico aplicando um filtro. | Este comando é útil para a depuração de problemas específicos de pods em um cluster do Kubernetes, usando as funcionalidades de IA do Amazon Bedrock para analisar e explicar os problemas encontrados.Para escanear um pod em um namespace específico usando um filtro, use o seguinte comando: AWS CLI <pre>k8sgpt analyze --backend amazonbedrock --explain --filter Pod -n default</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>100% |████████████████████████████████████████████████████████| (1/1, 645 it/s)        <br />AI Provider: amazonbedrock<br /><br />0: Pod default/crashme()<br />- Error: the last termination reason is Error container=crashme pod=crashme<br />Error: The pod named crashme terminated because the container named crashme crashed.<br />Solution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.</pre> | AWS DevOps | 
| Realize a verificação de uma implantação em um namespace específico aplicando um filtro. | Este comando é útil para identificar e solucionar problemas específicos da implantação, especialmente quando o estado atual não corresponde ao estado desejado.Para verificar uma implantação em um namespace específico usando um filtro, use o seguinte comando: AWS CLI <pre>k8sgpt analyze --backend amazonbedrock --explain --filter Deployment -n default</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>100% |██████████████████████████████████████████████████████████| (1/1, 10 it/min)        <br />AI Provider: amazonbedrock<br /><br />0: Deployment default/nginx()<br />- Error: Deployment default/nginx has 1 replicas but 2 are available<br /> Error: The Deployment named nginx in the default namespace has 1 replica specified but 2 pod replicas are running.<br />Solution: Check if any other controllers like ReplicaSet or StatefulSet have created extra pods. Delete extra pods or adjust replica count to match available pods.</pre> | AWS DevOps | 
| Realize a verificação de um nó em um namespace específico aplicando um filtro. | Para verificar um nó em um namespace específico usando um filtro, use o seguinte comando: AWS CLI <pre>k8sgpt analyze --backend amazonbedrock --explain --filter Node -n default </pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> | AWS DevOps | 

### Análise das saídas detalhadas
<a name="analyze-detailed-outputs"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Obtenha saídas detalhadas. |  Para obter resultados detalhados, use o seguinte AWS CLI comando:<pre>k8sgpt analyze --backend amazonbedrock --explain --ouput json</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>{<br />  "provider": "amazonbedrock",<br />  "errors": null,<br />  "status": "ProblemDetected",<br />  "problems": 1,<br />  "results": [<br />    {<br />      "kind": "Pod",<br />      "name": "default/crashme",<br />      "error": [<br />        {<br />          "Text": "the last termination reason is Error container=crashme pod=crashme",<br />          "KubernetesDoc": "",<br />          "Sensitive": []<br />        }<br />      ],<br />      "details": " Error: The pod named crashme terminated because the container named crashme crashed.\nSolution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.",<br />      "parentObject": ""<br />    }<br />  ]<br />}</pre> | AWS DevOps | 
| Verifique os pods com problemas. | Para verificar se há pods problemáticos específicos, use o seguinte comando: AWS CLI <pre>kubectl get pods --all-namespaces | grep -v Running</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>NAMESPACE    NAME      READY    STATUS          RESTARTS      AGE                                       <br />default     crashme     0/1   CrashLoopBackOff   260(91s ago)   21h</pre> | AWS DevOps | 
| Obtenha insights específicos da aplicação. | Este comando é particularmente útil quando:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.html)Para obter insights específicos da aplicação, use o seguinte comando:<pre>k8sgpt analyze --backend amazonbedrock --explain -L app=nginx -n default</pre>A seguir, apresentamos um exemplo da saída esperada para este comando:<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> |  | 

## Recursos relacionados
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-resources"></a>

**Blogs da AWS**
+ [Automate Amazon EKS troubleshooting using an Amazon Bedrock agentic workflow](https://aws.amazon.com/blogs/machine-learning/automate-amazon-eks-troubleshooting-using-an-amazon-bedrock-agentic-workflow/)
+ [Use K8sGPT and Amazon Bedrock for simplified Kubernetes cluster maintenance](https://aws.amazon.com/blogs/machine-learning/use-k8sgpt-and-amazon-bedrock-for-simplified-kubernetes-cluster-maintenance/)

**AWS documentação**
+ AWS CLI [comandos: [create-cluster e describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/eks/create-cluster.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-cluster.html)
+ [Começar a usar o Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) (documentação do Amazon EKS)
+ [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentação do IAM)

**Outros recursos**
+ [K8sGPT](https://k8sgpt.ai/)

# Detecte alterações automaticamente e inicie diferentes CodePipeline pipelines para um monorepo em CodeCommit
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit"></a>

*Helton Ribeiro, Petrus Batalha e Ricardo Morais, Amazon Web Services*

## Resumo
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-summary"></a>

**Aviso**: não AWS Cloud9 está mais disponível para novos clientes. Os clientes existentes do AWS Cloud9 podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Esse padrão ajuda você a detectar automaticamente alterações no código-fonte de um aplicativo baseado em monorepo AWS CodeCommit e, em seguida, iniciar um pipeline AWS CodePipeline que executa a integração contínua e a entrega contínua (CI/CD) automation for each microservice. This approach means that each microservice in your monorepo-based application can have a dedicated CI/CDpipeline), o que garante melhor visibilidade, compartilhamento mais fácil do código e melhor colaboração, padronização e capacidade de descoberta.

A solução descrita neste padrão não realiza nenhuma análise de dependência entre os microsserviços presentes no Monorepo. Ele só detecta alterações no código-fonte e inicia o pipeline correspondente CI/CD .

O padrão é usado AWS Cloud9 como ambiente de desenvolvimento integrado (IDE) e AWS Cloud Development Kit (AWS CDK) para definir uma infraestrutura usando duas CloudFormation pilhas: `MonoRepoStack` e. `PipelinesStack` A `MonoRepoStack` pilha cria o monorepo in AWS CodeCommit e a AWS Lambda função que inicia os pipelines. CI/CD A pilha `PipelinesStack` define sua infraestrutura de pipeline.

**Importante**  
O fluxo de trabalho deste padrão é uma prova de conceito (PoC, na sigla em inglês). Recomendamos que você o utilize somente em um ambiente de teste. Se você quiser usar a abordagem desse padrão em um ambiente de produção, consulte [as melhores práticas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação AWS Identity and Access Management (IAM) e faça as alterações necessárias em suas funções do IAM Serviços da AWS e. 

## Pré-requisitos e limitações
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-prereqs"></a>

**Pré-requisitos **
+ Uma AWS conta ativa.
+ AWS Command Line Interface (AWS CLI), instalado e configurado. Para obter mais informações, consulte [Instalação, atualização e desinstalação do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) na AWS CLI documentação.  
+ Python 3 e `pip`, instalado na sua máquina local. Para obter mais informações, consulte a [Documentação do Python](https://www.python.org/). 
+ O AWS CDK instalado e configurado. Para obter mais informações, consulte [Introdução ao AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) na AWS CDK documentação. 
+ Um AWS Cloud9 IDE, instalado e configurado. Para obter mais informações, consulte [Configuração AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/setting-up.html) na AWS Cloud9 documentação. 
+ O GitHub [AWS CodeCommit monorepo multi-pipeline aciona](https://github.com/aws-samples/monorepo-multi-pipeline-trigger) o repositório, clonado em sua máquina local. 
+ Um diretório existente contendo o código do aplicativo com o qual você deseja criar e implantar CodePipeline.
+ Familiaridade e experiência com as DevOps melhores práticas no Nuvem AWS. Para aumentar sua familiaridade com DevOps, você pode usar o padrão [Crie uma arquitetura fracamente acoplada com microsserviços usando DevOps práticas e AWS Cloud9](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-loosely-coupled-architecture-with-microservices-using-devops-practices-and-aws-cloud9.html) no site de orientação prescritiva. AWS  

## Arquitetura
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-architecture"></a>

O diagrama a seguir mostra como usar o AWS CDK para definir uma infraestrutura com duas AWS CloudFormation pilhas: `MonoRepoStack` e. `PipelinesStack`

![\[Fluxo de trabalho para usar o AWS CDK para definir uma infraestrutura com duas CloudFormation pilhas.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a3397158-a208-4033-844e-969af13ae8b6/images/b0bb1094-b598-4b3d-ab8b-ad9b0eb45f38.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. O processo de bootstrap usa o AWS CDK para criar as AWS CloudFormation pilhas e. `MonoRepoStack` `PipelinesStack`

1. A `MonoRepoStack` pilha cria o CodeCommit repositório para seu aplicativo e a função `monorepo-event-handler` Lambda que é iniciada após cada confirmação.

1. A `PipelinesStack` pilha cria os pipelines CodePipeline que são iniciados pela função Lambda. Cada microsserviço deve ter um pipeline de infraestrutura definido.

1. O pipeline para `microservice-n` é iniciado pela função Lambda e inicia seus CI/CD estágios isolados baseados no código-fonte em. CodeCommit

1. O pipeline para `microservice-1` é iniciado pela função Lambda e inicia seus CI/CD estágios isolados baseados no código-fonte em. CodeCommit

O diagrama a seguir mostra a implantação das AWS CloudFormation pilhas `MonoRepoStack` e `PipelinesStack` em uma conta.

![\[Implantação das CloudFormation pilhas MonoRepoStack e PipelinesStack em uma conta da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a3397158-a208-4033-844e-969af13ae8b6/images/39e60e49-dea2-486d-8a2c-6cae438f69b4.png)


1. Um usuário altera o código em um dos microsserviços do aplicativo.

1. O usuário envia as alterações de um repositório local para um CodeCommit repositório.

1. A atividade push inicia a função Lambda que recebe todos os push no repositório. CodeCommit 

1. A função do Lambda realiza a leitura de um parâmetro no Parameter Store, uma funcionalidade do AWS Systems Manager, para recuperar o ID da confirmação mais recente. O parâmetro tem o formato de nomenclatura:`/MonoRepoTrigger/{repository}/{branch_name}/LastCommit`. Se o parâmetro não for encontrado, a função Lambda lê o último ID de confirmação do CodeCommit repositório e salva o valor retornado no Parameter Store.

1. Depois de identificar o ID do commit e os arquivos alterados, a função Lambda identifica os pipelines para cada diretório de microsserviços e inicia o pipeline necessário. CodePipeline 

## Ferramentas
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)é uma estrutura de desenvolvimento de software para definir a infraestrutura de nuvem em código e provisioná-la por meio dela. CloudFormation
+ O [Python](https://www.python.org/) é uma linguagem de programação que facilita o trabalho ágil e a integração eficiente de sistemas.

**Código **

O código-fonte e os modelos desse padrão estão disponíveis no repositório de gatilhos [multipipeline GitHub AWS CodeCommit monorepo](https://github.com/aws-samples/monorepo-multi-pipeline-trigger).

## Práticas recomendadas
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-best-practices"></a>
+ Esta arquitetura de amostra não inclui uma solução de monitoramento para a infraestrutura implantada. Se você deseja implantar esta solução em um ambiente de produção, recomendamos que habilite o monitoramento. Para obter mais informações, consulte [Monitore seus aplicativos sem servidor com o CloudWatch Application Insights](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/monitor-app-insights.html) na documentação AWS Serverless Application Model (AWS SAM).
+ Ao editar o código de amostra fornecido por esse padrão, siga as [melhores práticas para desenvolver e implantar a infraestrutura de nuvem](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) na AWS CDK documentação.
+ Ao definir seus pipelines de microsserviços, revise as [melhores práticas de segurança](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-best-practices.html) na AWS CodePipeline documentação.
+ Você também pode verificar as melhores práticas em seu AWS CDK código usando o utilitário [cdk-nag](https://github.com/cdklabs/cdk-nag). Essa ferramenta usa um conjunto de regras, agrupadas em pacotes, para avaliar seu código. Os pacotes disponíveis são:
  + [AWS Biblioteca de soluções](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#awssolutions)
  + [Health Insurance Portability and Accountability Act (HIPAA) security](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#hipaa-security)
  + [National Institute of Standards and Technology (NIST) 800-53 rev 4](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#nist-800-53-rev-4)
  + [NIST 800-53 rev 5](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#nist-800-53-rev-5)
  + [Payment Card Industry Data Security Standard (PCI DSS) 3.2.1](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#pci-dss-321)

## Épicos
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-epics"></a>

### Configurar o ambiente
<a name="set-up-the-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um ambiente virtual Python. | Em seu AWS Cloud9 IDE, crie um ambiente virtual em Python e instale as dependências necessárias executando o seguinte comando:`make install` | Desenvolvedor | 
| Inicialize o Conta da AWS e Região da AWS para o. AWS CDK | Inicialize o necessário Conta da AWS e a região executando o seguinte comando:`make bootstrap account-id=<your-AWS-account-ID> region=<required-region>` | Desenvolvedor | 

### Adicione um novo pipeline para um microsserviço
<a name="add-a-new-pipeline-for-a-microservice"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
|  Adicione seu código de amostra ao diretório do aplicativo. | Adicione o diretório que contém o código do aplicativo de amostra ao `monorepo-sample` diretório no repositório clonado de gatilhos de [vários GitHub AWS CodeCommit pipelines monorepo](https://github.com/aws-samples/monorepo-multi-pipeline-trigger). | Desenvolvedor | 
| Edite o arquivo `monorepo-main.json`. | Adicione o nome do diretório do código da sua aplicação e o nome do pipeline ao arquivo `monorepo-main.json` no repositório clonado. | Desenvolvedor | 
| Criar o pipeline. | No diretório `Pipelines` do repositório, adicione a `class` do pipeline para sua aplicação. O diretório contém dois arquivos de amostra, nomeadamente `pipeline_hotsite.py` e `pipeline_demo.py`. Cada arquivo conta com três estágios: origem, desenvolvimento e implantação.Você pode copiar um dos arquivos e alterá-lo de acordo com os requisitos do seu aplicativo.  | Desenvolvedor | 
| Edite o arquivo `monorepo_config.py`. | Em `service_map`, adicione o nome do diretório do seu aplicativo e a classe que você criou para o pipeline.Por exemplo, o código a seguir mostra uma definição de pipeline no diretório `Pipelines` que usa um arquivo nomeado `pipeline_mysample.py` com uma classe `MySamplePipeline`:<pre>...<br /># Pipeline definition imports<br />from pipelines.pipeline_demo import DemoPipeline<br />from pipelines.pipeline_hotsite import HotsitePipeline<br />from pipelines.pipeline_mysample import MySamplePipeline<br /><br />### Add your pipeline configuration here<br />service_map: Dict[str, ServicePipeline]  = {<br />    # folder-name -> pipeline-class<br />    'demo': DemoPipeline(),<br />    'hotsite': HotsitePipeline(),<br />    'mysample': MySamplePipeline()<br />}</pre> | Desenvolvedor | 

### Implante a MonoRepoStack pilha
<a name="deploy-the-monorepostack-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante a AWS CloudFormation pilha. | Implante a AWS CloudFormation `MonoRepoStack` pilha com valores de parâmetros padrão no diretório raiz do repositório clonado executando o comando. `make deploy-core`Você pode alterar o nome do repositório executando o comando `make deploy-core monorepo-name=<repo_name>`.Você pode implantar simultaneamente ambos os pipelines usando o comando `make deploy monorepo-name=<repo_name>`. | Desenvolvedor | 
| Valide o CodeCommit repositório. | Valide se seus recursos foram criados executando o comando `aws codecommit get-repository --repository-name <repo_name>`. Como a CloudFormation pilha cria o CodeCommit repositório em que o monorepo é armazenado, não execute o `cdk destroy MonoRepoStack ` comando se você tiver começado a fazer modificações nele. | Desenvolvedor | 
| Valide os resultados da CloudFormation pilha. | Valide se a CloudFormation `MonoRepoStack` pilha foi criada e configurada corretamente executando o seguinte comando:<pre>aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE --query 'StackSummaries[?StackName == 'MonoRepoStack']'</pre> | Desenvolvedor | 

### Implante a PipelinesStack pilha
<a name="deploy-the-pipelinesstack-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante a CloudFormation pilha. | A AWS CloudFormation `PipelinesStack` pilha deve ser implantada após a implantação da `MonoRepoStack` pilha. A pilha aumenta de tamanho quando novos microsserviços são adicionados à base de código do monorepo e é reimplantada quando um novo microsserviço é integrado.Implante a PipelinesStack pilha executando o `make deploy-pipelines` comando.Você também pode implantar ambos os pipelines simultaneamente executando o comando `make deploy monorepo-name=<repo_name>`.O exemplo de saída a seguir mostra como a `PipelinesStacks` implantação imprime URLs os microsserviços no final da implementação:<pre>Outputs:<br />PipelinesStack.demourl = .cloudfront.net<br />PipelinesStack.hotsiteurl = .cloudfront.net</pre> | Desenvolvedor | 
| Valide os resultados da AWS CloudFormation pilha. | Valide se a AWS CloudFormation `PipelinesStacks` pilha foi criada e configurada corretamente executando o seguinte comando:<pre>aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE --query 'StackSummaries[?StackName == 'PipelinesStack']'</pre> | Desenvolvedor | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua suas AWS CloudFormation pilhas. | Execute o comando `make destroy`. | Desenvolvedor | 
| Exclua os buckets do S3 dos pipelines. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | Desenvolvedor | 

## Solução de problemas
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Eu encontrei AWS CDK problemas. | Consulte [Solução de AWS CDK problemas comuns](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html) na documentação do AWS CDK. | 
| Eu enviei o código do meu microsserviço, mas o pipeline do microsserviço não foi executado. | **Validação da configuração***Verifique a configuração da ramificação:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)*Valide os arquivos de configuração:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)**Solução de problemas no console***AWS CodePipeline verificações:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)*AWS Lambda solução de problemas:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | 
| Preciso implantar novamente todos os meus microsserviços.  | Existem duas abordagens para aplicar a reimplantação de todos os microsserviços. Escolha a opção que melhor se adequa às suas necessidades.**Abordagem 1: excluir um parâmetro no Parameter Store**Este método envolve excluir um parâmetro específico no Systems Manager Parameter Store, que rastreia o último ID de confirmação utilizado para a implantação. Ao remover esse parâmetro, o sistema será forçado a reimplantar todos os microsserviços no próximo acionamento, pois o considera um novo estado.Etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Prós:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Contras:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)**Abordagem 2: enviar uma confirmação em cada subpasta do Monorepo**Este método envolve fazer uma alteração pequena e enviá-la em cada subpasta de microsserviço no Monorepo para iniciar os pipelines individuais.Etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Prós:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Contras:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | 

## Recursos relacionados
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-resources"></a>
+ [Integração e entrega contínuas (CI/CD) usando CDK Pipelines](https://docs.aws.amazon.com/cdk/latest/guide/cdk_pipeline.html) (documentação)AWS CDK 
+ [módulo aws-cdk/pipelines](https://docs.aws.amazon.com/cdk/api/latest/docs/pipelines-readme.html) (referência de API)AWS CDK 

# Integre um repositório Bitbucket com o AWS Amplify usando a AWS CloudFormation
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation"></a>

*Alwin Abraham, Amazon Web Services*

## Resumo
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-summary"></a>

O AWS Amplify ajuda você a implantar e testar rapidamente sites estáticos sem precisar configurar a infraestrutura que normalmente é necessária. Você pode implantar a abordagem desse padrão se sua organização quiser usar o Bitbucket para controle de origem, seja para migrar o código do aplicativo existente ou para criar um novo aplicativo. Ao usar CloudFormation a AWS para configurar automaticamente o Amplify, você fornece visibilidade das configurações que você usa.

Esse padrão descreve como criar um pipeline e um ambiente de implantação de integração contínua e implantação contínuas (CI/CD) de front-end usando a AWS CloudFormation para integrar um repositório do Bitbucket ao AWS Amplify. A abordagem do padrão significa que você pode criar um pipeline de frontend do Amplify para implantações repetíveis.

## Pré-requisitos e limitações
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-prereqs"></a>

**Pré-requisitos**** **
+ Uma conta ativa da Amazon Web Services (AWS)
+ Uma conta ativa do Bitbucket com acesso de administrador
+ Acesso a um terminal que usa [cURL](https://curl.se/) ou o aplicativo [Postman](https://www.postman.com/)
+ Familiaridade com o Amplify
+ Familiaridade com a AWS CloudFormation
+ Familiaridade com arquivos formatados em YAML

## Arquitetura
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-architecture"></a>

![\[Diagram showing user interaction with Bitbucket repository connected to AWS Amplify in Nuvem AWS region.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b/images/25d73a9d-d2ae-40bc-9ebc-57f9bd13884a.png)


**Pilha de tecnologia**
+ Amplify
+ AWS CloudFormation
+ Bitbucket

## Ferramentas
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-tools"></a>
+ [AWS Amplify](https://docs.aws.amazon.com/amplify/): o Amplify ajuda os desenvolvedores a desenvolverem e implantarem aplicativos móveis e web baseados na nuvem.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS é um serviço que ajuda você a modelar e configurar seus recursos da AWS para que você possa passar menos tempo gerenciando esses recursos e mais tempo se concentrando em seus aplicativos que são executados na AWS.
+ [Bitbucket](https://bitbucket.org/): o Bitbucket é uma solução de gerenciamento de repositórios Git projetada para equipes profissionais. Ele oferece um local central para gerenciar repositórios Git, colaborar em seu código-fonte e guiá-lo pelo fluxo de desenvolvimento.

 

**Código **

O `bitbucket-amplify.yml` arquivo (anexado) contém o CloudFormation modelo da AWS para esse padrão.

## Épicos
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-epics"></a>

### Configurar o repositório Bitbucket
<a name="configure-the-bitbucket-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| (Opcional) Criar um repositório do Bitbucket.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)Você também pode usar um repositório do Bitbucket já existente. | DevOps engenheiro | 
| Abra as configurações do espaço de trabalho. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html) | DevOps engenheiro | 
| Crie um OAuth consumidor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html) | DevOps engenheiro | 
| Obtenha o token de OAuth acesso.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)`curl -X POST -u "KEY:SECRET" https://bitbucket.org/site/oauth2/access_token -d grant_type=client_credentials `Substitua `KEY` e `SECRET` pelos valores de chave e de segredo que você anotou anteriormente. 2. Grave o token de acesso sem usar as aspas. O token só é válido por um tempo limitado e o tempo padrão é de duas horas. Você deve executar o CloudFormation modelo da AWS nesse período. | DevOps engenheiro | 

### Crie e implante o AWS CloudFormation stack
<a name="create-and-deploy-the-aws-cloudformation-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
|  Baixe o CloudFormation modelo da AWS. | Baixe o CloudFormation modelo `bitbucket-amplify.yml` da AWS (em anexo). Esse modelo cria o CI/CD pipeline no Amplify, além do projeto e da ramificação do Amplify. |  | 
| Crie e implante o AWS CloudFormation stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)5. Escolha **Próximo** e, em seguida, **Criar pilha**. | DevOps engenheiro | 

### Teste o CI/CD pipeline
<a name="test-the-ci-cd-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implantar o código na ramificação do seu repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)Para obter mais informações, consulte [Comandos básicos do Git](https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html) na documentação do Bitbucket.  | Desenvolvedor de aplicativos | 

## Recursos relacionados
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-resources"></a>

[Métodos de autenticação](https://developer.atlassian.com/bitbucket/api/2/reference/meta/authentication) (documentação da Atlassian)

## Anexos
<a name="attachments-24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: [ attachment.zip](samples/p-attach/24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b/attachments/attachment.zip)

# Lance um CodeBuild projeto em várias contas da AWS usando Step Functions e uma função de proxy Lambda
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function"></a>

*Richard Milner-Watts e Amit Anjarlekar, Amazon Web Services*

## Resumo
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-summary"></a>

Esse padrão demonstra como iniciar de forma assíncrona um projeto da AWS CodeBuild em várias contas da AWS usando o AWS Step Functions e uma função de proxy do AWS Lambda. Você pode usar a máquina de estado Step Functions de amostra do padrão para testar o sucesso do seu CodeBuild projeto.

CodeBuild ajuda você a iniciar tarefas operacionais usando a AWS Command Line Interface (AWS CLI) a partir de um ambiente de tempo de execução totalmente gerenciado. Você pode alterar o comportamento do seu CodeBuild projeto em tempo de execução substituindo as variáveis de ambiente. Além disso, você pode usar CodeBuild para gerenciar fluxos de trabalho. Para obter mais informações, consulte [Service Catalog Tools](https://service-catalog-tools-workshop.com/tools.html) no site do AWS Workshop e [agende trabalhos no Amazon RDS for PostgreSQL usando a AWS e a EventBridge Amazon no blog do banco de dados CodeBuild da AWS](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/).

## Pré-requisitos e limitações
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**Pré-requisitos **
+ Duas contas ativas da AWS: uma conta de origem para invocar uma função de proxy Lambda com Step Functions e uma conta de destino para criar um CodeBuild projeto de amostra remoto

**Limitações**
+ Esse padrão não pode ser usado para copiar [artefatos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) entre contas.

## Arquitetura
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-architecture"></a>

O diagrama a seguir mostra a arquitetura que esse padrão cria.

![\[Diagrama de arquitetura do lançamento de um CodeBuild projeto em várias contas da AWS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. A máquina de estado do Step Functions analisa o mapa de entrada fornecido e invoca a função de proxy do Lambda (`codebuild-proxy-lambda`) para cada conta, região e projeto definidos.

1. A função de proxy do Lambda usa o AWS Security Token Service (AWS STS) para assumir um perfil de proxy do IAM (`codebuild-proxy-role`), que está associado a uma política do IAM (`codebuild-proxy-policy`) na conta de destino.

1. Usando a função assumida, a função Lambda inicia o CodeBuild projeto e retorna o ID do CodeBuild trabalho. A máquina de estado do Step Functions faz um loop e pesquisa a CodeBuild tarefa até receber um status de sucesso ou falha.

Na imagem a seguir, é apresentada a lógica da máquina de estado.

![\[Fluxo de trabalho da máquina de estado do Step Functions\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Pilha de tecnologia**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Ferramentas
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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.
+ O [AWS CloudFormation Designer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) fornece um editor JSON e YAML integrado que ajuda você a visualizar e editar CloudFormation modelos.
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é 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.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) é um serviço de orquestração com tecnologia sem servidor que permite combinar funções do AWS Lambda e outros serviços da AWS para criar aplicações essenciais aos negócios.
+ O [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) ajuda a coletar dados sobre solicitações que seu aplicativo atende e fornece ferramentas que você pode usar para visualizar, filtrar e obter informações sobre esses dados para identificar problemas e oportunidades de otimização.

**Código **

O código de amostra desse padrão está disponível no repositório GitHub [Cross Account CodeBuild Proxy](https://github.com/aws-samples/cross-account-codebuild-proxy). Esse padrão usa a biblioteca AWS Lambda Powertools for Python para fornecer funcionalidade de registro e rastreamento. Para obter mais informações sobre essa biblioteca e seus utilitários, consulte [Powertools para AWS Lambda (Python)](https://docs.powertools.aws.dev/lambda/python/latest/).

## Práticas recomendadas
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-best-practices"></a>

1. Ajuste os valores de tempo de espera na máquina de estado do Step Functions para reduzir ao mínimo as solicitações de buscas para o status do trabalho. Use o tempo de execução esperado para o CodeBuild projeto.

1. Ajuste a `MaxConcurrency` propriedade do mapa em Step Functions para controlar quantos CodeBuild projetos podem ser executados paralelamente.

1. Caso necessário, revise o código de amostra para assegurar sua adequação ao ambiente de produção. Considere quais dados podem ser registrados pela solução e se a CloudWatch criptografia padrão da Amazon é suficiente.

## Épicos
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-epics"></a>

### Crie a função de proxy Lambda e o perfil do IAM associada na conta de origem
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Registre a conta da AWS IDs. | A conta IDs da AWS é necessária para configurar o acesso entre contas.Registre a ID da conta da AWS para suas contas de origem e destino. Para obter mais informações, consulte [Como encontrar a ID da conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId) na documentação do IAM. | AWS DevOps | 
| Baixe os CloudFormation modelos da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Nos CloudFormation modelos da AWS, `<SourceAccountId>` é o ID da conta da AWS para a conta de origem e `<TargetAccountId>` é o ID da conta da AWS para a conta de destino. | AWS DevOps | 
| Crie e implante a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Você deve criar a CloudFormation pilha da AWS para a função proxy Lambda antes de criar qualquer recurso nas contas de destino. Quando você cria uma política de confiança em uma conta de destino, o perfil do IAM é traduzida do nome da função para um identificador interno. É por isso que o perfil do IAM já deve existir. | AWS DevOps | 
| Confirme a criação da função proxy e da máquina de estado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Crie uma função do IAM na conta de destino e lance um CodeBuild projeto de amostra
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e implante a CloudFormation pilha da AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Verifique a criação do CodeBuild projeto de amostra.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Teste a função de proxy do Lambda entre contas do Lambda
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie a máquina de estado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Valide as variáveis de ambiente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## Solução de problemas
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A execução do Step Functions está demorando mais do que o esperado. | Ajuste a `MaxConcurrency` propriedade do mapa na máquina de estado da Step Function para controlar quantos CodeBuild projetos podem ser executados paralelamente. | 
| A execução dos CodeBuild trabalhos está demorando mais do que o esperado. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 

# Gerenciamento do failover multi-AZ para clusters do EMR usando o Controlador de Recuperação de Aplicações
<a name="multi-az-failover-spark-emr-clusters-arc"></a>

*Aarti Rajput, Ashish Bhatt, Neeti Mishra e Nidhi Sharma, Amazon Web Services*

## Resumo
<a name="multi-az-failover-spark-emr-clusters-arc-summary"></a>

Este padrão oferece uma estratégia eficiente de recuperação de desastres para workloads do Amazon EMR, ajudando a garantir alta disponibilidade e consistência de dados em diversas zonas de disponibilidade dentro de uma única Região da AWS. O projeto emprega o [Controlador de Recuperação de Aplicações da Amazon](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) e um [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) para gerenciar operações de failover e de distribuição de tráfego em um cluster do EMR baseado em Apache Spark. 

Sob condições padrão, a zona de disponibilidade principal hospeda um cluster EMR ativo e um aplicativo com funcionalidade completa read/write . Se uma zona de disponibilidade falhar inesperadamente, o tráfego é automaticamente redirecionado para a zona de disponibilidade secundária, na qual um novo cluster do EMR é iniciado. Ambas as zonas de disponibilidade acessam um bucket compartilhado do Amazon Simple Storage Service (Amazon S3) por meio de [endpoints de gateway dedicados](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html), garantindo um gerenciamento consistente dos dados. Essa abordagem minimiza o tempo de inatividade e possibilita uma recuperação rápida para workloads críticas de big data durante falhas em zonas de disponibilidade. A solução é útil em setores como finanças ou comércio varejista, em que analytics em tempo real são essenciais.

## Pré-requisitos e limitações
<a name="multi-az-failover-spark-emr-clusters-arc-prereqs"></a>

**Pré-requisitos **
+ Uma [Conta da AWS](https://aws.amazon.com/resources/create-account/) ativa
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) na Amazon Elastic Compute Cloud (Amazon) EC2
+ Acesso do nó principal do cluster do EMR ao Amazon S3
+ AWS Infraestrutura Multi-AZ

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte a página [Cotas e endpoints de serviços](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ [Amazon EMR 6.x ou versões mais recentes](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)

## Arquitetura
<a name="multi-az-failover-spark-emr-clusters-arc-architecture"></a>

**Pilha de tecnologias de destino**
+ Cluster do Amazon EMR
+ Amazon Application Recovery Controller
+ Application Load Balancer
+ Bucket do Amazon S3.
+ Endpoints de gateway para o Amazon S3

**Arquitetura de destino**

![\[Arquitetura para um mecanismo de recuperação automatizado com o Controlador de Recuperação de Aplicações.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e5ecdb66-0eef-4a6a-8367-982a55104748/images/e982d580-13db-4bdd-9f6b-6400d7c31c01.png)


Esta arquitetura fornece resiliência para aplicações ao usar diversas zonas de disponibilidade e implementar um mecanismo de recuperação automatizado por meio do Controlador de Recuperação de Aplicações.

1. O Application Load Balancer encaminha o tráfego para o ambiente do Amazon EMR ativo, que normalmente é o cluster do EMR primário na zona de disponibilidade primária.

1. O cluster do EMR ativo processa as solicitações da aplicação e estabelece conexão com o Amazon S3 por meio do endpoint do gateway dedicado do Amazon S3 para operações de leitura e gravação.

1. O Amazon S3 funciona como um repositório central de dados e pode ser usado como ponto de verificação ou como armazenamento compartilhado entre clusters do EMR. Os clusters do EMR mantêm a consistência de dados quando gravam diretamente no Amazon S3 por meio do protocolo `s3://` e do [EMR File System (EMRFS)](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs.html). 

1. O Controlador de Recuperação de Aplicações monitora continuamente a integridade da zona de disponibilidade primária e gerencia automaticamente as operações de failover, quando necessário.

1. Se o Controlador de Recuperação de Aplicações detectar uma falha no cluster do EMR primário, ele executará as seguintes ações:
   + Iniciar o processo de failover para o cluster do EMR secundário, localizado na zona de disponibilidade 2.
   + Atualizar as configurações de roteamento para direcionar o tráfego ao cluster secundário.

## Ferramentas
<a name="multi-az-failover-spark-emr-clusters-arc-tools"></a>

**Serviços da AWS**
+ [O Amazon Application Recovery Controller****](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) ajuda você a gerenciar e coordenar a recuperação de seus aplicativos em todas Regiões da AWS as zonas de disponibilidade. Este serviço simplifica o processo e aumenta a confiabilidade da recuperação das aplicações ao reduzir as etapas manuais exigidas por ferramentas e processos tradicionais.
+ O [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) opera na camada de aplicação, que corresponde à sétima camada do modelo Open Systems Interconnection (OSI). Ele distribui o tráfego de entrada do aplicativo em vários destinos, como EC2 instâncias, em várias zonas de disponibilidade. Isso aumenta a disponibilidade do seu aplicativo.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ O [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) é uma plataforma de big data que fornece processamento de dados, análise interativa e machine learning para estruturas de código aberto, como Apache Spark, Apache Hive e Presto.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) fornece uma interface de serviço web simples que você pode usar para armazenar e recuperar qualquer volume de dados, a qualquer momento e de qualquer lugar. Com este serviço, é possível desenvolver, com facilidade, aplicações que aproveitem o armazenamento nativo da nuvem.
+ [Os endpoints de gateway para o Amazon](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) S3 são gateways que você especifica em sua tabela de rotas para acessar o Amazon S3 a partir da sua nuvem privada virtual (VPC) pela rede. AWS 

## Práticas recomendadas
<a name="multi-az-failover-spark-emr-clusters-arc-best-practices"></a>
+ Siga as [AWS best practices for security, identity, and compliance](https://aws.amazon.com/architecture/security-identity-compliance/?cards-all.sort-by=%5b…%5d.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all), a fim de garantir uma arquitetura robusta e segura.
+ Alinhe a arquitetura com o [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/).
+ Use a Concessão de Acesso do Amazon S3 para gerenciar o acesso do seu cluster do EMR baseado em Spark ao Amazon S3. Para obter detalhes, consulte a publicação do blog [Use Amazon EMR with S3 Access Grants to Scale Spark access to Amazon S3](https://aws.amazon.com/blogs/big-data/use-amazon-emr-with-s3-access-grants-to-scale-spark-access-to-amazon-s3/).
+ [Melhore o desempenho do Spark com o Amazon](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-performance.html) S3.

## Épicos
<a name="multi-az-failover-spark-emr-clusters-arc-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça login no Console de gerenciamento da AWS. | Faça login no [Console de gerenciamento da AWS](https://console.aws.amazon.com/) como um usuário do IAM. Para obter instruções, consulte a [documentação do AWS](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-iam-user-sign-in-tutorial.html). | AWS DevOps | 
| Configure AWS CLI o. **** | Instale o AWS CLI ou atualize-o para a versão mais recente para que você possa interagir com Serviços da AWS Console de gerenciamento da AWS o. Para obter instruções, consulte a [documentação do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). | AWS DevOps | 

### Implantação de uma aplicação do Spark em seu cluster do EMR
<a name="deploy-a-spark-application-on-your-emr-cluster"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um bucket do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Crie um cluster do EMR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Defina as configurações de segurança para o cluster do EMR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Conecte-se ao cluster do EMR. | Estabeleça conexão com o nó principal do cluster do EMR por meio de SSH utilizando o par de chaves fornecido.Certifique-se de que o arquivo do par de chaves esteja no mesmo diretório da sua aplicação.Execute os seguintes comandos para definir as permissões corretas para o par de chaves e estabelecer a conexão SSH:<pre>chmod 400 <key-pair-name><br />ssh -i ./<key-pair-name> hadoop@<master-node-public-dns></pre> | AWS DevOps | 
| Implante a aplicação do Spark. | Após estabelecer a conexão SSH, você estará no console do Hadoop.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Monitore a aplicação do Spark. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 

### Redirecionamento do tráfego para outra zona de disponibilidade
<a name="shift-traffic-to-another-availability-zone"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um Application Load Balancer. | Configure o grupo de destino que roteia o tráfego entre os nós principais do Amazon EMR implantados em duas zonas de disponibilidade dentro de uma Região da AWS.Para obter instruções, consulte [Create a target group for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) na documentação do Elastic Load Balancing. | AWS DevOps | 
| Configure a mudança de zona no Controlador de Recuperação de Aplicações. | Nesta etapa, você usará o [recurso de mudança de zona](https://docs.aws.amazon.com/r53recovery/latest/dg/arc-zonal-shift.html) no Controlador de Recuperação de Aplicações para redirecionar o tráfego para outra zona de disponibilidade.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html)Para usar o AWS CLI, consulte [Exemplos de uso do AWS CLI com mudança zonal](https://docs.aws.amazon.com/r53recovery/latest/dg/getting-started-cli-zonalshift.html) na documentação do Application Recovery Controller. | AWS DevOps | 
| Verifique a configuração e o progresso da mudança de zona. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 

## Recursos relacionados
<a name="multi-az-failover-spark-emr-clusters-arc-resources"></a>
+ AWS CLI comandos:
  + [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/create-cluster.html)
  + [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/describe-cluster.html)
  + [arc-zonal-shift](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/arc-zonal-shift/index.html)
+ [Configuring Amazon EMR cluster instance types and best practices for Spot instances](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-instances-guidelines.html) (documentação do Amazon EMR)
+ [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentação do IAM)
+ [Usar perfis de instância](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) (documentação do IAM)
+ [Use zonal shift and zonal autoshift to recovery applications in ARC](https://docs.aws.amazon.com/r53recovery/latest/dg/multi-az.html) (documentação do Controlador de Recuperação de Aplicações)

# Gerencie blue/green implantações de microsserviços em várias contas e regiões usando os serviços de código da AWS e as chaves multirregionais do AWS KMS
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys"></a>

*Balaji Vedagiri, Vanitha Dontireddy, Ashish Kumar, Faisal Shahdad, Vivek Thangamuthu e Anand Krishna Varanasi, Amazon Web Services*

## Resumo
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-summary"></a>

Esse padrão descreve como implantar um aplicativo global de microsserviços de uma conta central da AWS para várias contas de carga de trabalho e regiões de acordo com uma estratégia de blue/green implantação. O padrão suporta o seguinte:
+ O software é desenvolvido em uma conta central, enquanto as workloads e os aplicativos estão espalhados por várias contas e regiões da AWS.
+ Uma única chave multirregional do AWS Key Management System (AWS KMS) é usada para criptografia e descriptografia para abranger a recuperação de desastres.
+ A chave KMS é específica da região e precisa ser mantida ou criada em três regiões diferentes para artefatos do pipeline. Uma chave multirregional do KMS ajuda a manter a mesma ID de chave em todas as regiões.
+ O modelo de ramificação do fluxo de trabalho do Git é implementado com duas ramificações (desenvolvimento e principal) e o código é mesclado usando pull requests (). PRs A função do AWS Lambda que é implantada a partir dessa pilha cria um PR da ramificação de desenvolvimento para a ramificação principal. A fusão de relações públicas com a filial principal inicia um CodePipeline pipeline da AWS, que orquestra o fluxo de integração contínua e entrega contínua (CI/CD) e implanta as pilhas em todas as contas.

Esse padrão fornece um exemplo de configuração de infraestrutura como código (IaC) por meio de CloudFormation pilhas da AWS para demonstrar esse caso de uso. A blue/green implantação de microsserviços é implementada usando a AWS CodeDeploy.

## Pré-requisitos e limitações
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-prereqs"></a>

**Pré-requisitos **
+ Quatro contas ativas da AWS:
  + Uma conta de ferramentas para gerenciar o pipeline de código e manter o CodeCommit repositório da AWS.
  + Três contas de workload (teste) para implantar a workload de microsserviços.
+ Esse padrão usa as seguintes regiões. Se quiser usar outras regiões, você deve fazer as modificações apropriadas nas pilhas multirregionais da AWS CodeDeploy e do AWS KMS.
  + Conta de ferramentas (AWS CodeCommit): `ap-south-1`
  + Conta de workload (teste) 1: `ap-south-1`
  + Conta de workload (teste) 2: `eu-central-1`
  + Conta de workload (teste) 3: `us-east-1`
+ Três buckets do Amazon Simple Storage Service (Amazon S3) para as regiões de implantação em cada conta de workload. (Eles são chamados `S3BUCKETNAMETESTACCOUNT1`, `S3BUCKETNAMETESTACCOUNT2 ` e `S3BUCKETNAMETESTACCOUNT3 ` posteriormente, nesse padrão.)

  Por exemplo, você pode criar esses buckets em contas e regiões específicas com nomes de bucket exclusivos da seguinte forma (substitua *xxxx* por um número aleatório):

  ```
  ##In Test Account 1
  aws s3 mb s3://ecs-codepipeline-xxxx-ap-south-1 --region ap-south-1
  ##In Test Account 2
  aws s3 mb s3://ecs-codepipeline-xxxx-eu-central-1 --region eu-central-1
  ##In Test Account 3
  aws s3 mb s3://ecs-codepipeline-xxxx-us-east-1 --region us-east-1
  
  #Example
  ##In Test Account 1
  aws s3 mb s3://ecs-codepipeline-18903-ap-south-1 --region ap-south-1
  ##In Test Account 2
  aws s3 mb s3://ecs-codepipeline-18903-eu-central-1 --region eu-central-1
  ##In Test Account 3
  aws s3 mb s3://ecs-codepipeline-18903-us-east-1 --region us-east-1
  ```

**Limitações**

O padrão usa a AWS CodeBuild e outros arquivos de configuração para implantar um microsserviço de amostra. Se você tiver um tipo de workload diferente (por exemplo, tecnologia sem servidor), deverá atualizar todas as configurações relevantes.

## Arquitetura
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodeBuild
+ AWS CodeDeploy
+ AWS CodePipeline

**Arquitetura de destino**

![\[Arquitetura de destino para implantação de microsserviços em várias contas e regiões\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a144c977-6823-4b08-a215-fae779b3ce7c/images/eedfabdb-f266-4190-b271-5caf7ac9b47b.png)


**Automação e escala**

A configuração é automatizada usando modelos de CloudFormation pilha da AWS (IaC). Ele pode ser facilmente escalado para vários ambientes e contas.

## Ferramentas
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-tools"></a>

**Serviços da AWS**
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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.
+ A [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatiza implantações no Amazon Elastic Compute Cloud (Amazon EC2) ou em instâncias locais, funções do AWS Lambda ou serviços Amazon Elastic Container Service (Amazon ECS).
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 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)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+ O [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) é um serviço de gerenciamento de contêineres escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.
+ O [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Ferramentas adicionais**
+ [O Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto que funciona com o repositório da AWS. CodeCommit 
+ O [Docker](https://www.docker.com/) é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres. Esse padrão usa o Docker para compilar e testar imagens de contêiner localmente.
+ [cfn-lint](https://github.com/aws-cloudformation/cfn-lint) e [cfn-nag](https://github.com/stelligent/cfn_nag) são ferramentas de código aberto que ajudam você a analisar as CloudFormation pilhas em busca de erros e problemas de segurança.

**Repositório de código**

O código desse padrão está disponível no repositório de [ Blue/Green implantações GitHub globais em várias regiões e contas](https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline).

## Épicos
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-epics"></a>

### Definição de variáveis de ambiente
<a name="set-up-environment-variables"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exporte variáveis de ambiente para implantação CloudFormation de pilha. | Defina as variáveis de ambiente que serão usadas como entrada para as CloudFormation pilhas posteriormente nesse padrão.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Package e implemente as CloudFormation pilhas para a infraestrutura
<a name="package-and-deploy-the-cloudformation-stacks-for-the-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Clone o [repositório de amostra](https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline) em um novo repositório em seu local de trabalho:<pre>##In work location<br />git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git</pre> | AWS DevOps | 
| Empacote os recursos do Cloudformation. | Nesta etapa, você empacota os artefatos locais aos quais os CloudFormation modelos fazem referência para criar os recursos de infraestrutura necessários para serviços como Amazon Virtual Private Cloud (Amazon VPC) e Application Load Balancer.Os modelos estão disponíveis na pasta `Infra` do repositório de código.<pre>##In TestAccount1##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT1 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT1REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT1}.template</pre><pre>##In TestAccount2##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT2 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT2REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT2}.template</pre><pre>##In TestAccount3##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT3 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT3REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT3}.template</pre> | AWS DevOps | 
| Valide os modelos de pacote. | Valide os modelos de pacote:<pre>aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT1}.template<br /><br />aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT2}.template<br /><br />aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT3}.template</pre> | AWS DevOps | 
| Implante os arquivos do pacote nas contas de workload, | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Envie uma imagem de amostra e escale o Amazon ECS
<a name="push-a-sample-image-and-scale-amazon-ecs"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Envia uma imagem de amostra para o repositório do Amazon ECR. | Envia uma imagem de amostra (NGINX) para o repositório do Amazon Elastic Container Registry (Amazon ECR) chamado `web` (conforme definido nos parâmetros). Você pode personalizar a imagem conforme necessário.Para fazer login e definir as credenciais para enviar uma imagem para o Amazon ECR, siga as instruções na [documentação do Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).Os comandos são:<pre>  docker pull nginx<br />  docker images<br />  docker tag <imageid> aws_account_id.dkr.ecr.region.amazonaws.com/<web>:latest<br />  docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<web>:tag </pre> | AWS DevOps | 
| Escale o Amazon ECS e verifique o acesso. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Configurar serviços e recursos de código
<a name="set-up-code-services-and-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um CodeCommit repositório na conta de ferramentas. | Crie um CodeCommit repositório na conta de ferramentas usando o `codecommit.yaml` modelo, que está na `code` pasta do GitHub repositório. Você deve criar este repositório somente na única região em que planeja desenvolver o código.<pre>aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides  CodeCommitReponame=$CODECOMMITREPONAME \<br />ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml  --region $TOOLSACCOUNTREGION \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Crie um bucket do S3 para gerenciar artefatos gerados pelo. CodePipeline | Crie um bucket do S3 para gerenciar artefatos gerados CodePipeline usando o `pre-reqs-bucket.yaml` modelo, que está na `code` pasta do GitHub repositório. As pilhas devem ser implantadas em todas as três contas e regiões de workload (teste) e ferramentas.<pre>aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Configure uma chave KMS multirregional. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 
| Configure o CodeBuild projeto na conta de ferramentas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 
| Configure CodeDeploy em contas de carga de trabalho. | Use o `codedeploy.yaml` modelo na `code` pasta do GitHub repositório para configurar CodeDeploy em todas as três contas de carga de trabalho. A saída de `mainInfraStack` inclui os Amazon Resource Names (ARNs) do cluster Amazon ECS e o ouvinte do Application Load Balancer.Os valores das pilhas de infraestrutura já foram exportados e, portanto, são importados pelos modelos de CodeDeploy pilha.<pre>##WorkloadAccount1##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides  ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />##WorkloadAccount2##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />##WorkloadAccount3##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 

### Configurar CodePipeline na conta de ferramentas
<a name="set-up-codepipeline-in-the-tools-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um pipeline de código na conta de ferramentas. | Na conta de ferramentas, execute o comando:<pre>aws cloudformation deploy --stack-name ecscodepipelinestack --parameter-overrides  \<br />TestAccount1=$TESTACCOUNT1 TestAccount1Region=$TESTACCOUNT1REGION \<br />TestAccount2=$TESTACCOUNT2 TestAccount2Region=$TESTACCOUNT2REGION \<br />TestAccount3=$TESTACCOUNT3 TestAccount3Region=$TESTACCOUNT3REGION \<br />CMKARNTools=$CMKTROOLSARN CMKARN1=$CMKARN1 CMKARN2=$CMKARN2 CMKARN3=$CMKARN3 \<br />CodeCommitRepoName=$CODECOMMITREPONAME BucketStartName=$BUCKETSTARTNAME \<br />--template-file codepipeline.yaml --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Forneça acesso CodePipeline e CodeBuild funções na política de chaves do AWS KMS e na política de bucket do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Ligue e teste o pipeline
<a name="call-and-test-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Envie as alterações para o CodeCommit repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) |  | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe todos os recursos implantados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) |  | 

## Solução de problemas
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| As alterações que você confirmou no repositório não estão sendo implantadas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | 

## Recursos relacionados
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-resources"></a>
+ [Enviando uma imagem do Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) (documentação do Amazon ECR)
+ [Conecte-se a um CodeCommit repositório da AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) ( CodeCommit documentação da AWS)
+ [Solução de problemas da](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html) AWS CodeBuild ( CodeBuild documentação da AWS)

# Monitore os repositórios do Amazon ECR para obter permissões curinga usando o AWS e o AWS Config CloudFormation
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config"></a>

*Vikrant Telkar, Wassim Benhallam e Sajid Momin, Amazon Web Services*

## Resumo
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-summary"></a>

O, Amazon Web Services (AWS) Nuvem, Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado pelo registro de imagens de contêiner compatível com repositórios privados com permissões baseadas em recursos usando o AWS Identity and Access Management (IAM).

O IAM aceita o caractere “`*`” como coringa tanto nos atributos de recurso quanto nos atributos de ação, o que facilita a seleção automática de diversos itens correspondentes. Em seu ambiente de teste, você pode permitir que todos os usuários autenticados da AWS acessem um repositório Amazon ECR usando a [permissão curinga](https://docs.aws.amazon.com/lambda/latest/operatorguide/wildcard-permissions-iam.html) `ecr:*` em um elemento principal da [declaração de política do seu repositório](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html). A permissão curinga `ecr:*` pode ser útil ao desenvolver e testar em contas de desenvolvimento que não conseguem acessar seus dados de produção.

No entanto, você deve garantir que a permissão curinga `ecr:*` não seja usada em seus ambientes de produção, pois ela pode causar sérias vulnerabilidades de segurança. A abordagem desse padrão ajuda você a identificar repositórios do Amazon ECR que contêm a permissão curinga `ecr:*` nas declarações de política do repositório.   O padrão fornece etapas e um CloudFormation modelo da AWS para criar uma regra personalizada no AWS Config. Em seguida, uma função do AWS Lambda monitora suas declarações de política do repositório Amazon ECR em busca de permissões curinga `ecr:*`. Se encontrar declarações de política de repositório não compatíveis, o Lambda notifica o AWS Config para enviar um evento para a Amazon EventBridge e, em seguida, inicia um tópico do EventBridge Amazon Simple Notification Service (Amazon SNS). O tópico do SNS notifica você por e-mail sobre as declarações de política de repositório não compatíveis.

## Pré-requisitos e limitações
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ AWS Command Line Interface (AWS CLI), instalada e configurada. Para obter mais informações, consulte [Instalação, atualização e desinstalação da AWS CLI ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)na documentação da AWS CLI.
+ Um repositório Amazon ECR existente com uma declaração de política anexada, instalado e configurado em seu ambiente de teste. Para obter mais informações sobre isso, consulte [Criação de um repositório privado](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) e [Definição de uma declaração de política de repositório na documentação](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html) do Amazon ECR.
+ AWS Config, configurado em sua região preferida da AWS. Para obter mais informações sobre isso, consulte [Conceitos básicos do AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html) na documentação do AWS Config.
+ O arquivo `aws-config-cloudformation.template` (anexado), baixado na sua máquina local.

 

**Limitações**
+ A solução desse padrão é regional e seus recursos devem ser criados na mesma região. 

## Arquitetura
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-architecture"></a>

O diagrama a seguir mostra como o AWS Config avalia as declarações de política do repositório Amazon ECR. 

![\[AWS Config workflow with Lambda, Amazon ECR, EventBridge, SNS, and email notification components.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/01bbf5f8-27aa-4c64-9a03-7fcccc0955b8/images/49bbf14b-0a18-4d4a-86ab-162d37708e01.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. O AWS Config inicia uma regra personalizada. 

1. A regra personalizada invoca uma função do Lambda para avaliar a conformidade das declarações de política do repositório Amazon ECR. A função do Lambda então identifica declarações de política de repositório não compatíveis.

1. A função do Lambda envia o estado de não conformidade atualizado para o AWS Config.

1. O AWS Config envia um evento para. EventBridge

1. EventBridge publica as notificações de não conformidade em um tópico do SNS.

1. O Amazon SNS envia um alerta por e-mail para você ou para um usuário autorizado.

**Automação e escala**

A solução desse padrão pode monitorar qualquer número de declarações de política do repositório Amazon ECR, mas todos os recursos que você deseja avaliar devem ser criados na mesma região.

## Ferramentas
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS ajuda você a modelar e configurar seus recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida. Você pode usar um modelo para descrever seus recursos e as dependências deles, além de inicializá-los e configurá-los juntos como uma pilha, em vez de gerenciar recursos individualmente. Você pode gerenciar e provisionar pilhas em várias contas e regiões da AWS.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html): o AWS Config oferece uma exibição detalhada da configuração dos recursos da AWS em sua conta da AWS. Isso inclui como os recursos estão relacionados um com o outro e como eles foram configurados no passado, de modo que você possa ver como os relacionamentos e as configurações foram alterados ao longo do tempo.
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html):** ******o Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de imagem de contêiner, seguro, escalável e confiável. O Amazon ECR oferece suporte a repositórios privados com permissões baseadas em recursos usando o IAM.                                 
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) — EventBridge A Amazon é um serviço de ônibus de eventos sem servidor que você pode usar para conectar seus aplicativos a dados de várias fontes. EventBridge fornece um fluxo de dados em tempo real de seus aplicativos, aplicativos de software como serviço (SaaS) e serviços da AWS para destinos como funções do AWS Lambda, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outras contas.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): o AWS Lambda é um serviço de computação que permite a execução do código sem provisionar ou gerenciar servidores O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. Você paga apenas pelo tempo de computação consumido. Não haverá cobranças quando o código não estiver em execução.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): o Amazon Simple Notiﬁcation Service (Amazon SNS) é um serviço da Web que coordena e gerencia a entrega ou o envio de mensagens entre publicadores e clientes, incluindo servidores da Web e endereços de e-mail. Os assinantes recebem todas as mensagens publicadas nos tópicos para os quais eles se inscrevem, e todos os assinantes em um tópico recebem as mesmas mensagens. 

**Código **

O código desse padrão está disponível no arquivo `aws-config-cloudformation.template` (anexado).

## Épicos
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-epics"></a>

### Crie a CloudFormation pilha da AWS
<a name="create-the-aws-cloudformation-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a CloudFormation pilha da AWS. | Crie uma CloudFormation pilha da AWS executando o seguinte comando na AWS CLI:<pre>$ aws cloudformation create-stack --stack-name=AWSConfigECR \<br />    --template-body  file://aws-config-cloudformation.template \<br />    --parameters ParameterKey=<email>,ParameterValue=<myemail@example.com> \<br />    --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 

### Teste a regra personalizada do AWS Config
<a name="test-the-aws-config-custom-rule"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Teste a regra personalizada do AWS Config. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.html) | AWS DevOps | 

## Anexos
<a name="attachments-01bbf5f8-27aa-4c64-9a03-7fcccc0955b8"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/01bbf5f8-27aa-4c64-9a03-7fcccc0955b8/attachments/attachment.zip)

# Otimize implantações sem servidor de várias contas usando os fluxos de trabalho e Actions AWS CDK GitHub
<a name="optimize-multi-account-serverless-deployments"></a>

*Sarat Chandra Pothula e VAMSI KRISHNA SUNKAVALLI, Amazon Web Services*

## Resumo
<a name="optimize-multi-account-serverless-deployments-summary"></a>

Organizações que implantam infraestrutura sem servidor em vários ambientes de rede geralmente enfrentam desafios como duplicação de código, processos manuais Contas da AWS e práticas inconsistentes. A solução desse padrão mostra como usar os fluxos de trabalho reutilizáveis AWS Cloud Development Kit (AWS CDK) in Go and GitHub Actions para agilizar o gerenciamento de infraestrutura sem servidor de várias contas. Essa solução demonstra como você pode definir recursos de nuvem como código, implementar processos padronizados de integration/continuous implantação contínua (CI/CD) e criar componentes modulares e reutilizáveis. 

Ao usar essas ferramentas, as organizações podem gerenciar com eficiência os recursos entre contas, implementar pipelines de implantação consistentes e simplificar arquiteturas complexas sem servidor. A abordagem também aprimora a segurança e a conformidade ao impor práticas padronizadas para uso com Contas da AWS, em última análise, melhorando a produtividade e reduzindo os erros no desenvolvimento e na implantação de aplicativos sem servidor.

## Pré-requisitos e limitações
<a name="optimize-multi-account-serverless-deployments-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ AWS Identity and Access Management As [funções e permissões](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam.html) (IAM) estão em vigor para o processo de implantação. Isso inclui permissões para acessar repositórios do Amazon Elastic Container Registry (Amazon ECR), AWS Lambda criar funções e quaisquer outros recursos necessários em todo o destino. Contas da AWS
+ AWS Command Line Interface [(AWS CLI) versão 2.9.11 ou posterior, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) e configurada.](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ AWS Cloud Development Kit (AWS CDK) [versão 2.114.1 ou posterior, [instalada](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) e inicializada.](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap)
+ Go 1.22 ou posterior [instalado](https://go.dev/doc/install).
+ Docker 24.0.6 ou posterior, [instalado](https://docs.docker.com/engine/install/).

**Limitações**
+ **Compatibilidade de idiomas**: o Go é uma linguagem popular para aplicações sem servidor. No entanto, além do Go, o AWS CDK suporta outras linguagens de programação, incluindo C\$1, Java, Python e. TypeScript Se sua organização já tem bases de código ou experiência em outras linguagens, talvez seja necessário adaptar ou aprender Go para usar totalmente a solução descrita no padrão.
+ **Curva de aprendizado** — A adoção do AWS CDK, Go (se for novo na organização) e fluxos de trabalho GitHub reutilizáveis pode envolver uma curva de aprendizado para desenvolvedores e equipes. DevOps Treinamento e documentação podem ser necessários para garantir a adoção tranquila e o uso eficaz dessas tecnologias.

## Arquitetura
<a name="optimize-multi-account-serverless-deployments-architecture"></a>

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

![\[Arquitetura dos fluxos de trabalho do AWS CDK e do GitHub Actions para gerenciamento de infraestrutura sem servidor de várias contas.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/8d61917b-bd27-44fa-ae95-55358aaf8812/images/a4b36793-95c7-42f7-a92f-99b4722c9c64.png)


Esta solução executa as seguintes etapas:

1. O desenvolvedor clona o repositório, cria uma nova ramificação e faz alterações no código da aplicação em seu ambiente local.

1. O desenvolvedor confirma essas alterações e envia a nova ramificação para o GitHub repositório.

1. O desenvolvedor cria uma pull request no GitHub repositório, propondo mesclar seu recurso ou nova ramificação de recurso na ramificação principal.

1. Essa pull request aciona o fluxo de trabalho de GitHub ações de integração contínua (CI). Os fluxos de trabalho de CI e implantação contínua (CD) neste padrão usam fluxos de trabalho reutilizáveis, que são modelos modulares predefinidos que podem ser compartilhados e executados em diferentes projetos ou repositórios. Fluxos de trabalho reutilizáveis promovem padronização e eficiência nos processos. CI/CD 

1. O fluxo de trabalho de CI configura o ambiente necessário, gera uma marcação Docker para a imagem e cria a imagem do Docker usando o código da aplicação. 

1. O fluxo de trabalho de CI é AWS autenticado usando a função central do Conta da AWS GitHub OIDC. Para fluxos de trabalho de CI, a função central do Conta da AWS GitHub OIDC usa AWS Security Token Service (AWS STS) para obter credenciais temporárias. Essas credenciais permitem que a função crie e envie imagens do Docker para o repositório Amazon ECR da central. Conta da AWS

1. O fluxo de trabalho de CI envia a imagem do Docker criada para o Amazon ECR.

1. O fluxo de trabalho do CI armazena a marcação da imagem no Systems Manager Parameter Store.

1. Depois que o fluxo de trabalho de CI for concluído com êxito, a marcação de imagem do Docker será gerada. 

1. Ao acionar o fluxo de trabalho de CD, o desenvolvedor insere manualmente a marcação de imagem da imagem do Docker que deseja implantar. Essa marcação de imagem corresponde à marcação que foi gerada e enviada para o Amazon ECR durante o fluxo de trabalho de CI.

1. O desenvolvedor aciona manualmente o fluxo de trabalho de CD, que usa o fluxo de trabalho reutilizável do CD. 

1. O fluxo de trabalho do CD é autenticado AWS usando a função central do Conta da AWS GitHub OIDC. Para o fluxo de trabalho do CD, AWS STS é usado primeiro para assumir a função central do Conta da AWS GitHub OIDC. Em seguida, esse perfil assume os perfis de bootstrap do CDK para implantações de contas de destino. 

1. O fluxo de trabalho do CD usa o AWS CDK para sintetizar modelos AWS CloudFormation .

1. O fluxo de trabalho do CD implanta o aplicativo no destino Conta da AWS usando o CDK deploy, usando a tag de imagem especificada manualmente para a função Lambda.

## Ferramentas
<a name="optimize-multi-account-serverless-deployments-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS CloudFormation é parte integrante do processo AWS CDK de implantação. O CDK sintetiza CloudFormation modelos e depois usa CloudFormation para criar ou atualizar os recursos no ambiente. AWS 
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ AWS Systems Manager O [Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) fornece armazenamento seguro e hierárquico para gerenciamento de dados de configuração e gerenciamento de segredos.

**Outras ferramentas**
+ O [Docker](https://www.docker.com/) é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres.
+ GitHub O [Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.
+ O [Go](https://go.dev/doc/install) é uma linguagem de programação de código aberto compatível com o Google.

**Repositório de código**

O código desse padrão está disponível no cicd-github-actions repositório GitHub [aws-cdk-golang-serverless-](https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions).

## Práticas recomendadas
<a name="optimize-multi-account-serverless-deployments-best-practices"></a>
+ **Design modular** — Organize seu AWS CDK código em construções ou pilhas modulares e reutilizáveis, promovendo a reutilização e a manutenção do código em várias contas e projetos.
+ **Separação de preocupações**: separe o código da infraestrutura do código da aplicação, permitindo a implantação e o gerenciamento independentes de cada componente.
+ **Versionamento e imutabilidade**: trate sua infraestrutura como código (IaC) e use o Git para controle de versões. Adote princípios de infraestrutura imutáveis criando novos recursos em vez de modificar os existentes.
+ **Teste e validação** — Implemente estratégias de teste abrangentes, incluindo testes unitários, testes de integração e end-to-end testes, para ajudar a apoiar a exatidão e a confiabilidade de seu AWS CDK código e implantações.
+ **Segurança e conformidade** — siga as melhores práticas de AWS segurança, como acesso com privilégios mínimos, comunicação segura e criptografia de dados. Implemente verificações de conformidade e mecanismos de auditoria para garantir a adesão às políticas organizacionais e aos requisitos regulatórios. Implemente as práticas recomendadas de segurança para imagens de contêineres, como verificar vulnerabilidades, impor a assinatura de imagens e cumprir os requisitos de conformidade de sua organização.
+ **Monitoramento e registro em log**: configure mecanismos de monitoramento e registro em log para rastrear a integridade e a performance de suas aplicações e infraestruturas sem servidor. Use Serviços da AWS como Amazon CloudWatch, AWS CloudTrail, e AWS X-Ray para fins de monitoramento e auditoria.
+ **Automação e CI/CD** — Use fluxos de trabalho GitHub reutilizáveis e outras CI/CD ferramentas para automatizar os processos de criação, teste e implantação, o que pode ajudar a suportar implantações consistentes e repetíveis em várias contas.
+ **Gerenciamento do ambiente**: mantenha ambientes separados (por exemplo, desenvolvimento, preparação e produção). Implemente estratégias para promover mudanças entre ambientes, garantindo testes e validação adequados antes das implantações de produção.
+ **Documentação e colaboração**: documente seu código de infraestrutura, processos de implantação e práticas recomendadas para facilitar o compartilhamento de conhecimento e a colaboração em sua equipe.
+ **Otimização de custos** — implemente estratégias de monitoramento e otimização de custos, como o dimensionamento correto dos recursos, o uso do auto-scaling e o aproveitamento de serviços de otimização de AWS custos, como e. AWS Budgets AWS Cost Explorer
+ **Recuperação de desastres e backup**: planeje cenários de recuperação de desastres implementando mecanismos de backup e restauração para suas aplicações sem servidor e recursos de infraestrutura.
+ **Melhoria contínua**: revise regularmente e atualize suas práticas, ferramentas e processos para se alinhar às práticas recomendadas, recomendações de segurança e avanços tecnológicos mais recentes no ecossistema sem servidor.
+ **Melhore a postura de segurança** — Use [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)para melhorar a postura de segurança de sua nuvem privada virtual (VPC) configurando endpoints de VPC de interface para Amazon ECR e Parameter Store. AWS Lambda AWS Systems Manager 

## Épicos
<a name="optimize-multi-account-serverless-deployments-epics"></a>

### Configurar os ambientes
<a name="set-up-the-environments"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um repositório Amazon ECR na central. Conta da AWS | Para compartilhar imagens de contêineres entre várias Contas da AWS, você deve configurar o acesso entre contas para o Amazon ECR. Primeiro, crie um repositório Amazon ECR na central. Conta da AWSPara criar um repositório do Amazon ECR, execute o seguinte comando:<pre>aws ecr create-repository --repository-name sample-repo</pre>Em uma tarefa posterior, conceda acesso de pull à outra pessoa Contas da AWS que precisa usar a imagem do contêiner. | AWS DevOps | 
| Adicione permissões entre contas ao repositório do Amazon ECR. | Para adicionar permissões entre contas ao repositório Amazon ECR na central Conta da AWS, execute o seguinte código:<pre>{<br />  "Version": "2008-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "LambdaECRImageRetrievalPolicy",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Service": "lambda.amazonaws.com"<br />      },<br />      "Action": [<br />        "ecr:BatchGetImage",<br />        "ecr:GetDownloadUrlForLayer",<br />      ],<br />      "Condition": {<br />        "StringLike": {<br />          "aws:sourceArn": "arn:aws:lambda:<Target_Region>:<Target_Account_ID>:function:*"<br />        }<br />      }<br />    },<br />    {<br />      "Sid": "new statement",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "AWS": "arn:aws:iam::<Target_Account_ID>:root"<br />        },<br />      "Action": [<br />        "ecr:BatchGetImage",<br />        "ecr:GetDownloadUrlForLayer",<br />      ],<br />    }<br />  ] <br />}</pre> | AWS DevOps | 
| Configure uma função para a função GitHub OIDC na central. Conta da AWS | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | AWS DevOps | 
| Inicialize o AWS ambiente no destino. Contas da AWS | Configure um ambiente CDK em um ambiente específico Conta da AWS e Região da AWS que permita implantações entre contas a partir de uma conta central e aplique princípios de privilégios mínimos à função de execução. CloudFormation Para [inicializar](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) um AWS ambiente, execute o seguinte comando:<pre>cdk bootstrap aws://<Target_Account_ID>/<Target_Region> --trust <Central_Account_ID> --cloudformation-execution-policies arn:aws:iam::aws:policy/<Least_Privilege_Policy></pre> | AWS DevOps | 
| Conceda acesso à função central do Conta da AWS OIDC às funções de Conta da AWS bootstrap de destino. | O bootstrap do CDK cria as seguintes funções do IAM, projetadas para serem assumidas pela central Conta da AWS durante vários estágios do processo de implantação do CDK:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)Cada perfil tem permissões específicas adaptadas à sua finalidade, seguindo o princípio de privilégios mínimos. O `Target_Account_ID` e `Target_Region` em cada nome de função ajuda a indicar que essas funções são exclusivas em diferentes Contas da AWS regiões. Esse método oferece suporte à identificação e ao gerenciamento claros em configurações com várias contas e várias regiões.<pre>Target Account CDK Bootstrap Roles<br />arn:aws:iam::<Target_Account_ID>:role/cdk-deploy-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-file-publishing-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-image-publishing-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-lookup-role-<Target_Account_ID>-<Target_Region></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)Para atualizar a política de permissões para a função do OIDC na central Conta da AWS, use o código a seguir:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "sts:AssumeRole",<br />            "Resource": [<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-deploy-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-file-publishing-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-image-publishing-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-lookup-role-<Target_Account_ID>-<Target_Region>"<br />            ]<br />        }<br />    ]<br /> }<br /></pre> | AWS DevOps | 

### Criar a imagem do Docker
<a name="build-the-docker-image"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório do projeto. | Para clonar o [GitHub repositório](https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions) desse padrão, execute o seguinte comando:<pre>git clone https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions.git</pre> | AWS DevOps | 
| Vá para o caminho do Dockerfile. | Para navegar até o caminho do Dockerfile, execute o seguinte comando:<pre>cd lambda</pre> | AWS DevOps | 
| Autentique o Docker com o Amazon ECR | O Amazon ECR exige acesso seguro aos seus repositórios de contêineres privados. Ao assinar dessa forma, você está permitindo que o Docker em sua máquina ou CI/CD ambiente local interaja com o Amazon ECR de forma segura.Para autenticar o Docker com o Amazon ECR, execute o seguinte comando:<pre>aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com</pre>Revise os espaços reservados `AWS_REGION` e `AWS_Account_ID` com suas informações. | AWS DevOps | 
| Crie a imagem do Docker. | Para criar a imagem do Docker, excute o seguinte comando:<pre>docker build --platform linux/arm64 -t sample-app .</pre> | AWS DevOps | 
| Marcar e enviar por push a imagem do Docker. | Para marcar a imagem do Docker e enviá-la por push para o repositório do Amazon ECR, execute os seguintes comandos:<pre>docker tag sample-app:latest <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<ECR_REPOSITORY>:<DOCKER_TAG></pre><pre>docker push <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<ECR_REPOSITORY>:<DOCKER_TAG></pre>Revise os espaços reservados`AWS_Account_ID`, `AWS_REGION`, `ECR_REPOSITORY` e `DOCKER_TAG` com suas informações. | AWS DevOps | 

### Implemente o AWS CDK aplicativo
<a name="deploy-the-cdk-app"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Sintetize a pilha do CDK com variáveis específicas do ambiente. | Para gerar o CloudFormation modelo para sua infraestrutura conforme definido no seu código CDK, execute o seguinte comando:<pre>ENV=<environment> IMAGETAG=<image_tag> ECR_ARN=<ecr_repo_arn> cdk synth</pre>Revise os seguintes espaços reservados com suas próprias informações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | AWS DevOps | 
| Implante a pilha do CDK. | Para implantar a pilha CDK na sua Conta da AWS, execute o comando a seguir. O sinalizador `--require-approval never` indica que o CDK aprovará e executará automaticamente *todas as* alterações. Isso inclui alterações que o CDK normalmente sinalizaria para revisão manual, como alterações em políticas do IAM ou remoção de recursos. Certifique-se de que o código e o CI/CD pipeline do CDK estejam bem testados e seguros antes de usar a `--require-approval never` bandeira em ambientes de produção.<pre>ENV=<environment> IMAGETAG=<image_tag> ECR_ARN=<ecr_repo_arn> cdk deploy --require-approval never</pre> | AWS DevOps | 

### Automatize CI/CD usando fluxos de trabalho de GitHub ações
<a name="automate-ci-cd-using-github-actions-workflows"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma ramificação de recursos e adicione suas alterações. | Use o repositório clonado que você criou anteriormente, crie uma ramificação de recursos e adicione suas alterações ao código da aplicação. Use os seguintes comandos:<pre>git checkout -b <feature_branch><br />git add .<br />git commit -m "add your changes"<br />git push origin <feature_branch></pre>Veja a seguir exemplos de mudanças:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)GitHub As ações usarão os fluxos de trabalho reutilizáveis e acionarão os pipelines. CI/CD  | AWS DevOps | 
| Mescle suas alterações. | Crie uma solicitação de pull e mescle suas alterações com a principal. | AWS DevOps | 

## Solução de problemas
<a name="optimize-multi-account-serverless-deployments-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| `AccessDenied`erros ao implantar recursos em Contas da AWS, por exemplo,`AccessDenied: User not authorized to perform: "sts:AssumeRole"`. | Para ajudar a resolver esse problema, faça o seguinte para verificar as permissões entre contas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 
| Problemas de compatibilidade devido a incompatibilidades de versão, por exemplo, erro `undefined: awscdkStack` com uma versão desatualizada do CDK. | Para ajudar a resolver esse problema, faça o seguinte para verificar se você está usando as versões necessárias do AWS CDK e do Go:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 
| Falhas no pipeline de CI/CD, por exemplo, `Error: No such file or directory` devido à configuração incorreta do YAML ou `Permission denied` devido a ramificações protegidas. | Para ajudar a resolver problemas com a configuração GitHub das Ações, verifique se os fluxos de trabalho reutilizáveis estão devidamente referenciados e configurados. | 

## Recursos relacionados
<a name="optimize-multi-account-serverless-deployments-resources"></a>

**Recursos da AWS**
+ [AWS Práticas recomendadas de segurança, identidade e conformidade](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [AWS CDK Workshop](https://cdkworkshop.com/60-go.html)
+ [AWS Biblioteca do Cloud Development Kit](https://pkg.go.dev/github.com/aws/aws-cdk-go/awscdk/v2)
+ [Criar uma função do Lambda usando uma imagem de contêiner](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)
+ [Identity and Access Management para Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam.html)
+ [Trabalhar com o AWS CDK em Go](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-go.html)

**Outros recursos**
+ [Configurando o OpenID Connect na Amazon](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Web GitHub Services (documentação)
+ [Documentação do Golang](https://golang.org/doc/)
+ Guia de [início rápido para GitHub ações](https://docs.github.com/en/actions/writing-workflows/quickstart) (GitHub documentação)
+ [Reutilização de fluxos de trabalho (documentação](https://docs.github.com/en/actions/sharing-automations/reusing-workflows)) GitHub 

# Provisione AWS Service Catalog produtos com base em AWS CloudFormation modelos usando GitHub Ações
<a name="provision-aws-service-catalog-products-using-github-actions"></a>

*Ashish Bhatt e Ruchika Modi, Amazon Web Services*

## Resumo
<a name="provision-aws-service-catalog-products-using-github-actions-summary"></a>

Esse padrão fornece às organizações uma abordagem simplificada usando [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)produtos e portfólios para provisionar de forma padronizada e compatível Serviços da AWS entre as equipes. [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda a combinar componentes essenciais nos produtos e portfólios do Service Catalog para provisionar a infraestrutura de rede básica em. Nuvem AWS[Esse padrão também promove DevOps práticas ao integrar a infraestrutura como código (IaC) em fluxos de trabalho de desenvolvimento automatizados usando ações. GitHub ](https://github.com/features/actions)

AWS Service Catalog permite que as organizações criem e gerenciem serviços de TI aprovados AWS, oferecendo benefícios como padronização, controle centralizado, provisionamento de autoatendimento e gerenciamento de custos. Ao automatizar a implantação de portfólios e produtos do Service Catalog por meio do GitHub Actions, as empresas podem fazer o seguinte:
+ Obtenha implantações consistentes e reproduzíveis. 
+ Use o controle de versão para IaC. 
+ Integre o gerenciamento de recursos de nuvem aos fluxos de trabalho de desenvolvimento existentes. 

Essa combinação simplifica as operações na nuvem, reforça a conformidade e acelera a entrega de serviços aprovados, ao mesmo tempo em que reduz os erros manuais e melhora a eficiência geral.

## Pré-requisitos e limitações
<a name="provision-aws-service-catalog-products-using-github-actions-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS 
+ Acesso ao [GitHub repositório](https://docs.github.com/en/get-started/quickstart/create-a-repo)
+ Compreensão básica de AWS CloudFormation e AWS Service Catalog
+ Um bucket do Amazon Simple Storage Service (Amazon S3) para hospedar modelos CloudFormation 
+ Uma função AWS Identity and Access Management (IAM) chamada `github-actions` que é usada para conectividade entre GitHub e AWS

**Limitações**
+ O código reutilizável desse padrão foi testado somente com GitHub Actions.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**

A solução desse padrão foi criada usando as seguintes ações do [GitHub Marketplace](https://github.com/marketplace) e suas respectivas versões:
+ `actions/checkout@v4`
+ `aws-actions/configure-aws-credentials@v2`
+ `aws-actions/aws-cloudformation-github-deploy@v1.2.0`

## Arquitetura
<a name="provision-aws-service-catalog-products-using-github-actions-architecture"></a>

O diagrama apresentado a seguir ilustra a arquitetura para esta solução.

![\[Usando GitHub Actions para provisionar produtos do Service Catalog com base em CloudFormation modelos.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/49f82fa7-0c74-4581-bf92-95505dca264c/images/a13c7b41-534e-4a9e-bdca-2974fa40a49a.png)


1. Administradores ou engenheiros de plataforma enviam CloudFormation modelos padronizados para um GitHub repositório, onde os modelos são mantidos. O GitHub repositório também contém fluxos de trabalho que automatizam o provisionamento do uso de ações. AWS Service Catalog GitHub 

1. GitHub As ações acionam um fluxo de trabalho que se conecta ao Nuvem AWS uso de um provedor OpenID Connect (OIDC) para provisionar o Service Catalog.

1. O Service Catalog contém o portfólio e os produtos que os desenvolvedores podem usar diretamente para provisionar AWS recursos padronizados. Esse padrão agrupa AWS recursos como nuvens privadas virtuais (VPCs), sub-redes, gateways NAT e de internet e tabelas de rotas.

1. Depois que o desenvolvedor cria um produto do Service Catalog, o Service Catalog o converte em recursos pré-configurados e padronizados AWS . Como resultado, os desenvolvedores economizam tempo porque não precisam provisionar recursos individuais e configurá-los manualmente.

## Ferramentas
<a name="provision-aws-service-catalog-products-using-github-actions-tools"></a>

**Serviços da AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWSÉ um serviço de infraestrutura como código (IaC) que pode ser facilmente usado como um dos tipos de produto com AWS Service Catalog.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted.html)ajuda você a gerenciar centralmente o catálogo de serviços de TI aprovados AWS. Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Outros**
+ GitHub O [Actions](https://docs.github.com/en/actions) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [service-catalog-with-github-actions](https://github.com/aws-samples/service-catalog-with-github-actions). O repositório contém os seguintes arquivos de interesse:
+ `github/workflows`:
  + `e2e-test.yaml`— Esse arquivo chama`workflow.yaml`, que é o fluxo de trabalho [reutilizável](https://docs.github.com/en/actions/sharing-automations/reusing-workflows). Esse fluxo de trabalho é acionado assim que há uma confirmação e um push em uma ramificação.
  + `workflow.yaml`— Esse arquivo contém o fluxo de trabalho reutilizável dessa solução e é configurado `workflow_call` como acionador. Como um fluxo de trabalho reutilizável, `workflow.yaml` pode ser chamado de qualquer outro fluxo de trabalho.
+ `templates`:
  + `servicecatalog-portfolio.yaml`— Esse CloudFormation modelo inclui recursos que provisionam o portfólio do Service Catalog e o produto Service Catalog. O modelo contém um conjunto de parâmetros que são usados durante o provisionamento do portfólio e dos produtos do Service Catalog. Um parâmetro aceita uma URL de arquivo do Amazon S3 na qual o modelo `vpc.yaml` é carregado. Embora esse padrão inclua o `vpc.yaml` arquivo para provisionar AWS recursos, você também pode usar o parâmetro URL do arquivo S3 para configuração.
  + `vpc.yaml`— Esse CloudFormation modelo contém AWS recursos a serem adicionados ao produto Service Catalog. AWS os recursos incluem sub-redes VPCs, gateways de internet, gateways NAT e tabelas de rotas. O `vpc.yaml` modelo é um exemplo de como você pode usar qualquer CloudFormation modelo com um modelo de portfólio e produto do Service Catalog.

## Práticas recomendadas
<a name="provision-aws-service-catalog-products-using-github-actions-best-practices"></a>
+ Consulte [as melhores práticas de segurança AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-best-practices.html) na AWS Service Catalog documentação. 
+ Consulte [Fortalecimento de segurança para GitHub ações](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions) na GitHub documentação.

## Épicos
<a name="provision-aws-service-catalog-products-using-github-actions-epics"></a>

### Configuração da estação de trabalho local
<a name="set-up-local-workstation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o Git na sua estação de trabalho local. | Para instalar e configurar o Git em sua estação de trabalho local, use as [instruções de Introdução — Instalação do Git na documentação do Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). | Desenvolvedor de aplicativos | 
| Clone o repositório do GitHub projeto. | Para clonar o repositório GitHub do projeto, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps engenheiro | 

### Configurar o provedor OIDC
<a name="set-up-the-oidc-provider"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure um provedor OIDC. | Crie um provedor OpenID Connect (OIDC) que permita que os fluxos de trabalho do GitHub Actions acessem recursos sem precisar armazenar as AWS credenciais como segredos duradouros. AWS GitHub Para obter instruções, consulte [Configuração do OpenID Connect na Amazon](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Web Services GitHub na documentação.Depois que um provedor OIDC for configurado, a política de confiança da função do IAM`github-actions`, mencionada anteriormente nos [Pré-requisitos](#provision-aws-service-catalog-products-using-github-actions-prereqs), será atualizada. | Administrador da AWS, AWS DevOps, AWS geral | 

### Pipeline Trigger GitHub Actions para implantar o portfólio e os produtos do Service Catalog
<a name="trigger-github-actions-pipeline-to-deploy-sc-portfolio-and-products"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualizar `e2e-test.yaml`. | O `e2e-test.yaml` arquivo aciona o fluxo de trabalho reutilizável em. `workflow.yaml` Atualize e valide os valores dos seguintes parâmetros de entrada em`e2e-test.yaml`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps engenheiro | 

### Valide a implantação
<a name="validate-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide os recursos do Service Catalog. | Para validar os recursos do Service Catalog, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | AWS DevOps | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua a CloudFormation pilha. | Para excluir a CloudFormation pilha, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html)Para obter mais informações, consulte [Excluir uma pilha do CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) na documentação CloudFormation  | DevOps engenheiro, administrador da AWS | 

## Solução de problemas
<a name="provision-aws-service-catalog-products-using-github-actions-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| `e2e-test``Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '*/home/runner/work/service-catalog-with-github-actions/service-catalog-with-github-actions``Did you forget to run actions/checkout before running your local action?` | Para garantir que você tenha as configurações corretas do repositório habilitadas, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | 

## Recursos relacionados
<a name="provision-aws-service-catalog-products-using-github-actions-resources"></a>

**AWS documentação**
+ [Visão geral do Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)

**Outros recursos**
+ [Sobre eventos que acionam fluxos de trabalho](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#about-events-that-trigger-workflows) (GitHub documentação)
+ [Reutilização de fluxos de trabalho (documentação](https://docs.github.com/en/actions/sharing-automations/reusing-workflows)) GitHub 

## Mais informações
<a name="provision-aws-service-catalog-products-using-github-actions-additional"></a>

Para ver capturas de tela relacionadas aos [Epics](#provision-aws-service-catalog-products-using-github-actions-epics), acesse a pasta **Images** no repositório desse padrão. GitHub As seguintes capturas de tela estão disponíveis:
+ [AWS Service Catalog portfólio, seção de administração](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_portfolio.png)
+ [AWS Service Catalog produto, seção de administração](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product.png)
+ [AWS Service Catalog produto, User/Provisioning seção](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product_User.png)

# Provisione funções do IAM com privilégios mínimos implantando uma solução de máquina de venda automática de funções
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution"></a>

*Benjamin Morris, Nima Fotouhi, Aman Kaur Gandhi e Chade Moon, da Amazon Web Services*

## Resumo
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-summary"></a>

Permissões de função com escopo excessivo AWS Identity and Access Management (IAM) para pipelines podem introduzir riscos desnecessários para uma organização. Às vezes, os desenvolvedores concedem permissões amplas durante o desenvolvimento, mas se esquecem de reduzir o escopo das permissões após a solução de problemas do código. Isso causa um problema em que funções poderosas estão presentes sem a necessidade comercial e podem nunca ter sido revisadas por um engenheiro de segurança.

Esse padrão oferece uma solução para esse problema: a máquina de venda automática de papéis (RVM). Usando um modelo de implantação seguro e centralizado, o RVM demonstra como provisionar funções do IAM com privilégios mínimos para pipelines de repositórios individuais GitHub com o mínimo esforço dos desenvolvedores. Como o RVM é uma solução central, você pode configurar suas equipes de segurança como revisores necessários para aprovar as alterações. Essa abordagem permite que a segurança rejeite solicitações de função de pipeline com permissão excessiva. 

O RVM usa o código do Terraform como entrada e gera funções do IAM prontas para o pipeline como saída. As entradas necessárias são o Conta da AWS ID, o nome do GitHub repositório e a política de permissões. O RVM usa essas entradas para criar a política de confiança e a política de permissões da função. A política de confiança resultante permite que o GitHub repositório especificado assuma a função e a use para operações de pipeline.

O RVM usa uma função do IAM (configurada durante o bootstrap). Essa função tem permissões para assumir uma role-provisioning-role em cada conta na organização. A função é configurada por meio do AWS Control Tower Account Factory for Terraform (AFT) ou AWS CloudFormation StackSets. Essas role-provisioning-roles são as funções que realmente criam as funções do pipeline para desenvolvedores.

## Pré-requisitos e limitações
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Uma GitHub organização usada para implantar infraestrutura como código (IaC) por meio de GitHub ações. (*não GitHub Enterprise/Premium/Ultimate* são**** obrigatórios.)
+ Um AWS ambiente com várias contas. Esse ambiente não precisa fazer parte dele AWS Organizations.
+ Um mecanismo para implantar uma função do IAM em todos Contas da AWS (por exemplo, AFT ou CloudFormation StackSets).
+ Terraform versão 1.3 ou posterior [instalado e configurado](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli).
+ Terraform AWS Provider versão 4 ou posterior [instalado](https://github.com/hashicorp/terraform-provider-aws/releases) e [configurado](https://developer.hashicorp.com/terraform/language/providers/configuration).

**Limitações**
+ O código desse padrão é específico para GitHub Actions e Terraform. No entanto, os conceitos gerais do padrão podem ser reutilizados em outras estruturas de integração e entrega contínuas (CI/CD).
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-architecture"></a>

O diagrama a seguir ilustra o fluxo de trabalho deste padrão.

![\[Fluxo de trabalho para automatizar a criação e a implantação de funções do IAM usando GitHub ações.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/215c590e-0c84-411d-be6e-b1739f1e19d2/images/82fcdc9f-9576-4e7c-b7fe-b45046ba79d2.png)


O fluxo de trabalho para o uso típico da máquina de venda automática de papéis consiste nas seguintes etapas:

1. Um desenvolvedor envia o código que contém o código do Terraform para uma função IAM recém-solicitada no repositório GitHub RVM. Essa ação aciona o pipeline de ações do RVM GitHub .

1. O pipeline usa uma política de confiança do OpenID Connect (OIDC) para assumir a função de assumir a função de RVM.

1. À medida que o pipeline do RVM é executado, ele assume a função do fluxo de trabalho do RVM na conta na qual está provisionando a nova função do IAM do desenvolvedor. (A função do fluxo de trabalho do RVM foi provisionada usando AFT ou.) CloudFormation StackSets

1. O RVM cria a função IAM do desenvolvedor com permissões e confiança apropriadas, para que a função possa ser assumida por outros pipelines de aplicativos.

1. Os desenvolvedores de aplicativos podem configurar seus pipelines de aplicativos para assumir essa função provisionada por RVM.

A função criada inclui as permissões solicitadas pelo desenvolvedor e uma `ReadOnlyAccess` política. A função só pode ser assumida por pipelines executados na `main` ramificação do repositório especificado pelo desenvolvedor. Essa abordagem ajuda a garantir que a proteção e as revisões da filial possam ser necessárias para usar a função.

**Automação e escala**

As permissões com privilégios mínimos exigem atenção aos detalhes de cada função que está sendo provisionada. Esse modelo reduz a complexidade necessária para criar essas funções, permitindo que os desenvolvedores criem as funções de que precisam sem muito aprendizado ou esforço adicional.

## Ferramentas
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-tools"></a>

**Serviços da AWS**
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)é um serviço de gerenciamento de contas que ajuda você a consolidar várias Contas da AWS em uma organização que você cria e gerencia centralmente.

**Outras ferramentas**
+ O [Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto. Isso inclui a capacidade de criar uma [conta organizacional](https://docs.github.com/en/get-started/learning-about-github/types-of-github-accounts#organization-accounts).
+ GitHub O [Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) é uma plataforma de integração contínua e entrega contínua (CI/CD) totalmente integrada aos GitHub repositórios. Você pode usar o GitHub Actions para automatizar seu pipeline de criação, teste e implantação.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

**Repositório de código**

O código desse padrão está disponível no GitHub [role-vending-machine](https://github.com/aws-samples/role-vending-machine)repositório.

## Práticas recomendadas
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-best-practices"></a>
+ **Torne fácil o certo e difícil o errado** — Torne mais fácil fazer a coisa certa. Se os desenvolvedores tiverem dificuldades com o processo de provisionamento do RVM, eles podem tentar criar funções por outros meios, o que prejudica a natureza central do RVM. Certifique-se de que sua equipe de segurança forneça orientações claras sobre como usar o RVM de forma segura e eficaz.

  Você também deve dificultar que os desenvolvedores façam a coisa errada. Use políticas de controle de serviço (SCPs) ou limites de permissão para restringir quais funções podem criar outras funções. Essa abordagem pode ajudar a limitar a criação de funções apenas ao RVM e a outras fontes confiáveis.
+ **Forneça bons exemplos** — Inevitavelmente, alguns desenvolvedores adaptarão as funções existentes no repositório RVM como modelos informais para conceder permissões para suas novas funções. Se você tiver exemplos de permissões mínimas dos quais eles possam copiar, isso pode reduzir o risco de os desenvolvedores solicitarem permissões amplas e cheias de caracteres curinga. Se você começar com funções altamente autorizadas com muitos curingas, esse problema pode se multiplicar com o passar do tempo.
+ **Use convenções e condições de nomenclatura** — Mesmo que um desenvolvedor não saiba todos os nomes de recursos que seu aplicativo criará, ele ainda deve limitar as permissões de função usando uma convenção de nomenclatura. Por exemplo, se eles estiverem criando buckets do Amazon S3, o valor da chave de recurso pode parecer `arn:aws:s3:::myorg-myapp-dev-*` que sua função não tenha permissões além dos buckets correspondentes a esse nome. Aplicar a convenção de nomenclatura por meio de uma política do IAM tem o benefício adicional de melhorar a conformidade com a convenção de nomenclatura. Essa melhoria ocorre porque não será permitida a criação de recursos não correspondentes.
+ **Exigir revisões de pull request (PR)** — O valor da solução RVM é que ela cria um local central onde novas funções do pipeline podem ser revisadas. No entanto, esse design só é útil se houver grades de proteção que ajudem a garantir que um código seguro e de alta qualidade seja comprometido com o RVM. Proteja as ramificações usadas para implantar código (por exemplo,`main`) de envios diretos e exija aprovações para qualquer solicitação de mesclagem direcionada a elas.
+ **Configurar funções somente para leitura** — Por padrão, o RVM provisiona uma `readonly` versão de cada função solicitada. Essa função pode ser usada em CI/CD pipelines que não gravam dados, como um fluxo de trabalho de `terraform plan` pipeline. Essa abordagem ajuda a evitar alterações indesejadas se um fluxo de trabalho somente para leitura se comportar mal.

  Por padrão, a `ReadOnlyAccess` política AWS gerenciada é anexada às funções somente leitura e às funções de leitura e gravação. Essa política reduz a necessidade de iteração ao determinar as permissões necessárias, mas pode ser excessivamente permissiva para algumas organizações. Se quiser, você pode remover a política do código do Terraform.
+ **Conceda permissões mínimas** — siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar uma tarefa. Para obter mais informações, consulte [Concessão de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

## Épicos
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-epics"></a>

### Prepare o ambiente
<a name="prepare-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Copie o repositório de amostras para sua GitHub organização. | [Clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) o repositório desse padrão ou [bifurque](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) esse repositório para sua GitHub organização para que você possa adaptá-lo às suas necessidades.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps engenheiro | 
| Determine o Conta da AWS para o RVM. | Determine qual implantação de infraestrutura usar Conta da AWS para o RVM. Não use a conta raiz ou de gerenciamento. | Arquiteto de nuvem | 
| (Opcional) Permita que os pipelines da organização sejam criados PRs. | Essa etapa só é necessária se você quiser permitir que o `generate_providers_and_account_vars` fluxo de trabalho seja criado PRs.Para permitir que os pipelines da sua organização sejam criados PRs, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html)Para obter mais informações, consulte [Gerenciando configurações de GitHub ações para um repositório](https://docs.github.com/en/enterprise-server@3.10/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests) na GitHub documentação. | DevOps engenheiro | 
| Conceda permissões somente de leitura à conta RVM. | Crie uma política de delegação em sua conta de gerenciamento que conceda permissões somente de leitura à sua conta RVM. Isso permite que seus GitHub fluxos de trabalho do RVM obtenham dinamicamente uma lista das contas da sua AWS organização quando o script é executado. `generate_providers_and_account_vars.py` Use o código a seguir e `<YOUR RVM Account ID>` substitua pelo Conta da AWS ID que você selecionou na Etapa 2:<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "Statement",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "AWS": "arn:aws:iam::<YOUR RVM Account ID>:root"<br />      },<br />      "Action": [<br />        "organizations:ListAccounts",<br />        "organizations:DescribeOrganization",<br />        "organizations:DescribeOrganizationalUnit",<br />        "organizations:ListRoots",<br />        "organizations:ListAWSServiceAccessForOrganization",<br />        "organizations:ListDelegatedAdministrators"<br />      ],<br />      "Resource": "*"<br />    }<br />  ]<br />}</pre> | Administrador de nuvem | 
| Atualize os valores padrão do repositório de amostra. | Para configurar o RVM para operar em seu ambiente específico Região da AWS, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps engenheiro | 

### Inicializar a infraestrutura
<a name="initialize-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize o repositório RVM. | Essa etapa é necessária para criar a confiança do OIDC e as funções do IAM usadas pelo próprio pipeline do RVM, para que ele possa começar a operar e vender outras funções.No contexto da sua conta RVM, execute manualmente um `terraform apply` comando do `scripts/bootstrap` diretório. Forneça todos os valores necessários com base na documentação da variável. | DevOps engenheiro | 

### Configurar operações
<a name="configure-operations"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante as `github-workflow-rvm-readonly` funções `github-workflow-rvm` e em todas as contas. | Escolha um método de implantação que se alinhe às práticas da sua organização, como AFT ou StackSets. Use esse método para implantar as duas funções do IAM no `scripts/assumed_role/main.tf` arquivo (nomes padrão `github-workflow-rvm` e`github-workflow-rvm-readonly`) em cada conta em que você deseja que o RVM possa criar funções de pipeline.Essas funções do IAM têm políticas de confiança que permitem que a função de assunção de função da conta RVM (ou `readonly` equivalente) a assuma. As funções também têm políticas de permissão do IAM que permitem ler e escrever (a menos que usem a `readonly` função) funções correspondentes`github-workflow-role-*`. | Administrador da AWS | 
| Execute o `generate_providers_and_account_vars` fluxo de trabalho. | Para configurar seu RVM para que ele esteja pronto para criar funções de pipeline, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html)Depois que o fluxo de trabalho for concluído, o RVM estará pronto para:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps engenheiro | 

## Solução de problemas
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Eu criei uma função usando o RVM, mas GitHub não consigo assumi-la. | Verifique se o nome do GitHub repositório corresponde ao nome fornecido ao `github_workflow_roles` módulo. As funções são definidas de forma que somente um repositório possa assumi-las.Da mesma forma, verifique se a ramificação usada no GitHub pipeline corresponde ao nome da ramificação fornecida ao `github_workflow_roles` módulo. Normalmente, as funções criadas pelo RVM com permissões de gravação só podem ser usadas por fluxos de trabalho com escopo na `main` ramificação (ou seja, implantações provenientes de). `main` | 
| Minha função de somente leitura está falhando ao executar seu pipeline porque não tem permissões para ler um recurso específico. | Embora a `ReadOnlyAccess` política forneça amplas permissões somente para leitura, ela não tem algumas ações de leitura (por exemplo, determinadas AWS Security Hub CSPM ações).Você pode adicionar permissões de ação específicas usando o `inline_policy_readonly` parâmetro do `github-workflow-roles` módulo. | 

## Recursos relacionados
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-resources"></a>
+ [Práticas recomendadas de uso AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)
+ [Organizando seu AWS ambiente usando várias contas](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html)
+ [Visão geral do AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)
+ [Práticas recomendadas de políticas](https://docs.aws.amazon.com/codepipeline/latest/userguide/security_iam_service-with-iam-policy-best-practices.html) 

## Mais informações
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-additional"></a>

**Usando GitHub ambientes**

GitHub ambientes são uma abordagem alternativa às restrições baseadas em filiais para acesso a funções. Se você preferir usar um GitHub ambiente, veja a seguir um exemplo da sintaxe de uma condição adicional na política de confiança do IAM. Essa sintaxe especifica que a função só pode ser usada quando a GitHub ação está sendo executada no `Production` ambiente.

```
"StringLike": {
    "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:environment:Production"
}
```

O exemplo de sintaxe usa os seguintes valores de espaço reservado:
+ `octo-org`é o nome GitHub da organização.
+ `octo-repo`é o nome do repositório.
+ `Production`é o nome específico do GitHub ambiente.

# Publique CloudWatch métricas da Amazon em um arquivo CSV
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Resumo
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-summary"></a>

Esse padrão usa um script Python para recuperar as métricas da CloudWatch Amazon e converter as informações métricas em um arquivo de valores separados por vírgula (CSV) para melhorar a legibilidade. O script usa o serviço da AWS cujas métricas devem ser recuperadas como um argumento obrigatório. Você pode especificar a região da AWS e o perfil de credencial da AWS como argumentos opcionais. Se você não especificar esses argumentos, o script usará a região e o perfil padrão configurados para a estação de trabalho em que o script é executado. Depois que o script é executado, ele gera e armazena um arquivo CSV no mesmo diretório.

Consulte a seção *Anexos* para ver o script e os arquivos associados fornecidos com esse padrão.

## Pré-requisitos e limitações
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-prereqs"></a>

**Pré-requisitos **
+ Python 3.x
+ AWS Command Line Interface (AWS CLI)

**Limitações**

O script atualmente é compatível com os seguintes serviços AWS:
+ AWS Lambda
+ Nuvem de computação elástica da Amazon (Amazon EC2)
  + Por padrão, o script não coleta métricas de volume do Amazon Elastic Block Store (Amazon EBS) Para coletar métricas do Amazon EBS, você deve modificar o `metrics.yaml` arquivo anexado.
+ Amazon Relational Database Service (Amazon RDS)
  + No entanto, o script não é compatível com o Amazon Aurora.
+ Application Load Balancer
+ Network Load Balancer
+ Amazon API Gateway

## Ferramentas
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-tools"></a>
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) é um serviço de monitoramento criado para DevOps engenheiros, desenvolvedores, engenheiros de confiabilidade de sites (SREs) e gerentes de TI. CloudWatch fornece dados e insights acionáveis para ajudá-lo a monitorar seus aplicativos, responder às mudanças de desempenho em todo o sistema, otimizar a utilização de recursos e obter uma visão unificada da integridade operacional. CloudWatch coleta dados operacionais e de monitoramento na forma de registros, métricas e eventos e fornece uma visão unificada dos recursos, aplicativos e serviços da AWS que são executados na AWS e em servidores locais.

## Épicos
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-epics"></a>

### Instalar e configurar os pré-requisitos
<a name="install-and-configure-the-prerequisites"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instalar os pré-requisitos. | Execute este comando: .<pre>$ pip3 install -r requirements.txt</pre> | Desenvolvedor | 
| Configure a AWS CLI. | Execute este comando: . <pre>$ aws configure</pre> | Desenvolvedor | 

### Configure o script do Python
<a name="configure-the-python-script"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Abra o script. | Para alterar a configuração padrão do script, abra`metrics.yaml`. | Desenvolvedor | 
| Defina o período para o script. | Esse é o período de tempo para buscar. O período padrão é 5 minutos (300 segundos). Você pode alterar o período, mas observe as seguintes limitações: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/publish-amazon-cloudwatch-metrics-to-a-csv-file.html)Caso contrário, a operação da API não retornará nenhum ponto de dados. | Desenvolvedor | 
| Defina as horas para o script. | Esse valor especifica quantas horas de métricas você deseja buscar. O valor padrão é 1 hora. Para recuperar vários dias de métricas, forneça o valor em horas. Por exemplo, por 2 dias, especifique 48. | Desenvolvedor | 
| Altere os valores das estatísticas do script.  | (Opcional) O valor das estatísticas globais é`Average`, usado ao buscar métricas que não têm um valor estatístico específico atribuído. O script suporta os valores estatísticos `Maximum``SampleCount`, `Sum` e. | Desenvolvedor | 

### Execute o script do Python
<a name="run-the-python-script"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Executar o script. | Use o seguinte comando: <pre>$ python3 cwreport.py <service> </pre>Para ver uma lista de valores de serviço e os parâmetros opcionais`region ` e `profile `, execute o seguinte comando:<pre> $ python3 cwreport.py -h</pre>Para obter mais informações sobre os parâmetros opcionais, consulte a seção *Informações adicionais*. | Desenvolvedor | 

## Recursos relacionados
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-resources"></a>
+ [ Como configurar a AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Usando CloudWatch métricas da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)
+ [ CloudWatch Documentação da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
+ [EC2 CloudWatch Métricas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics)
+ [Métricas do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/operatorguide/logging-metrics.html)
+ [Métricas do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html#rds-cw-metrics-instance)
+ [Métricas do Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html)
+ [Métricas do Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html)
+ [Métricas para Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html)

## Mais informações
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-additional"></a>

**Uso do script**

```
$ python3 cwreport.py -h
```

**Exemplo de sintaxe**

```
python3 cwreport.py <service> <--region=Optional Region> <--profile=Optional credential profile>
```

**Parâmetros**
+ **service (obrigatório)** ‒ O serviço no qual você deseja executar o script. Atualmente, o script oferece suporte aos seguintes serviços: AWS Lambda, Amazon, EC2 Amazon RDS, Application Load Balancer, Network Load Balancer e API Gateway.
+ **region (opcional)** ‒ A região da AWS da qual buscar métricas. A região padrão é `ap-southeast-1`.
+ **profile (opcional)** ‒ O perfil nomeado pela AWS CLI a ser usado. Se esse parâmetro não for especificado, o perfil de credencial configurado padrão será usado.

**Exemplos**
+ Para usar a região padrão `ap-southeast-1` e as credenciais configuradas padrão para obter métricas da Amazon EC2 : `$ python3 cwreport.py ec2`
+ Para especificar uma região e buscar métricas do API Gateway: `$ python3 cwreport.py apigateway --region us-east-1`
+ Para especificar um perfil da AWS e obter EC2 métricas da Amazon: `$ python3 cwreport.py ec2 --profile testprofile`
+ Para especificar a região e o perfil para obter EC2 métricas da Amazon: `$ python3 cwreport.py ec2 --region us-east-1 --profile testprofile`

## Anexos
<a name="attachments-0a915a9d-2eef-4da1-8283-3cf4a115b3b2"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/0a915a9d-2eef-4da1-8283-3cf4a115b3b2/attachments/attachment.zip)

# Remova EC2 as entradas Contas da AWS da Amazon em frente AWS Managed Microsoft AD usando a AWS Lambda automação
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad"></a>

*Dr. Rahul Sharad Gaikwad e Tamilselvan P, Amazon Web Services*

## Resumo
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-summary"></a>

O Active Directory (AD) é uma ferramenta de script da Microsoft que gerencia as informações do domínio e as interações do usuário com os serviços de rede. É amplamente usado entre provedores de serviços gerenciados (MSPs) para gerenciar credenciais de funcionários e permissões de acesso. Como invasores do AD podem explorar contas inativas para tentar invadir uma organização, é essencial identificar essas contas e desativá-las usando um cronograma de manutenção regular. Com AWS Directory Service for Microsoft Active Directory, você pode executar o Microsoft Active Directory como um serviço gerenciado. Esse padrão pode ajudar você a configurar a AWS Lambda automação para encontrar e remover rapidamente contas inativas.

Se os cenários a seguir se aplicarem à sua organização, esse padrão poderá ajudar:
+ **Gerenciamento centralizado do AD** — Se sua organização tiver várias Contas da AWS, cada uma com sua própria implantação do AD, pode ser difícil gerenciar contas de usuário e permissões de acesso de forma consistente em todas as contas. Com uma solução de limpeza do AD entre contas, você pode desativar ou remover contas inativas de todas as instâncias do AD de forma centralizada.
+ **Reestruturação ou migração do AD**: se sua organização planeja reestruturar ou migrar sua implantação do AD, uma solução de limpeza do AD entre contas pode ajudá-lo a preparar o ambiente. A solução pode ajudar você a remover contas desnecessárias ou inativas, simplificar o processo de migração e reduzir possíveis conflitos ou problemas.

Quando você usa esse padrão, pode alcançar os seguintes benefícios:
+ Melhore a performance do banco de dados e dos servidores, além de corrigir vulnerabilidades de segurança causadas por contas inativas.
+ Se o seu servidor do AD estiver hospedado na nuvem, a remoção de contas inativas também pode reduzir custos de armazenamento enquanto otimiza a performance. Os custos mensais podem diminuir devido à redução tanto de taxas de largura de banda quanto de recursos de processamento.
+ Prevenção de atacantes em potencial com um Active Directory limpo.

## Pré-requisitos e limitações
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa para pais Conta da AWS e uma ou várias contas para crianças. Neste padrão, uma *conta principal* é onde o Active Directory é criado. As *contas secundárias* hospedam servidores Windows e são ingressadas por meio da conta principal do Active Directory.
+ Git [instalado](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) e configurado em uma estação de trabalho local.
+ Terraform [instalado](https://learn.hashicorp.com/tutorials/terraform/install-cli) e configurado em uma estação de trabalho local.
+ AWS Managed Microsoft AD diretório configurado na conta principal e compartilhado com todas as contas secundárias. *Para obter mais detalhes, consulte [Tutorial: Compartilhando seu AWS Managed Microsoft AD diretório para uma EC2 associação perfeita ao domínio no Guia de Administração](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html).AWS Directory Service *
+ Uma conexão de emparelhamento de nuvem privada virtual (VPC) ou AWS Transit Gateway conexão disponível entre a VPC da AWS Directory Service (conta principal) e a VPC das instâncias do Amazon Elastic Compute Cloud (Amazon EC2) (contas secundárias). Para obter mais detalhes, consulte [Configure a VPC peering connection between the directory owner and the directory consumer account](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html#step1_configure_owner_account_vpc) no *Guia de Administração do AWS Directory Service *.
+ Uma máquina Windows configurada com o script `EC2WindowsUserdata` em todas as contas principal e secundárias. O arquivo de script está disponível na raiz do [repositório de código](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/tree/main/multiple-account-cleanup) deste padrão.
+ Uma função entre contas AWS Identity and Access Management (IAM) disponível em cada conta secundária configurada com uma política de confiança para permitir o uso de uma AWS Lambda função da conta principal. Para obter mais informações, consulte [Enviar e receber eventos entre a Amazon Contas da AWS EventBridge no](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEvents-CrossAccountEventDelivery.html) *Guia do EventBridge usuário da Amazon*.
+ Os seguintes valores secretos estão disponíveis no AWS Systems Manager Parameter Store da conta principal:
  + `domainJoinUser`: o nome de usuário do serviço de diretório
  + `domainJoinPassword`: a senha do serviço de diretório

  Para obter mais informações sobre segredos, consulte [Criar um AWS Secrets Manager segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) no *Guia do AWS Secrets Manager usuário*.

**Limitações**
+ A criação de um recurso em uma conta secundária não é automatizada com o Terraform. Você deve criar os seguintes recursos manualmente usando o Console de gerenciamento da AWS:
  +  EventBridge Regra da Amazon para enviar os eventos de EC2 rescisão da Amazon para a conta principal
  + Criação de função EC2 entre contas da Amazon na conta infantil com política de confiança
  + Emparelhamento de VPC ou conesão de gateway de trânsito
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ [Terraform versão 1.1.9 ou posterior](https://developer.hashicorp.com/terraform/install)
+ [Terraform AWS Provider versão 3.0 ou superior](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Arquitetura
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-architecture"></a>

O diagrama a seguir mostra a arquitetura de alto nível da solução.

![\[Processo para usar a automação Lambda para remover EC2 entradas de todas as contas da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/c397d873-e10d-44b6-8352-5f1380ab94ca/images/bd6c80a7-e490-47db-bd47-165314e1ea8a.png)


O diagrama de arquitetura a seguir ilustra o seguinte processo:

1. Em contas infantis, a EventBridge regra coleta todos os eventos de EC2 rescisão da Amazon. A regra envia os eventos EventBridge que estão presentes na conta principal.

1. Da conta principal, EventBridge coleta todos os eventos e contém a regra para acionar a função `ADcleanup-Lambda` Lambda.

1. A conta principal recebe todos os eventos de encerramento da conta principal ou secundária e aciona a função do Lambda.

1. A função Lambda faz a chamada para grupos do Amazon Auto EC2 Scaling usando o módulo boto do Python e obtém o ID aleatório da instância. O ID da instância é usado para executar comandos do Systems Manager.

1. A função Lambda faz outra chamada para a Amazon EC2 usando o módulo boto. A função do Lambda obtém os endereços IP privados dos servidores Windows em execução e armazena os endereços em uma variável temporária. Nas etapas 5.1 e 5.2, as EC2 instâncias do Windows em execução são coletadas de contas secundárias.

1. A função do Lambda faz outra chamada para o Systems Manager para obter as informações do computador ao está o AWS Directory Service qual conectado.

1. Um AWS Systems Manager documento ajuda a executar o PowerShell comando nos servidores Amazon EC2 Windows para obter os endereços IP privados dos computadores conectados ao AD. (O documento Systems Manager usa o ID da instância obtido na etapa 4.)

1. O nome de usuário e as senhas do domínio AD são armazenados no AWS Systems Manager Parameter Store. AWS Lambda e o Systems Manager fazem uma chamada para o Parameter Store e obtêm os valores de nome de usuário e senha a serem usados para se conectar ao AD.

1. Usando o documento Systems Manager, o PowerShell script é executado no servidor Amazon EC2 Windows usando o ID da instância obtido anteriormente na etapa 4.

1. A Amazon EC2 se conecta AWS Directory Service usando PowerShell comandos e remove os computadores que não estão em uso ou inativos.

## Ferramentas
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-tools"></a>

**AWS serviços**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)fornece várias maneiras de usar o Microsoft Active Directory (AD) com outros Serviços da AWS , como Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) para SQL Server e FSx Amazon para Windows File Server.
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permite que suas cargas de trabalho e AWS recursos com reconhecimento de diretório usem o Microsoft Active Directory no. Nuvem AWS
+ [O Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fornece capacidade de computação escalável no. Nuvem AWS Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los. Com o IAM, você pode especificar em quem ou o que pode acessar serviços e recursos AWS, gerenciar centralmente permissões refinadas e analisar o acesso para refinar as permissões. AWS
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ajuda você a gerenciar suas aplicações e infraestrutura em execução na Nuvem AWS. Ele simplifica o gerenciamento de aplicativos e recursos, reduz o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus AWS recursos com segurança em grande escala.
+ [AWS Systems Manager os documentos](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) definem as ações que o Systems Manager executa em suas instâncias gerenciadas. O Systems Manager inclui mais de 100 documentos pré-configurados, que você pode usar especificando parâmetros no runtime.
+ AWS Systems Manager O [Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) é um recurso AWS Systems Manager e fornece armazenamento seguro e hierárquico para gerenciamento de dados de configuração e gerenciamento de segredos.

**Outras ferramentas**
+ O [HashiCorp Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)é um programa de gerenciamento de automação e configuração da Microsoft executado em Windows, Linux e macOS.
+ [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [aws-lambda-ad-cleanup-terraform-samples](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/tree/main/multiple-account-cleanup).

## Práticas recomendadas
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-best-practices"></a>
+ **Ingressar em domínios automaticamente. **Ao iniciar uma instância do Windows que fará parte de um Directory Service domínio, entre no domínio durante o processo de criação da instância, em vez de adicioná-la manualmente posteriormente. Para ingressar automaticamente em um domínio, selecione o diretório correto na lista suspensa **Diretório de ingresso em domínio** ao executar uma nova instância. Para obter mais detalhes, consulte [Unir perfeitamente uma instância EC2 do Amazon Windows ao seu AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) no *Guia de Directory Service Administração*.
+ **Exclua contas que não são utilizadas. **É comum encontrar contas no AD que nunca foram usadas. Assim como contas desabilitadas ou inativas que permanecem no sistema, contas que não estão sendo usadas e são negligenciadas podem diminuir a performance do seu sistema do AD ou tornar a organização vulnerável a vazamentos de dados.
+ **Automatize as limpezas do Active Directory. **Para ajudar a mitigar os riscos de segurança e evitar que contas obsoletas impactem a performance do AD, conduza limpezas do AD em intervalos regulares. É possível concluir a maioria das tarefas de gerenciamento e de limpeza do AD por meio da gravação de scripts. Exemplos de tarefas incluem remover contas desabilitadas e inativas, excluir grupos vazios e inativos, e localizar contas de usuário e senhas expiradas.

## Épicos
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-epics"></a>

### Configurar contas secundárias
<a name="set-up-child-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um perfil entre contas na conta secundária. | Para criar um perfil entre contas em uma conta secundária, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 
| Crie uma regra de evento na conta secundária. | Para criar uma EventBridge regra para cada conta infantil, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Para obter mais detalhes, consulte [Criação de regras que reagem a eventos na Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) no *Guia EventBridge do usuário da Amazon*. | DevOps engenheiro | 
| Crie uma EC2 instância e participe do AD. | Para criar uma EC2 instância para o Windows, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 

### Configurar a estação de trabalho local
<a name="set-up-the-local-workstation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma pasta para o projeto e adicione os arquivos. | Para clonar o repositório e criar uma pasta para o projeto, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 
| Crie o arquivo `adcleanup.zip`. | Para compactar o arquivo `lambda_function.py`, execute o seguinte comando:`zip -r adcleanup.zip lambda_function.py` | DevOps engenheiro | 

### Provisionamento da arquitetura de destino por meio da configuração do Terraform
<a name="provision-the-target-architecture-using-the-terraform-configuration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Forneça os valores para as variáveis do Terraform. | Para a conta secundária, forneça valores para as seguintes variáveis `arn` como tipos de string no arquivo `terraform.tfvars`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 
| Inicialize a configuração do Terraform. | Para inicializar seu diretório de trabalho que contém os arquivos do Terraform, execute o seguinte comando:`terraform init` | DevOps engenheiro | 
| Pré-visualize as alterações. | É possível visualizar previamente as alterações que o Terraform fará na infraestrutura antes que ela seja implantada. Para validar que o Terraform aplicará as alterações conforme necessário, execute o seguinte comando:`terraform plan —-var-file=examples/terraform.tfvars` | DevOps engenheiro | 
| Coloque em prática as ações propostas. | Para verificar se os resultados do comando `terraform plan` estão conforme o esperado, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 

### Verificar a implantação
<a name="verify-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute e teste a função do Lambda. | Para verificar se a implantação ocorreu com êxito, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Os resultados da execução mostram a saída da função. | DevOps engenheiro | 
| Veja os resultados da execução da EventBridge regra na conta principal. | Para ver os resultados da EventBridge regra baseada nos eventos de EC2 rescisão da Amazon na conta principal, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)No CloudWatch console, a página **Grupos de registros** mostra os resultados da função Lambda. | DevOps engenheiro | 
| Veja os resultados da execução da EventBridge regra na conta secundária. | Para ver os resultados da EventBridge regra baseada nos eventos de EC2 rescisão da Amazon da conta da criança, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)No CloudWatch console, a página **Grupos de registros** mostra os resultados da função Lambda. | DevOps engenheiro | 

### Limpar a infraestrutura após o uso
<a name="clean-up-infrastructure-after-use"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe a infraestrutura. | Para limpar a infraestrutura que você criou, use o seguinte comando:`terraform destroy`Para confirmar o comando `destroy`, digite `yes`. | DevOps engenheiro | 
| Realize uma verificação após o procedimento de limpeza. | Verifique se os recursos foram removidos com êxito. | DevOps engenheiro | 

## Solução de problemas
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Problema de conexão entre AWS Directory Service (conta principal) e EC2 instância da Amazon (conta secundária) — Você não consegue associar os computadores da conta secundária ao AD, mesmo que o emparelhamento de VPC esteja disponível. | Adicione roteamento no VPCs. Para obter instruções, consulte [Configurar uma conexão de emparelhamento de VPC entre o proprietário do diretório e a conta do consumidor do diretório na documentação](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html#step1_configure_owner_account_vpc). AWS Directory Service  | 

## Recursos relacionados
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-resources"></a>

**AWS documentação**
+ [Amazon EventBridge e AWS Identity and Access Management](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Configurar permissões de instância obrigatórias para o Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Gerenciamento de identidade e acesso para Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Políticas de IAM baseadas em identidade para Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)
+ [Associe manualmente uma instância EC2 do Amazon Windows ao seu AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Remova EC2 as entradas da Amazon na mesma forma Conta da AWSAWS Managed Microsoft AD usando a AWS Lambda automação](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)

**Outros recursos**
+ [AWS Provedor](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (documentação do Terraform)
+ [Backend Configuration](https://developer.hashicorp.com/terraform/language/backend) (documentação do Terraform)
+ [Install Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli) (documentação do Terraform)
+ [Python boto module](https://pypi.org/project/boto/) (repositório Python Package Index)
+ [Terraform binary download](https://www.terraform.io/downloads) (documentação do Terraform)

# Remova EC2 as entradas da Amazon na mesma forma Conta da AWS AWS Managed Microsoft AD usando a AWS Lambda automação
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad"></a>

*Dr. Rahul Sharad Gaikwad e Tamilselvan P, Amazon Web Services*

## Resumo
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-summary"></a>

O Active Directory (AD) é uma ferramenta de script da Microsoft que gerencia as informações do domínio e as interações do usuário com os serviços de rede. É amplamente usado entre provedores de serviços gerenciados (MSPs) para gerenciar credenciais de funcionários e permissões de acesso. Como invasores do AD podem explorar contas inativas para tentar invadir uma organização, é essencial identificar essas contas e desativá-las usando um cronograma de manutenção regular. Com AWS Directory Service for Microsoft Active Directory, você pode executar o Microsoft Active Directory como um serviço gerenciado. 

Esse padrão pode ajudar você a configurar a AWS Lambda automação para encontrar e remover rapidamente contas inativas. Quando você usa esse padrão, pode alcançar os seguintes benefícios:
+ Melhore a performance do banco de dados e dos servidores, além de corrigir vulnerabilidades de segurança causadas por contas inativas.
+ Se o seu servidor do AD estiver hospedado na nuvem, a remoção de contas inativas também pode reduzir custos de armazenamento enquanto otimiza a performance. Os custos mensais podem diminuir devido à redução tanto de taxas de largura de banda quanto de recursos de processamento.
+ Prevenção de atacantes em potencial com um Active Directory limpo.

## Pré-requisitos e limitações
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Git [instalado](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) e configurado em uma estação de trabalho local.
+ Terraform [instalado](https://learn.hashicorp.com/tutorials/terraform/install-cli) e configurado em uma estação de trabalho local.
+ Computador Windows com módulos do Active Directory (`ActiveDirectory`).
+ Um diretório AWS Managed Microsoft AD e credenciais armazenadas em um [AWS Systems Manager parâmetro no Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html).
+ AWS Identity and Access Management Função (IAM) com permissões para a Serviços da AWS listada em [Ferramentas](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools)*.* Para obter mais informações sobre o IAM, consulte [Recursos relacionados](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources).

**Limitações**
+ Esse padrão não é compatível com a configuração de várias contas.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ [Terraform versão 1.1.9 ou posterior](https://developer.hashicorp.com/terraform/install)
+ [Terraform AWS Provider versão 3.0 ou superior](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Arquitetura
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-architecture"></a>

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

![\[Processo para usar a automação Lambda para remover EC2 entradas do Microsoft AD gerenciado.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/6b50dcc5-4f4b-4eea-85a7-04cebc9f7454/images/b7fc5962-bfb8-4f5a-968e-7487b1d48c4f.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. A Amazon EventBridge aciona a AWS Lambda função com base em uma expressão cron. (Para esse padrão, a programação da expressão cron é uma vez por dia.)

1. A função e a política necessárias do IAM são criadas e anexadas AWS Lambda por meio do Terraform.

1. A AWS Lambda função é executada e chama os grupos do Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling Groups usando o módulo de inicialização do Python. A função Lambda obtém o ID da instância aleatória. O ID da instância é usado para executar AWS Systems Manager comandos.

1. AWS Lambda faz outra chamada para a Amazon EC2 usando o módulo boto e obtém os endereços IP privados dos servidores Windows em execução e armazena os endereços em uma variável temporária.

1. AWS Lambda faz outra chamada para o Systems Manager para obter as informações do computador ao qual está conectado Directory Service.

1. Um AWS Systems Manager documento ajuda a executar o PowerShell script nos servidores Amazon EC2 Windows para obter os endereços IP privados dos computadores conectados ao AD.

1. O nome de usuário e as senhas do domínio AD são armazenados no AWS Systems Manager Parameter Store. AWS Lambda e o Systems Manager fazem uma chamada para o Parameter Store e obtêm os valores de nome de usuário e senha a serem usados para conectar o AD.

1. Usando o documento Systems Manager, o PowerShell script é executado no servidor Amazon EC2 Windows usando o ID da instância obtido anteriormente na etapa 3.

1. A Amazon EC2 se conecta Directory Service usando PowerShell comandos e remove os computadores que não estão em uso ou inativos.

## Ferramentas
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools"></a>

**Serviços da AWS**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)fornece várias maneiras de usar o Microsoft Active Directory (AD) com outros Serviços da AWS , como Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) para SQL Server e FSx Amazon para Windows File Server.
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permite que suas cargas de trabalho e AWS recursos com reconhecimento de diretório usem o Microsoft Active Directory no. Nuvem AWS
+ [O Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fornece capacidade de computação escalável no. Nuvem AWS Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los. Com o IAM, você pode especificar em quem ou o que pode acessar serviços e recursos AWS, gerenciar centralmente permissões refinadas e analisar o acesso para refinar as permissões. AWS
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ajuda você a gerenciar suas aplicações e infraestrutura em execução na Nuvem AWS. Ele simplifica o gerenciamento de aplicativos e recursos, reduz o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus AWS recursos com segurança em grande escala.
+ [AWS Systems Manager os documentos](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) definem as ações que o Systems Manager executa em suas instâncias gerenciadas. O Systems Manager inclui mais de 100 documentos pré-configurados, que você pode usar especificando parâmetros no runtime.
+ AWS Systems Manager O [Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) é um recurso AWS Systems Manager e fornece armazenamento seguro e hierárquico para gerenciamento de dados de configuração e gerenciamento de segredos.

**Outras ferramentas**
+ [HashiCorp O Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura de código aberto como código (IaC) que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)é um programa de gerenciamento de automação e configuração da Microsoft executado em Windows, Linux e macOS.
+ [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.

****Repositório de código** C**

O código desse padrão está disponível no repositório da [solução GitHub Custom AD Cleanup Automation](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/). 

## Práticas recomendadas
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-best-practices"></a>
+ **Ingressar em domínios automaticamente. **Ao iniciar uma instância do Windows que fará parte de um Directory Service domínio, entre no domínio durante o processo de criação da instância, em vez de adicioná-la manualmente posteriormente. Para ingressar automaticamente em um domínio, selecione o diretório correto na lista suspensa **Diretório de ingresso em domínio** ao executar uma nova instância. Para obter mais detalhes, consulte [Unir perfeitamente uma instância EC2 do Amazon Windows ao seu AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) no *Guia de Directory Service Administração*.
+ **Exclua contas que não são utilizadas. **É comum encontrar contas no AD que nunca foram usadas. Assim como contas desabilitadas ou inativas que permanecem no sistema, contas que não estão sendo usadas e são negligenciadas podem diminuir a performance do seu sistema do AD ou tornar a organização vulnerável a vazamentos de dados.
+ **Automatize as limpezas do Active Directory. **Para ajudar a mitigar os riscos de segurança e evitar que contas obsoletas impactem a performance do AD, conduza limpezas do AD em intervalos regulares. É possível concluir a maioria das tarefas de gerenciamento e de limpeza do AD por meio da gravação de scripts. Exemplos de tarefas incluem remover contas desabilitadas e inativas, excluir grupos vazios e inativos, e localizar contas de usuário e senhas expiradas. 

## Épicos
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-epics"></a>

### Configurar o ambiente
<a name="set-up-your-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma pasta de projeto e adicione os arquivos. | Para clonar o repositório e criar uma pasta para o projeto, faça o seguinte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 

### Provisione a arquitetura de destino usando a configuração do Terraform
<a name="provision-the-target-architecture-by-using-the-terraform-configuration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize a configuração do Terraform. | Para inicializar seu diretório de trabalho que contém os arquivos do Terraform, execute o comando a seguir.`terraform init` | DevOps engenheiro | 
| Pré-visualize as alterações. | É possível visualizar previamente as alterações que o Terraform fará na infraestrutura antes que ela seja implantada. Para validar se o Terraform fará as alterações conforme necessário, execute o comando a seguir.`terraform plan` | DevOps engenheiro | 
| Coloque em prática as ações propostas. | Para verificar se os resultados do comando `terraform plan` estão conforme o esperado, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps engenheiro | 
| Limpe a infraestrutura. | Para limpar a infraestrutura que você criou, use o comando a seguir.`terraform destroy`Para confirmar o comando destroy, digite`yes`. | DevOps engenheiro | 

### Verificar a implantação
<a name="verify-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute e teste a função do Lambda. | Para verificar se a implantação ocorreu com êxito, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)Os resultados da execução mostram a saída da função. | DevOps engenheiro | 
| Veja os resultados da função Lambda. | Nesse padrão, uma EventBridge regra executa a função Lambda uma vez por dia. Para visualizar os resultados da função Lambda, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)No CloudWatch console, a página de **grupos de registros** mostra os resultados da função Lambda. | DevOps engenheiro | 

### Limpar a infraestrutura após o uso
<a name="clean-up-infrastructure-after-use"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe a infraestrutura. | Para limpar a infraestrutura que você criou, use o comando a seguir.`terraform destroy`Para confirmar o comando destroy, digite`yes`. | DevOps engenheiro | 
| Realize uma verificação após o procedimento de limpeza. | Verifique se os recursos foram removidos com êxito. | DevOps engenheiro | 

## Solução de problemas
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Se você tentar remover o computador do AD, receberá a mensagem “Acesso negado”. O computador do AD não pode ser removido porque, por padrão, a ação tenta remover dois endereços IP privados que estão conectados como parte dos serviços do AD. | Para evitar esse erro, use a operação Python a seguir para ignorar os dois primeiros computadores ao listar as diferenças entre a saída de um computador AD e a saída da sua máquina executando o Windows.<pre>Difference = Difference[2:]</pre> | 
| Quando o Lambda executa um PowerShell script em um servidor Windows, ele espera que os módulos do Active Directory estejam disponíveis por padrão. Se os módulos não estiverem disponíveis, uma função Lambda cria um erro que indica “Get- não AdComputer está instalado na instância”. | Para evitar esse erro, instale os módulos necessários usando os dados do usuário das EC2 instâncias. Use o [EC2WindowsUserdata](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/blob/main/EC2WindowsUserdata)script que está no GitHub repositório desse padrão. | 

## Recursos relacionados
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources"></a>

**AWS documentação**
+ [Amazon EventBridge e AWS Identity and Access Management](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Configurar permissões de instância obrigatórias para o Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Gerenciamento de identidade e acesso para Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Associe manualmente uma instância EC2 do Amazon Windows ao seu AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Trabalhando com políticas de IAM baseadas em identidade em AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)

**Outros recursos**
+ [AWS Provedor](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (documentação do Terraform)
+ [Backend Configuration](https://developer.hashicorp.com/terraform/language/backend) (documentação do Terraform)
+ [Install Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli) (documentação do Terraform)
+ [Python boto module](https://pypi.org/project/boto/) (repositório Python Package Index)
+ [Terraform binary download](https://www.terraform.io/downloads) (documentação do Terraform)

# Execute testes de unidade para trabalhos de ETL do Python AWS Glue usando a estrutura pytest
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework"></a>

*Praveen Kumar Jeyarajan e Vaidy Sankaran, da Amazon Web Services*

## Resumo
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-summary"></a>

Você pode executar testes unitários para trabalhos de extração, transformação e carregamento (ETL) do Python AWS Glue em um [ambiente de desenvolvimento local](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html), mas replicar esses testes em um DevOps pipeline pode ser difícil e demorado. O teste unitário pode ser especialmente desafiador quando você está modernizando o processo de ETL de mainframe em AWS pilhas de tecnologia. Esse padrão mostra como simplificar os testes de unidade, mantendo intactas as funcionalidades existentes, evitando interrupções nas principais funcionalidades do aplicativo ao lançar novos atributos e mantendo um software de alta qualidade. Você pode usar as etapas e os exemplos de código nesse padrão para executar testes de unidade para trabalhos de ETL do Python AWS Glue usando a estrutura pytest em. AWS CodePipeline Você também pode usar esse padrão para testar e implantar vários AWS Glue trabalhos.

## Pré-requisitos e limitações
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Um URI de imagem do Amazon Elastic Container Registry (Amazon ECR) para AWS Glue sua biblioteca, baixado da Galeria Pública do [Amazon](https://gallery.ecr.aws/glue/aws-glue-libs) ECR
+ Terminal Bash (em qualquer sistema operacional) com um perfil para o alvo Conta da AWS e Região da AWS
+ [Python 3.10](https://www.python.org/downloads/) ou posterior
+ [Pytest](https://github.com/pytest-dev/pytest)
+ Biblioteca [Moto](https://github.com/getmoto/moto) Python para testes Serviços da AWS

## Arquitetura
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-architecture"></a>

O diagrama a seguir descreve como incorporar testes unitários para processos de AWS Glue ETL baseados em Python em um pipeline típico AWS DevOps de escala empresarial.

![\[Teste unitário para processos de ETL do AWS Glue.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/82781ca8-4da0-4df0-bf23-32992fece231/images/6286dafc-f1e0-4967-beed-4dedc6047c10.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. No estágio de origem, AWS CodePipeline usa um bucket versionado do Amazon Simple Storage Service (Amazon S3) para armazenar e gerenciar ativos de código-fonte. Esses ativos incluem um exemplo de job (`sample.py`) de ETL em Python, um arquivo de teste unitário (`test_sample.py`) e um modelo. AWS CloudFormation Em seguida, CodePipeline transfere o código mais recente da ramificação principal para o AWS CodeBuild projeto para processamento adicional.

1. No estágio de criação e publicação, o código mais recente do estágio de origem anterior é testado em unidade com a ajuda de uma imagem AWS Glue pública do Amazon ECR. Em seguida, o relatório do teste é publicado nos grupos de CodeBuild relatórios. A imagem do contêiner no repositório público do Amazon ECR para AWS Glue bibliotecas inclui todos os binários necessários para executar tarefas ETL [PySparkbaseadas em](https://spark.apache.org/docs/latest/api/python/) testes unitários localmente. AWS Glue O repositório público de contêineres tem três tags de imagem, uma para cada versão suportada pelo AWS Glue. Para fins de demonstração, esse padrão usa a tag de imagem `glue_libs_4.0.0_image_01`. Para usar essa imagem de contêiner como imagem de tempo de execução em CodeBuild, copie o URI da imagem que corresponde à tag de imagem que você pretende usar e, em seguida, atualize o `pipeline.yml` arquivo no GitHub repositório do `TestBuild` recurso.

1. Na fase de implantação, o CodeBuild projeto é lançado e ele publica o código em um bucket do Amazon S3 se todos os testes forem aprovados.

1. O usuário implanta a AWS Glue tarefa usando o CloudFormation modelo na `deploy` pasta.

## Ferramentas
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-tools"></a>

**Serviços da AWS**
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.
+ O [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) é um serviço gerenciado de registro de imagens de contêineres seguro, escalável e confiável.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)é um serviço ETL totalmente gerenciado. Ele ajuda você a categorizar de forma confiável, limpar, enriquecer e mover dados de forma confiável entre armazenamento de dados e fluxos de dados.
+ [O Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho líderes do setor.

**Outras ferramentas**
+ [Python](https://www.python.org/) é uma linguagem de programação interpretada de alto nível e de uso geral.
+ [Moto](https://github.com/getmoto/moto) é uma biblioteca Python para testes. Serviços da AWS
+ O [Pytest](https://github.com/pytest-dev/pytest) é uma estrutura para escrever pequenos testes unitários que se escalam para suportar testes funcionais complexos para aplicativos e bibliotecas.
+ A [biblioteca Python ETL](https://github.com/awslabs/aws-glue-libs) for AWS Glue é um repositório para bibliotecas Python que são usadas no desenvolvimento local de trabalhos em lote para. PySpark AWS Glue

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [aws-glue-jobs-unit-testing](https://github.com/aws-samples/aws-glue-jobs-unit-testing). O repositório inclui os seguintes recursos:
+ Um exemplo de AWS Glue tarefa baseada em Python na pasta `src`
+ Casos de teste de unidade associados (criados usando a estrutura pytest) na pasta `tests`
+ Um CloudFormation modelo (escrito em YAML) na pasta `deploy`

## Práticas recomendadas
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-best-practices"></a>

**Segurança para CodePipeline recursos**

É uma prática recomendada usar criptografia e autenticação para os repositórios de origem que se conectam aos seus pipelines em. CodePipeline Para obter mais informações, consulte [as melhores práticas de segurança](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-best-practices.html) na CodePipeline documentação.

**Monitoramento e registro de CodePipeline recursos**

É uma prática recomendada usar os recursos de AWS registro para determinar quais ações os usuários realizam em sua conta e quais recursos eles usam. Os arquivos de log exibem o seguinte:
+ Data e hora das ações.
+ Endereço IP de origem das ações
+ As ações que falharam devido a permissões inadequadas.

Os recursos de registro estão disponíveis no AWS CloudTrail Amazon CloudWatch Events. Você pode usar CloudTrail para registrar chamadas de AWS API e eventos relacionados feitos por ou em nome do seu Conta da AWS. Para obter mais informações, consulte [Logging CodePipeline API de chamadas AWS CloudTrail](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring-cloudtrail-logs.html) na CodePipeline documentação.

Você pode usar CloudWatch Eventos para monitorar seus Nuvem AWS recursos e aplicativos em execução AWS. Você também pode criar alertas em CloudWatch Eventos. Para obter mais informações, consulte [Monitoramento de CodePipeline eventos](https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html) na CodePipeline documentação.

## Épicos
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-epics"></a>

### Implantar o código-fonte
<a name="deploy-the-source-code"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Prepare o arquivo de código para implantação. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | DevOps engenheiro | 
| Crie a CloudFormation pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html)A pilha cria uma CodePipeline visualização usando o Amazon S3 como fonte. Nas etapas acima, o pipeline é **aws-glue-unit-test-pipeline**. | AWS DevOps, DevOps engenheiro | 

### Execute os testes de unidade
<a name="run-the-unit-tests"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute os testes de unidade no pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | AWS DevOps, DevOps engenheiro | 

### Limpe todos os AWS recursos
<a name="clean-up-all-aws-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe os recursos no seu ambiente. | Para evitar custos adicionais de infraestrutura, certifique-se de excluir a pilha depois de experimentar os exemplos fornecidos nesse padrão.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | AWS DevOps, DevOps engenheiro | 

## Solução de problemas
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A função CodePipeline de serviço não pode acessar o bucket do Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | 
| CodePipeline retorna um erro informando que o bucket do Amazon S3 não está versionado. | CodePipeline exige que o bucket de origem do Amazon S3 seja versionado. Ative o controle de versão em seu bucket do Amazon S3. Para obter instruções, consulte [Habilitar o controle de versão em buckets.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html) | 

## Recursos relacionados
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-resources"></a>
+ [AWS Glue](https://aws.amazon.com/glue/)
+ [Desenvolvendo e testando AWS Glue trabalhos localmente](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html)
+ [AWS CloudFormation para AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html)

## Mais informações
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-additional"></a>

Além disso, você pode implantar os AWS CloudFormation modelos usando o AWS Command Line Interface (AWS CLI). Para obter mais informações, consulte [Implantação rápida de modelos com transformações](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-deploy.html) na CloudFormation documentação.

# Configure um CI/CD pipeline usando a AWS CodePipeline e o AWS CDK
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk"></a>

*Konstantin Zarudaev, Yasha Dabas, Lars Kinder e Cizer Pereira, Amazon Web Services*

## Início
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-summary"></a>

Automatizar seu processo de criação e lançamento de software com integração e entrega contínuas (CI/CD) supports repeatable builds and rapid delivery of new features to your users. You can quickly and easily test each code change, and you can catch and fix bugs before releasing your software. By running each change through your staging and release process, you can verify the quality of your application or infrastructure code. CI/CDincorpora uma cultura, um conjunto de princípios operacionais e um [conjunto de práticas que ajudam as equipes de](https://aws.amazon.com/devops/#cicd) desenvolvimento de aplicativos a entregar alterações de código com mais frequência e confiabilidade). A implementação também é conhecida como *pipeline de CI/CD*.

Esse padrão define um pipeline reutilizável de integração contínua e entrega contínua (CI/CD) na Amazon Web Services (AWS) com um repositório da AWS. CodeCommit O CodePipeline pipeline da AWS é escrito usando o [AWS Cloud Development Kit (AWS CDK) v2](https://aws.amazon.com/cdk/).

Usando CodePipeline, você pode modelar os diferentes estágios do seu processo de lançamento de software por meio da interface do AWS Management Console, da AWS Command Line Interface (AWS CLI), da CloudFormation AWS ou da AWS. SDKs Esse padrão demonstra a implementação CodePipeline e seus componentes usando o AWS CDK. Além da estrutura de bibliotecas, o AWS CDK inclui um kit de ferramentas (o comando `cdk` CLI), que é a principal ferramenta para interagir com seu aplicativo do AWS CDK. Entre outras funções, o kit de ferramentas oferece a capacidade de converter uma ou mais pilhas em CloudFormation modelos e implantá-las em uma conta da AWS.

O pipeline inclui testes para validar a segurança de suas bibliotecas de terceiros e ajuda a garantir o lançamento rápido e automatizado nos ambientes especificados. Você pode aumentar a segurança geral de seus aplicativos submetendo-os a um processo de validação.

A intenção desse padrão é acelerar o uso de CI/CD pipelines para implantar seu código e, ao mesmo tempo, garantir que os recursos implantados sigam as DevOps melhores práticas. Depois de implementar o [código de exemplo](https://github.com/aws-samples/aws-codepipeline-cicd), você terá uma [AWS CodePipeline](https://aws.amazon.com/codepipeline/) com processos de linting, testes, verificação de segurança, implantação e pós-implantação. Esse padrão também inclui etapas para o Makefile. Usando um Makefile, os desenvolvedores podem reproduzir CI/CD etapas localmente e aumentar a velocidade do processo de desenvolvimento.

## Pré-requisitos e limitações
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um entendimento básico sobre o seguinte:
  + AWS CDK
  + AWS CloudFormation
  + AWS CodePipeline
  + TypeScript

**Limitações**

Esse padrão usa o [AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) TypeScript apenas para. Ela não abrange outras linguagens suportadas pelo AWS CDK.

**Versões do produto**

Certifique-se de usar as versões mais recentes destas ferramentas:
+ AWS Command Line Interface (AWS CLI)
+ cfn\$1nag
+ git-remote-codecommit
+ Node.js

## Arquitetura
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS CDK
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodePipeline

**Arquitetura de destino**

O pipeline é acionado por uma alteração no CodeCommit repositório da AWS (`SampleRepository`). No início, CodePipeline cria artefatos, se atualiza e inicia o processo de implantação. O pipeline resultante implanta uma solução em três ambientes independentes:
+ Dev – Verificação de código em três etapas no ambiente de desenvolvimento ativo
+ Teste: ambiente de teste de integração e regressão
+ Prod: ambiente de produção

As três etapas incluídas no estágio de desenvolvimento são linting, segurança e testes unitários. Essas etapas são executadas paralelamente para acelerar o processo. Para garantir que o pipeline forneça somente artefatos funcionais, sua execução será interrompida sempre que uma etapa do processo falhar. Depois de uma implantação em fase de desenvolvimento, o pipeline executa testes de validação para verificar os resultados. Em caso de sucesso, o pipeline implantará os artefatos no ambiente de teste, que contém a validação pós-implantação. A etapa final é implantar os artefatos no ambiente do Prod.

O diagrama a seguir mostra o fluxo de trabalho do CodeCommit repositório até os processos de criação e atualização executados por CodePipeline, as três etapas do ambiente de desenvolvimento e a implantação e validação subsequentes em cada um dos três ambientes.

![\[O ambiente de desenvolvimento inclui análise de código, teste de segurança e teste de unidade, todos com processos de implantação e validação.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)


## Ferramentas
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-tools"></a>

**Serviços da AWS**
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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. Nesse padrão, os CloudFormation modelos podem ser usados para criar um CodeCommit repositório e um pipeline de CodePipeline CI/CD.
+  CodeCommitA [AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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.
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) é um CI/CD serviço que ajuda você a modelar e configurar rapidamente os diferentes estágios de um lançamento de software e automatizar as etapas necessárias para liberar alterações de software continuamente.
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.

**Outras ferramentas**
+ [cfn\$1nag](https://github.com/stelligent/cfn_nag) é uma ferramenta de código aberto que procura padrões em CloudFormation modelos para identificar possíveis problemas de segurança.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)é um utilitário para enviar e extrair código de CodeCommit repositórios estendendo o Git.
+ [O Node.js](https://nodejs.org/en/docs/) é um ambiente de tempo de JavaScript execução orientado a eventos projetado para criar aplicativos de rede escaláveis.

**Código **

O código desse padrão está disponível no repositório [ CodePipeline de CI/CD práticas GitHub da AWS](https://github.com/aws-samples/aws-codepipeline-cicd).

## Práticas recomendadas
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-best-practices"></a>

Analise os recursos, como políticas do AWS Identity and Access Management (IAM), para confirmar se eles estão alinhados com as melhores práticas organizacionais.

## Épicos
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-epics"></a>

### Instalar as ferramentas
<a name="install-tools"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale ferramentas no Linux ou no macOS. | Se você estiver usando macOS ou Linux, poderá instalar as ferramentas executando o seguinte comando no terminal de sua preferência ou usando o [Homebrew](https://docs.brew.sh/Homebrew-on-Linux) para Linux.<pre>brew install<br />brew install git-remote-codecommit<br />brew install ruby brew-gem<br />brew-gem install cfn-nag</pre> | DevOps engenheiro | 
| Configure a AWS CLI. | Para configurar a AWS CLI, use as instruções para seu sistema operacional:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps engenheiro | 

### Configure a implantação inicial
<a name="set-up-the-initial-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça download ou clonagem do código. | Para obter o código usado por esse padrão, siga um destes procedimentos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html)<pre>git clone --depth 1 https://github.com/aws-samples/aws-codepipeline-cicd.git</pre>Remova o diretório `.git` do repositório clonado.<pre>cd ./aws-codepipeline-cicd<br />rm -rf ./.git</pre>Posteriormente, você usará um CodeCommit repositório AWS recém-criado como origem remota. | DevOps engenheiro | 
| Conecte-se à conta da AWS. | Você pode se conectar usando um token de segurança temporário ou autenticação de zona de pouso. Para confirmar que você está usando a conta e a região da AWS corretas, execute os comandos a seguir.<pre>AWS_REGION="eu-west-1"<br />ACCOUNT_NUMBER=$(aws sts get-caller-identity --query Account --output text)<br />echo "${ACCOUNT_NUMBER}"</pre> | DevOps engenheiro | 
| Faça o bootstrap do ambiente. | Para fazer o bootstrap de um ambiente AWS CDK, execute os seguintes comandos:<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre>Depois de inicializar o ambiente com sucesso, a saída a seguir deve ser exibida.<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre>Para obter mais informações sobre o bootstrapping do AWS CDK, consulte a [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html). | DevOps engenheiro | 
| Sintetize um modelo. | Para sintetizar um aplicativo do AWS CDK, use o comando `cdk synth`.<pre>npm run cdk synth</pre>Você verá a saída a seguir.<pre>Successfully synthesized to <path-to-directory>/aws-codepipeline-cicd/cdk.out<br />Supply a stack id (CodePipeline, Dev-MainStack) to display its template.</pre> | DevOps engenheiro | 
| Implante a CodePipeline pilha. | Agora que você inicializou e sintetizou o CloudFormation modelo, você pode implantá-lo. A implantação criará o CodePipeline pipeline e um CodeCommit repositório, que serão a fonte e o gatilho do pipeline.<pre>npm run cdk -- deploy CodePipeline --require-approval never</pre>Depois de executar o comando, você deverá ver uma implantação bem-sucedida da CodePipeline pilha e das informações de saída. `CodePipeline.RepositoryName`Fornece o nome do CodeCommit repositório na conta da AWS.<pre>CodePipeline: deploying...<br />CodePipeline: creating CloudFormation changeset...<br />✅  CodePipeline<br />Outputs:<br />CodePipeline.RepositoryName = SampleRepository<br />Stack ARN:<br />arn:aws:cloudformation:REGION:ACCOUNT-ID:stack/CodePipeline/STACK-ID</pre> | DevOps engenheiro | 
| Configure o CodeCommit repositório e a ramificação remotos. | Depois de uma implantação bem-sucedida, CodePipeline iniciará a primeira execução do pipeline, que você pode encontrar no [ CodePipeline console da AWS](https://eu-west-1.console.aws.amazon.com/codesuite/codepipeline/pipelines). Como o AWS CDK e CodeCommit não iniciam uma ramificação padrão, essa execução inicial do pipeline falhará e retornará a seguinte mensagem de erro.<pre>The action failed because no branch named main was found in the selected AWS CodeCommit repository SampleRepository. Make sure you are using the correct branch name, and then try again. Error: null</pre>Para corrigir esse erro, configure uma origem remota como `SampleRepository` e crie a ramificação `main` necessária.<pre>RepoName=$(aws cloudformation describe-stacks --stack-name CodePipeline --query "Stacks[0].Outputs[?OutputKey=='RepositoryName'].OutputValue" --output text)<br />echo "${RepoName}"<br />#<br />git init<br />git branch -m master main<br />git remote add origin codecommit://${RepoName}<br />git add .<br />git commit -m "Initial commit"<br />git push -u origin main</pre> | DevOps engenheiro | 

### Teste o pipeline implantado CodePipeline
<a name="test-the-deployed-codepipeline-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirme uma alteração para ativar o pipeline. | Depois de uma implantação inicial bem-sucedida, você deve ter um CI/CD pipeline completo com uma `main` ramificação `SampleRepository` como ramificação de origem. Assim que você confirmar as alterações na ramificação `main`, o pipeline iniciará e executará a seguinte sequência de ações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps engenheiro | 

### Teste localmente usando um Makefile
<a name="test-locally-by-using-a-makefile"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute o processo de desenvolvimento usando um Makefile. | Você pode executar todo o pipeline localmente usando o comando`make` ou pode executar uma etapa individual (por exemplo, `make linting`).Para testar o uso de `make`, execute as seguintes ações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | Desenvolvedor de aplicativos, DevOps engenheiro | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os recursos do aplicativo AWS CDK. | Para limpar seu aplicativo AWS CDK, execute o comando a seguir.<pre>cdk destroy --all</pre>Esteja ciente de que os buckets do Amazon Simple Storage Service (Amazon S3) criados durante a inicialização não são excluídos automaticamente. Eles precisam de uma política de retenção que permita a exclusão, ou você precisa excluí-los manualmente na sua conta da AWS. | DevOps engenheiro | 

## Solução de problemas
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O modelo não está funcionando conforme o esperado. | Se algo der errado e o modelo não estiver funcionando, verifique se você tem o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | 

## Recursos relacionados
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-resources"></a>
+ [Introdução às tarefas comuns do Centro de Identidade do IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)
+ [ CodePipeline Documentação da AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

# Configuração do registro em log centralizado em escala empresarial usando o Terraform
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform"></a>

*Aarti Rajput, Yashwant Patel e Nishtha Yadav, Amazon Web Services*

## Resumo
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-summary"></a>

O registro em log centralizado é vital para a infraestrutura de nuvem de uma organização, pois fornece visibilidade de suas operações, segurança e conformidade. À medida que sua organização expande seu AWS ambiente em várias contas, uma estratégia estruturada de gerenciamento de registros se torna fundamental para executar operações de segurança, atender aos requisitos de auditoria e alcançar a excelência operacional.

Esse padrão fornece uma estrutura escalável e segura para centralizar registros de vários serviços Contas da AWS e, a fim de permitir o gerenciamento de registros em escala empresarial em implantações complexas. AWS A solução é automatizada usando o Terraform, que é uma ferramenta de infraestrutura como código (IaC) HashiCorp que garante implantações consistentes e reproduzíveis e minimiza a configuração manual. Ao combinar o Amazon CloudWatch Logs, o Amazon Data Firehose e o Amazon Simple Storage Service (Amazon S3), você pode implementar um pipeline robusto de agregação e análise de logs que fornece:
+ Gerenciamento centralizado de registros em toda a sua organização em AWS Organizations
+ Coleta automatizada de logs com controles de segurança integrados
+ Processamento de logs escalável e armazenamento durável
+ Relatórios de conformidade e trilhas de auditoria simplificados
+ Monitoramento e insights operacionais em tempo real

A solução coleta registros de contêineres e funções do Amazon Elastic Kubernetes Service (Amazon EKS AWS Lambda ), funções e instâncias de banco de dados do Amazon Relational Database Service (Amazon RDS) por meio de registros. CloudWatch Ele encaminha automaticamente esses registros para uma conta de registro dedicada usando filtros de CloudWatch assinatura. O Firehose gerencia o pipeline de fluxo de logs de throughput ao Amazon S3 para armazenamento em longo prazo. O Amazon Simple Queue Service (Amazon SQS) é configurado para receber notificações de eventos do Amazon S3 na criação de objetos. Isso permite a integração com serviços de analytics, incluindo:
+ Amazon OpenSearch Service para pesquisa de registros, visualização e análise em tempo real
+ Amazon Athena para consultas baseadas em SQL
+ Amazon EMR para processamento em grande escala
+ Lambda para transformação personalizada
+ Amazon Quick Sight para painéis

Todos os dados são criptografados usando AWS Key Management Service (AWS KMS), e toda a infraestrutura é implantada usando o Terraform para uma configuração consistente em todos os ambientes.

Essa abordagem de registro centralizado permite que as organizações melhorem sua postura de segurança, mantenham os requisitos de conformidade e otimizem a eficiência operacional em toda a AWS infraestrutura.

## Pré-requisitos e limitações
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-prereqs"></a>

**Pré-requisitos **
+ Uma zona de pouso para sua organização que é criada usando o [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)
+ [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html), implantado e configurado com as contas necessárias
+ [Terraform](https://developer.hashicorp.com/terraform/downloads) para provisionar a infraestrutura
+ AWS Identity and Access Management Funções e políticas [(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html) para acesso entre contas

Para obter instruções sobre como configurar AWS Control Tower contas AFT e Application, consulte a [seção Epics](#set-up-centralized-logging-at-enterprise-scale-by-using-terraform-epics).

**Contas obrigatórias**

Sua organização AWS Organizations deve incluir as seguintes contas:
+ **Conta de aplicativo** — Uma ou mais contas de origem nas quais Serviços da AWS (Amazon EKS, Lambda e Amazon RDS) são executadas e geram registros
+ **Conta de arquivamento de logs**: uma conta dedicada para armazenamento e gerenciamento centralizados de logs

**Versões do produto**
+ [AWS Control Tower versão 3.1](https://docs.aws.amazon.com/controltower/latest/userguide/2023-all.html#lz-3-1) ou posterior
+ [Terraform versão 0.15.0](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) ou versões posteriores

## Arquitetura
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-architecture"></a>

O diagrama a seguir ilustra uma arquitetura de registro AWS centralizada que fornece uma solução escalável para coletar, processar e armazenar registros de várias contas de aplicativos em uma conta dedicada do Log Archive. Essa arquitetura gerencia com eficiência os registros de Serviços da AWS, incluindo Amazon RDS, Amazon EKS e Lambda, e os encaminha por meio de um processo simplificado para os buckets regionais do S3 na conta do Log Archive.

![\[Arquitetura de registro em log centralizado da AWS para coletar logs de várias contas de aplicações.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9fc71a10-65d6-437b-9128-cc27bda11af4/images/2e916040-0f11-4712-a8dd-31c95194ce5d.png)


O fluxo de trabalho inclui cinco processos:

1. **Processo de fluxo de logs**
   + O processo de fluxo de registros começa nas contas do aplicativo, onde são Serviços da AWS gerados vários tipos de registros, como registros gerais, de erros, de auditoria, de consultas lentas do Amazon RDS, registros do plano de controle do Amazon EKS e registros de execução de funções e erros do Lambda.
   + CloudWatch serve como ponto de coleta inicial. Ele reúne esses logs no nível do grupo de logs em cada conta de aplicação.
   + Em CloudWatch, [os filtros de assinatura](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html) determinam quais registros devem ser encaminhados para a conta central. Esses filtros oferecem controle granular sobre o encaminhamento de logs, para que você possa especificar padrões de log exatos ou fluxos de log completos para centralização.

1. **Transferência de logs entre contas**
   + Os registros são movidos para a conta do Log Archive. CloudWatch os filtros de assinatura facilitam a transferência entre contas e preservam o contexto regional.
   + A arquitetura estabelece vários fluxos paralelos para lidar com diferentes fontes de log de forma eficiente, a fim de garantir performance e escalabilidade ideais.

1. **Processamento de logs na conta de arquivamento de logs**
   + Na conta de arquivamento de logs, o Firehose processa os fluxos de logs recebidos.
   + Cada região mantém fluxos de entrega dedicados do Firehose que podem transformar, converter ou enriquecer os logs conforme necessário.
   + Esses fluxos do Firehose entregam os logs processados aos buckets do S3 na conta de arquivamento de logs, que está localizada na mesma região das contas de aplicações de origem (Região A no diagrama) para manter os requisitos de soberania de dados.

1. **Notificações e fluxos de trabalho adicionais**
   + Quando os logs chegam aos buckets do S3 de destino, a arquitetura implementa um sistema de notificações usando o Amazon SQS.
   + As filas regionais de SQS permitem o processamento assíncrono e podem acionar fluxos de trabalho adicionais, analytics ou sistemas de alertas com base nos logs armazenados.

1. **AWS KMS para segurança**

   A arquitetura é incorporada AWS KMS para fins de segurança. AWS KMS fornece chaves de criptografia para os buckets do S3. Isso garante que todos os logs armazenados mantenham a criptografia em repouso, assegurando a criptografia regional para atender aos requisitos de residência de dados.

## Ferramentas
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-tools"></a>

**Serviços da AWS**
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) é um serviço de monitoramento e observabilidade que coleta dados operacionais e de monitoramento na forma de registros, métricas e eventos. Ele fornece uma visão unificada dos AWS recursos, aplicativos e serviços que são executados na AWS e em servidores locais.
+ CloudWatch Os [filtros de assinatura de registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html) são expressões que correspondem a um padrão nos eventos de registro recebidos e entregam eventos de registro correspondentes ao AWS recurso especificado para processamento ou análise adicionais.
+ AWS Control Tower O [Account Factory For Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) configura um pipeline do Terraform para ajudá-lo a provisionar e personalizar contas em. AWS Control Tower O AFT fornece provisionamento de contas baseado em Terraform, permitindo que você administre suas contas com. AWS Control Tower
+ [O Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) fornece dados de streaming em tempo real para destinos como Amazon S3, Amazon Redshift e Amazon Service. OpenSearch Ele faz o dimensionamento automático para corresponder ao throughput de seus dados, e não requer administração contínua.
+ O [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) é um serviço gerenciado de orquestração de contêineres que facilita a implantação, o gerenciamento e o dimensionamento de aplicações em contêineres usando o Kubernetes. Ele gerencia automaticamente a disponibilidade e a escalabilidade dos nós do ambiente de gerenciamento do Kubernetes.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) cria e controla chaves de criptografia para criptografar seus dados. AWS KMS se integra a outros Serviços da AWS para ajudá-lo a proteger os dados que você armazena com esses serviços.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação com tecnologia sem servidor que permite executar código sem provisionar nem gerenciar servidores. Ele dimensiona automaticamente as aplicações executando o código em resposta a cada gatilho e cobra apenas pelo tempo de computação usado.
+ O [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) é um serviço de banco de dados relacional gerenciado que facilita a configuração, a operação e o dimensionamento de um banco de dados relacional na nuvem. Ele fornece recursos econômicos e redimensionáveis enquanto automatiza tarefas administrativas demoradas.
+ O [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) é um serviço de enfileiramento de mensagens que permite desacoplar e dimensionar microsserviços, sistemas distribuídos e aplicações com tecnologia sem servidor. Ele elimina a complexidade de gerenciar e operar o middleware orientado a mensagens.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que oferece escalabilidade, disponibilidade de dados, segurança e performance. Ele pode armazenar e recuperar qualquer quantidade de dados, de qualquer lugar na web.

**Outras ferramentas**
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

**Código **

O código desse padrão está disponível no repositório de [registro GitHub centralizado](https://github.com/aws-samples/sample-centralised-logging-at-enterprise-scale-using-terraform).

## Práticas recomendadas
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-best-practices"></a>
+ Use [vários Contas da AWS em uma única organização em AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts.html). Essa prática permite o gerenciamento centralizado e o registro em log padronizado em todas as contas.
+ Configure [buckets do S3 com versionamento, políticas de ciclo de vida e replicação entre regiões](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html). Implemente registro em log de acessos e criptografia para fins de segurança e conformidade.
+ Implemente [padrões de registro em log comuns usando o formato JSON](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData-discoverable-fields.html) com campos e carimbos de data/hora padrão. Use uma estrutura de prefixo e correlação consistentes IDs para facilitar o rastreamento e a análise.
+ Habilite [controles de segurança com AWS KMS criptografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) e acesso com privilégios mínimos. Mantenha o AWS CloudTrail monitoramento e a rotação regular de chaves para aumentar a segurança.
+ Configure [CloudWatch métricas e alertas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) para rastreamento de entrega. Monitore os custos e a performance com notificações automatizadas.
+ Configure as [políticas de retenção do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) para atender aos requisitos de conformidade e habilite o registro em log de acesso ao servidor do Amazon S3 para rastrear todas as solicitações feitas aos buckets do S3. Mantenha a documentação das regras de ciclo de vida e políticas de bucket do S3. Realize avaliações periódicas dos logs de acesso, permissões de buckets e configurações de armazenamento para ajudar a garantir a conformidade e as [práticas recomendadas de segurança](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html).

## Épicos
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-epics"></a>

### Contas de configuração AWS Control Tower, AFT e de aplicativos
<a name="set-up-ctowerlong-aft-and-application-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure um AWS Control Tower ambiente com o AFT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | Administrador da AWS | 
| Habilite o compartilhamento de recursos na organização. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | Administrador da AWS | 
| Verifique ou provisione contas de aplicações. | Para provisionar novas contas de aplicações para seu caso de uso, crie-as por meio do AFT. Para obter mais informações, consulte [Provisionar uma nova conta com o AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-provision-account.html) na AWS Control Tower documentação. | Administrador da AWS | 

### Definir arquivos de configuração para contas de aplicações
<a name="set-up-configuration-files-for-application-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Copie o conteúdo da pasta `Application_account` para o repositório `aft-account-customizations`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 
| Analise e edite os parâmetros de entrada para configurar a conta de aplicação. | Nesta etapa, você configura o arquivo de configuração para criar recursos em contas de aplicativos, incluindo grupos de CloudWatch log, filtros de CloudWatch assinatura, funções e políticas do IAM e detalhes de configuração das funções Amazon RDS, Amazon EKS e Lambda.No seu repositório `aft-account-customizations`, na pasta `Application_account`, configure os parâmetros de entrada no arquivo `terraform.tfvars` com base nos requisitos da sua organização:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 

### Definir arquivos de configuração para a conta de arquivamento de logs
<a name="set-up-configuration-files-for-the-log-archive-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Copie o conteúdo da pasta `Log_archive_account` para o repositório `aft-account-customizations`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 
| Analise e edite os parâmetros de entrada para configurar a conta de arquivamento de logs. | Nesta etapa, você define o arquivo de configuração para criar recursos na conta de arquivamento de logs, incluindo fluxos de entrega do Firehose, buckets do S3, filas do SQS e políticas e perfis do IAM.Na pasta `Log_archive_account` do seu repositório `aft-account-customizations`, configure os parâmetros de entrada no arquivo `terraform.tfvars` com base nos requisitos da sua organização:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 

### Executar comandos do Terraform para provisionar recursos
<a name="run-terraform-commands-to-provision-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Opção 1: implante os arquivos de configuração do Terraform pelo AFT. | No AFT, o pipeline do AFT é acionado depois que você envia o código com as alterações de configuração para o GitHub `aft-account-customizations` repositório. O AFT detecta automaticamente as alterações e inicia o processo de personalização da conta.Depois de fazer alterações nos arquivos do Terraform (`terraform.tfvars`), confirme e envie suas alterações para o seu repositório `aft-account-customizations`:<pre>$ git add *<br />$ git commit -m "update message"<br />$ git push origin main</pre>Se você estiver usando uma ramificação diferente (como `dev`), substitua `main` pelo nome da ramificação. | DevOps engenheiro | 
| Opção 2: implante o arquivo de configuração do Terraform manualmente. | Se você não estiver usando o AFT ou se quiser implantar a solução manualmente, poderá usar os seguintes comandos do Terraform nas pastas `Application_account` e `Log_archive_account`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 

### Validar recursos
<a name="validate-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verifique os filtros de assinatura. | Para verificar se os filtros de assinatura encaminham os logs corretamente dos grupos de logs da conta de aplicação para a conta de arquivamento de logs:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 
| Verifique os fluxos do Firehose. | Para verificar se os fluxos do Firehose na conta de arquivamento de logs processam os logs de aplicações corretamente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 
| Valide os buckets do S3 centralizados. | Para verificar se os buckets do S3 centralizados recebem e organizam os logs adequadamente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 
| Valide as filas do SQS. | Para verificar se as filas do SQS recebem notificações de novos arquivos de log:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Opção 1: desative o arquivo de configuração do Terraform do AFT. | Quando você remove os arquivos de configuração do Terraform e envia as alterações, o AFT inicia automaticamente o processo de remoção de recursos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 
| Opção 2: limpe os recursos do Terraform manualmente. | Se você não estiver usando o AFT ou se quiser limpar os recursos manualmente, use os seguintes comandos do Terraform nas pastas `Application_account` e `Log_archive_account`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps engenheiro | 

## Solução de problemas
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O destino dos CloudWatch registros não foi criado ou está inativo. | Valide o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 
| O filtro de assinatura falhou ou está travado no status pendente. | Verifique o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 
| O fluxo de entrega do Firehose não mostra registros de entrada. | Verifique o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 

## Recursos relacionados
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-resources"></a>
+ [Configuração da infraestrutura do Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started) (documentação do Terraform)
+ [Implante o AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html) (AWS Control Tower documentação)
+ [Tutorial do IAM: delegue o acesso Contas da AWS usando funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) () IAMdocumentation

# Configure a end-to-end criptografia para aplicativos no Amazon EKS usando cert-manager e Let's Encrypt
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt"></a>

*Mahendra Revanasiddappa e Vasanth Jeyaraj, Amazon Web Services*

## Resumo
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-summary"></a>

A implementação da end-to-end criptografia pode ser complexa e você precisa gerenciar certificados para cada ativo em sua arquitetura de microsserviços. Embora você possa encerrar a conexão Transport Layer Security (TLS) na borda da rede Amazon Web Services (AWS) com um Network Load Balancer ou Amazon API Gateway, algumas organizações exigem criptografia. end-to-end

Esse padrão usa o controlador do Ingress NGINX para entrada. Isso ocorre porque quando você cria uma entrada do Kubernetes, o recurso de entrada usa um Network Load Balancer. O Network Load Balancer não permite fazer o upload de certificados de cliente. Portanto, você não pode obter o TLS mútuo com a entrada do Kubernetes.

Esse padrão é destinado a organizações que exigem autenticação mútua entre todos os microsserviços em seus aplicativos. O TLS mútuo reduz a carga de manter nomes de usuário ou senhas e também pode usar a estrutura de segurança turnkey. A abordagem desse padrão é compatível se sua organização tiver um grande número de dispositivos conectados ou precisar cumprir rígidas diretrizes de segurança.

Esse padrão ajuda a aumentar a postura de segurança da sua organização implementando end-to-end criptografia para aplicativos executados no Amazon Elastic Kubernetes Service (Amazon EKS). Esse padrão fornece um exemplo de aplicativo e código na GitHub [End-to-end criptografia no repositório Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme) para mostrar como um microsserviço é executado com end-to-end criptografia no Amazon EKS. A abordagem do padrão usa o [gerenciador de certificados](https://cert-manager.io/docs/), um complemento do Kubernetes, com o [Let's Encrypt](https://letsencrypt.org/) como autoridade de certificação (CA). O Let's Encrypt é uma solução econômica para gerenciar certificados e fornece certificados gratuitos válidos por 90 dias. O Gerenciador de certificados automatiza o provisionamento sob demanda e a alternância de certificados quando um novo microsserviço é implantado no Amazon EKS. 

**Público-alvo**

Esse padrão é recomendado para usuários com experiência com Kubernetes, TLS, Amazon Route 53 e Sistema de Nomes de Domínio (DNS).

## Pré-requisitos e limitações
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um cluster do Amazon EKS existente.
+ AWS Command Line Interface (AWS CLI) versão 1.7 ou superior, instalada e configurada no macOS, Linux ou Windows
+ O utilitário de linha de comando `kubectl`, instalado e configurado para acessar o cluster Amazon EKS. Para obter mais informações, consulte [Instalação do kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) na documentação do Amazon EKS.
+ O nome de um DNS existente para testar o aplicativo. Para obter mais informações, consulte [Registrar nomes de domínio usando o Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html) na documentação do Amazon Route 53. 
+ A versão mais recente do [Helm](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) instalada em sua máquina local. Para obter mais informações sobre isso, consulte [Usando o Helm com o Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) na documentação do Amazon EKS e no repositório do GitHub [Helm](https://github.com/helm/helm). 
+ A GitHub [End-to-end criptografia no repositório Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme), clonada em sua máquina local. 
+ Substitua os seguintes valores nos `trustpolicy.json` arquivos `policy.json` e da GitHub [End-to-end criptografia clonada no repositório Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme):
  + `<account number>`: substitua pelo ID da conta da AWS para a conta na qual você deseja implantar a solução. 
  + `<zone id>`: substitua pelo ID de zona do Route 53 do nome de domínio. 
  + `<node_group_role>`: substitua pelo nome do AWS Identity and Access Management perfil do (IAM) associado aos nós do Amazon EKS.
  + `<namespace>`: substitua pelo namespace Kubernetes no qual você implanta o controlador do Ingress NGINX e o aplicativo de amostra.
  + `<application-domain-name>`: substitua pelo nome de domínio DNS do Route 53.

**Limitações**
+ Esse padrão não descreve como alternar certificados e apenas demonstra como usar certificados com microsserviços no Amazon EKS. 

## Arquitetura
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-architecture"></a>

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

![\[Fluxo de trabalho para configurar criptografia em aplicações no Amazon EKS usando “cert-manager” e “Let’s Encrypt”.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9aa3ee9e-73db-41f5-a467-b5c47fef496e/images/40692ede-6fb3-474e-8c9e-85c51529e8ad.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um cliente envia uma solicitação para acessar o aplicativo para o nome DNS.

1. O registro do Route 53 é um CNAME para o Network Load Balancer.

1. O Network Load Balancer encaminha a solicitação para o controlador do Ingress NGINX que está configurado com um receptor TLS. A comunicação entre o controlador do Ingress NGINX e o Network Load Balancer segue o protocolo HTTPS.

1. O controlador do Ingress NGINX executa o roteamento baseado em caminhos conforme a solicitação do cliente ao serviço do aplicativo.

1. O serviço do aplicativo encaminha a solicitação para o pod do aplicativo. O aplicativo é projetado para usar o mesmo certificado chamando segredos.

1. Os pods executam o aplicativo de amostra usando os certificados do gerenciador de certificados. A comunicação entre o controlador do Ingress NGINX e os pods usa HTTPS.


| 
| 
| Observação: o gerenciador de certificados é executado em seu próprio namespace. Ele usa uma função de cluster do Kubernetes para provisionar certificados como segredos em namespaces específicos. Você pode anexar esses namespaces aos pods de aplicativos e ao controlador do Ingress NGINX.  | 
| --- |

## Ferramentas
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-tools"></a>

**Serviços da AWS**
+ O [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) é um serviço gerenciado que você pode usar para executar o Kubernetes na AWS , eliminando a necessidade de instalar, operar e manter seus próprios nós ou ambiente de gerenciamento ou nós do Kubernetes.
+ O [Balanceador de carga Elastic](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribui automaticamente seu tráfego de entrada entre vários destinos, contêineres e endereços IP.
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é um serviço web de DNS altamente disponível e escalável.

**Outras ferramentas**
+ O [gerenciador de certificado](https://cert-manager.io/docs/installation/supported-releases/) é um complemento do Kubernetes que solicita certificados, os distribui para contêineres do Kubernetes e automatiza a renovação de certificados.
+ [O controlador do Ingress NGINX](https://kubernetes.github.io/ingress-nginx/) é uma solução de gerenciamento de tráfego para aplicativos nativos de nuvem em Kubernetes e ambientes em contêineres.

## Épicos
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-epics"></a>

### Crie e configure uma zona hospedada pública com o Route 53
<a name="create-and-configure-a-public-hosted-zone-with-route-53"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma zona hospedada no Route 53. | Faça login no Console de Gerenciamento da AWS, abra o console do Amazon Route 53, escolha **zona hospedada** e, em seguida, escolha **Criar zona hospedada**. Crie uma zona hospedada pública e registre o ID da zona. Para obter mais informações, consulte [Criar uma zona hospedada pública](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) na documentação do Amazon Route 53.O ACME DNS01 usa o provedor de DNS para publicar um desafio, permitindo que o “cert-manager” emita o certificado. Esse desafio pede que você comprove que controla o DNS do seu nome de domínio colocando um valor específico em um registro TXT sob esse nome de domínio. Depois que o Let's Encrypt fornece um token ao seu cliente ACME, seu cliente cria um registro TXT derivado desse token e da chave da sua conta, e coloca esse registro em `_acme-challenge.<YOURDOMAIN>`. Depois, o Let's Encrypt consulta o DNS desse registro. Se encontrar uma correspondência, você pode continuar a emitir um certificado. | AWS DevOps | 

### Configure um perfil do IAM para permitir que o gerenciador de certificado acesse a zona hospedada pública
<a name="configure-an-iam-role-to-allow-cert-manager-to-access-the-public-hosted-zone"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a política do IAM para o gerenciador de certificado.  | É necessária uma política do IAM para fornecer ao gerenciador de certificado permissão para validar que você é proprietário do domínio Route 53. O `policy.json` exemplo de política do IAM é fornecido no `1-IAMRole` diretório na GitHub [End-to-end criptografia clonada no repositório Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme).Use o seguinte comando da AWS CLI para criar a política do IAM.<pre>aws iam create-policy \<br />  --policy-name PolicyForCertManager \<br />  --policy-document file://policy.json</pre> | AWS DevOps | 
| Crie o perfil do IAM para gerenciador de certificado. | Após criar a política do IAM, é necessário criar um perfil do IAM. O exemplo `trustpolicy.json` de perfil do IAM é fornecido no diretório `1-IAMRole`.Use o seguinte comando da AWS CLI para criar o perfil do IAM.<pre>aws iam create-role \<br />  --role-name RoleForCertManager \<br />  --assume-role-policy-document file://trustpolicy.json</pre> | AWS DevOps | 
| Anexe a política ao perfil. | Execute o comando a seguir para anexar a política do IAM ao perfil do IAM. Substitua `AWS_ACCOUNT_ID` pelo seu ID da sua conta da AWS. <pre>aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::AWS_ACCOUNT_ID:policy/PolicyForCertManager \<br />  --role-name RoleForCertManager</pre> | AWS DevOps | 

### Configure o controlador de entrada NGINX no Amazon EKS
<a name="set-up-the-nginx-ingress-controller-in-amazon-eks"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o controlador de entrada NGINX. | Instale a versão mais recente do `nginx-ingress` usando o Helm. Você pode modificar a configuração `nginx-ingress` de acordo com seus requisitos antes de implantá-la. Esse padrão usa um Network Load Balancer anotado voltado para o interior e que está disponível no diretório `5-Nginx-Ingress-Controller`. Instale o controlador de entrada NGINX executando o seguinte comando Helm a partir do diretório `5-Nginx-Ingress-Controller`.`helm install test-nginx nginx-stable/nginx-ingress  -f  5-Nginx-Ingress-Controller/values_internal_nlb.yaml` | AWS DevOps | 
| Verifique se o controlador do Ingress NGINX está instalado. | Digite o comando `helm list`. A saída deve mostrar que o controlador do Ingress NGINX está instalado. | AWS DevOps | 
| Crie um registro A da Route 53. | O registro A aponta para o Network Load Balancer criado pelo controlador do Ingress NGINX.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 

### Configure o NGINX no VirtualServer Amazon EKS
<a name="set-up-nginx-virtualserver-on-amazon-eks"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o NGINX VirtualServer. | O VirtualServer recurso NGINX é uma configuração de balanceamento de carga que é uma alternativa ao recurso de entrada. A configuração para criar o VirtualServer recurso NGINX está disponível no `nginx_virtualserver.yaml` arquivo no `6-Nginx-Virtual-Server` diretório. Digite o comando a seguir `kubectl` para criar o recurso NGINX VirtualServer .`kubectl apply -f  nginx_virtualserver.yaml`Certifique-se de atualizar o nome de domínio da aplicação, o segredo do certificado e o nome do serviço da aplicação no arquivo `nginx_virtualserver.yaml`. | AWS DevOps | 
| Verifique se o NGINX VirtualServer foi criado. | Insira o comando a seguir `kubectl` para verificar se o VirtualServer recurso NGINX foi criado com sucesso.`kubectl get virtualserver`Verifique se a coluna `Host` corresponde ao nome de domínio da sua aplicação. | AWS DevOps | 
| Implante o servidor web NGINX com o TLS ativado. | Esse padrão usa um servidor web NGINX com TLS habilitado como aplicativo para testar a criptografia. end-to-end Os arquivos de configuração necessários para implantar o aplicativo de teste estão disponíveis no diretório `demo-webserver`. Execute o seguinte comando no `kubectl` para implantar o aplicativo.`kubectl apply -f nginx-tls-ap.yaml` | AWS DevOps | 
| Verifique se os recursos do aplicativo de teste foram criados. | Insira os seguintes comandos `kubectl` para verificar se os recursos necessários foram criados para o aplicativo de teste:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 
| Valide o aplicativo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 

## Recursos relacionados
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-resources"></a>

**Recursos da AWS**
+ [Criar registros usando o console do Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) (documentação do Amazon Route 53)
+ [Como usar um Network Load Balancer com o controlador de entrada NGINX no Amazon EKS](https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/) (publicação no blog da AWS)

**Outros recursos**
+ [Route 53](https://cert-manager.io/docs/configuration/acme/dns01/route53/) (documentação do gerenciador de certificado)
+ [Como configurar o DNS01 Challenge Provider](https://cert-manager.io/docs/configuration/acme/dns01/) (documentação do gerenciador de certificado)
+ [Desafio do Let's Encrypt DNS](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge) (documentação do Let's Encrypt)

# Simplificação da implantação de aplicações multilocatário no Amazon EKS usando o Flux
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux"></a>

*Nadeem Rahaman, Aditya Ambati, Aniket Dekate e Shrikant Patil, Amazon Web Services*

## Resumo
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-summary"></a>

Diversas empresas que fornecem produtos e serviços atuam em setores regulados por dados e devem preservar a separação de dados entre suas áreas internas. Este padrão descreve como você pode usar o recurso multilocatário no Amazon Elastic Kubernetes Service (Amazon EKS) para desenvolver uma plataforma de dados que garanta isolamento lógico e físico entre locatários ou usuários que compartilham um único cluster do Amazon EKS. O padrão oferece isolamento por meio das seguintes abordagens:
+ Isolamento entre namespaces no Kubernetes
+ Regras de controle de acesso com base em função (RBAC)
+ Políticas de rede
+ Cotas de recurso
+ AWS Identity and Access Management Funções (IAM) para contas de serviço (IRSA)

Além disso, a solução usa o Flux para garantir que a configuração do locatário permaneça imutável durante a implantação das aplicações. É possível implantar as aplicações do locatário especificando o repositório do locatário que contém o arquivo `kustomization.yaml` do Flux na sua configuração.

Este padrão realiza a implementação de:
+ Um AWS CodeCommit repositório, AWS CodeBuild projetos e um AWS CodePipeline pipeline, que são criados com a implantação manual de scripts do Terraform.
+ Componentes de rede e de computação necessários para hospedar os locatários. Eles são criados por meio CodePipeline e CodeBuild usando o Terraform.
+ Namespaces dos locatários, políticas de rede e cotas de recursos, os quais são configurados via chart do Helm.
+ Aplicações pertencentes a diferentes locatários, implantadas usando o Flux.

Recomendamos que você planeje e desenvolva cuidadosamente a própria arquitetura multilocatário com base em seus requisitos e considerações de segurança. Este padrão fornece um ponto de partida para a sua implementação.

## Pré-requisitos e limitações
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ AWS Command Line Interface [(AWS CLI) versão 2.11.4 ou posterior, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) versão 0.12 ou versões posteriores, instalado em sua máquina local
+ [Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest) versão 3.0.0 ou versões posteriores
+ [Kubernetes Provider](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs) versão 2.10 ou versões posteriores
+ [Helm Provider](https://registry.terraform.io/providers/hashicorp/helm/latest/docs) versão 2.8.0 ou versões posteriores
+ [Kubectl Provider](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs) versão 1.14 ou versões posteriores

**Limitações**
+ **Dependência de implantações manuais do Terraform:** a configuração inicial do fluxo de trabalho, incluindo a criação de CodeCommit repositórios, CodeBuild projetos e CodePipeline pipelines, depende de implantações manuais do Terraform. Isso introduz uma limitação potencial em termos de automação e escalabilidade, pois exige intervenção manual para alterações na infraestrutura.
+ **CodeCommit dependência do repositório:** o fluxo de trabalho depende dos CodeCommit repositórios como solução de gerenciamento de código-fonte e é fortemente acoplado a. Serviços da AWS

## Arquitetura
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-architecture"></a>

**Arquiteturas de destino**

Este padrão implanta três módulos para criar o pipeline e a infraestrutura de rede e de computação de uma plataforma de dados, conforme ilustrado nos diagramas a seguir.

*Arquitetura do pipeline:*

![\[Infraestrutura do pipeline para uma arquitetura multilocatário no Amazon EKS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/76a4a23d-4275-427a-ae36-51c9a3803128.png)


*Arquitetura da rede:*

![\[Infraestrutura da rede para uma arquitetura multilocatário no Amazon EKS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/e542249a-19a3-4c99-b6f5-fdf80fee4edf.png)


*Arquitetura da computação:*

![\[Infraestrutura da computação para uma arquitetura multilocatário no Amazon EKS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/91bd1ca8-17f0-433c-8600-4c8e6c474e31.png)


## Ferramentas
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-tools"></a>

**Serviços da AWS**
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.
+ O [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é um serviço de controle de versão que ajuda no armazenamento e no gerenciamento de repositórios Git de forma privada, sem a necessidade de administrar o próprio sistema de controle de origem.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações.
+ [O Amazon Elastic Kubernetes Service (Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)) ajuda você a executar o AWS Kubernetes sem precisar instalar ou manter seu próprio plano de controle ou nós do Kubernetes.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)é um hub central que conecta nuvens privadas virtuais (VPCs) e redes locais.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

**Outras ferramentas**
+ As[ políticas de rede da Cilium](https://cilium.io/use-cases/network-policy/#:~:text=Cilium%20implements%20Kubernetes%20Network%20Policies,%2C%20Kafka%2C%20gRPC%2C%20etc.) fornecem suporte para as políticas do Kubernetes voltadas para as camadas 3 e 4. Essas políticas podem ser complementadas com políticas para a camada 7 para prover segurança de API em protocolos como HTTP, Kafka, gRPC e outros equivalentes.
+ O [Flux](https://fluxcd.io/) é uma ferramenta de entrega contínua (CD) baseada em Git que automatiza a implantação de aplicações no Kubernetes.
+ O [Helm](https://helm.sh/docs/) é um gerenciador de pacotes de código aberto para o Kubernetes que auxilia na instalação e no gerenciamento de aplicações no cluster do Kubernetes.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [EKS Multi-Tenancy Terraform Solution](https://github.com/aws-samples/aws-eks-multitenancy-deployment).

## Práticas recomendadas
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-best-practices"></a>

Para obter diretrizes e práticas recomendadas para o uso dessa implementação, consulte:
+ [Práticas recomendadas para a arquitetura multilocatário no Amazon EKS](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/)
+ [Documentação do Flux](https://fluxcd.io/flux/get-started/)

## Épicos
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-epics"></a>

### Criação de pipelines para as fases de desenvolvimento, teste e implantação do Terraform
<a name="create-pipelines-for-terraform-build-test-and-deploy-stages"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório do projeto. | Clone o repositório GitHub [EKS Multi-Tenancy Terraform Solution](https://github.com/aws-samples/aws-eks-multitenancy-deployment) executando o seguinte comando em uma janela de terminal:<pre>git clone https://github.com/aws-samples/aws-eks-multitenancy-deployment.git</pre> | AWS DevOps | 
| Inicialize o bucket do S3 do Terraform e o Amazon DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Atualize os arquivos `run.sh` e `locals.tf`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Implante o módulo do pipeline. | Para criar os recursos do pipeline, execute manualmente os comandos do Terraform apresentados a seguir. Não há orquestração para executar esses comandos automaticamente.<pre>./run.sh -m pipeline -e demo -r <AWS_REGION> -t init<br />./run.sh -m pipeline -e demo -r <AWS_REGION> -t plan<br />./run.sh -m pipeline -e demo -r <AWS_REGION> -t apply</pre> | AWS DevOps | 

### Criação da infraestrutura de rede
<a name="create-the-network-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Iniciar o pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html)Após essa primeira execução, o pipeline é iniciado automaticamente sempre que você confirma uma alteração na ramificação principal do CodeCommit repositório.O pipeline inclui as seguintes [fases](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-stages):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Valide os recursos criados por meio do módulo de rede. | Confirme se os seguintes AWS recursos foram criados após a implantação bem-sucedida do pipeline:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 

### Criação da infraestrutura de computação
<a name="create-the-compute-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Atualize `locals.tf` para permitir o acesso do CodeBuild projeto à VPC. | Para implantar os complementos para o cluster privado do Amazon EKS, o CodeBuild projeto deve ser anexado à VPC do Amazon EKS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Atualize os arquivos `buildspec` para desenvolver o módulo de computação. | Na pasta `templates`, em todos os arquivos YAML de `buildspec`, defina o valor da variável `TF_MODULE_TO_BUILD` de `network` para `compute`:<pre>TF_MODULE_TO_BUILD: "compute"</pre> | AWS DevOps | 
| Atualize o arquivo `values` para o chart do Helm de gerenciamento de locatários. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Valide os recursos de computação. | Depois de atualizar os arquivos nas etapas anteriores, CodePipeline inicia automaticamente. Confirme se ele criou os seguintes AWS recursos para a infraestrutura computacional:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 

### Verificação do gerenciamento de locatários e de outros recursos
<a name="check-tenant-management-and-other-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide os recursos de gerenciamento de locatários no Kubernetes. | Execute os comandos apresentados a seguir para verificar se os recursos de gerenciamento de locatários foram criados com êxito com a ajuda do Helm.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Verifique as implantações das aplicações dos locatários. | Execute os comandos apresentados a seguir para verificar se as aplicações dos locatários foram implantadas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) |  | 

## Solução de problemas
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Você recebe uma mensagem de erro semelhante a esta:`Failed to checkout and determine revision: unable to clone unknown error: You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit.` | Siga estas etapas para solucionar o problema:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | 

## Recursos relacionados
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-resources"></a>
+ [Amazon EKS Blueprints for Terraform](https://github.com/aws-ia/terraform-aws-eks-blueprints)
+ [Guia de práticas recomendadas do Amazon EKS, seção de arquitetura multilocatário](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/)
+ [Site do Flux](https://fluxcd.io/)
+ [Site do Helm](https://helm.sh/)

## Mais informações
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-additional"></a>

A seguir, apresentamos um exemplo de estrutura de repositório para a implantação das aplicações dos locatários:

```
applications
sample_tenant_app
├── README.md
├── base
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── ingress.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── tenant-1
    │   ├── configmap.yaml
    │   ├── deployment.yaml
    │   └── kustomization.yaml
    └── tenant-2
        ├── configmap.yaml
        └── kustomization.yaml
```

# Desenvolvimento e implantação simplificados de bots do Amazon Lex usando um fluxo de trabalho automatizado
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow"></a>

*Balaji Panneerselvam, Attila Dancso, Pavan Dusanapudi, Anand Jumnani e James O'Hara, Amazon Web Services*

## Resumo
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-summary"></a>

Desenvolver e implantar bots conversacionais do Amazon Lex pode ser um desafio quando você está tentando gerenciar vários recursos, desenvolvedores e ambientes. Um fluxo de trabalho automatizado usando princípios de infraestrutura como código (IaC) pode ajudar a agilizar o processo. Este padrão pode ajudar a melhorar a produtividade dos desenvolvedores do Amazon Lex e permitir o gerenciamento eficiente do ciclo de vida dos bots das seguintes formas:
+ **Permitir o desenvolvimento simultâneo de vários recursos**: com um fluxo de trabalho automatizado, os desenvolvedores podem trabalhar em diferentes recursos paralelamente em ramificações separadas. As alterações podem então ser mescladas e implantadas sem bloquear outros trabalhos.
+ **Usar a interface de usuário do console do Amazon Lex**: os desenvolvedores podem usar o console fácil de usar do Amazon Lex para criar e testar bots. Os bots são então descritos no código da infraestrutura para implantação
+ **Promover bots em todos os ambientes**: o fluxo de trabalho automatiza a promoção de versões de bots de ambientes inferiores, como de desenvolvimento e teste até a produção. Essa abordagem reduz o risco e a sobrecarga das promoções manuais.
+ **Manter o controle de versão**: o gerenciamento das definições de bots no Git, em vez de apenas por meio do serviço Amazon Lex, fornece controle de versão e uma trilha de auditoria. As alterações são rastreadas para desenvolvedores individuais, ao contrário de quando usamos apenas os bots armazenados Console de gerenciamento da AWS ou APIs modificados AWS. 

Ao automatizar o processo de lançamento de bots do Amazon Lex, as equipes podem fornecer recursos mais rapidamente com menos risco e esforço. Os bots permanecem sob controle de versão, em vez de isolados no console do Amazon Lex. 

## Pré-requisitos e limitações
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-prereqs"></a>

**Pré-requisitos **
+ O fluxo de trabalho envolve vários Contas da AWS ambientes diferentes (desenvolvimento, produção e DevOps), o que requer gerenciamento de contas e configurações de acesso entre contas.
+ Python 3.9 disponível em seu ambiente de implantação ou pipeline.
+ Git [instalado](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) e configurado em uma estação de trabalho local para controle de origem.
+ AWS Command Line Interface (AWS CLI) [instalado](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) e configurado para autenticação usando a linha de comando ou o Python.

**Limitações**
+ **Acesso ao repositório**: o fluxo de trabalho pressupõe que o pipeline de integração contínua e entrega contínua (CI/CD) tenha as permissões necessárias para confirmar alterações no repositório do código-fonte. 
+ **Versão inicial do bot** — As ferramentas exigem que uma versão inicial do bot seja implantada usando AWS CloudFormation modelos. Você deve criar a primeira iteração do bot e confirmá-la no repositório para que o fluxo de trabalho automatizado possa assumir o controle.
+ **Conflitos de mesclagem**: embora o fluxo de trabalho tenha como objetivo permitir o desenvolvimento simultâneo, ainda existe a possibilidade de conflitos de mesclagem ao integrar alterações de diferentes ramificações. A resolução de conflitos nas configurações de bots pode exigir intervenção manual.

**Versões do produto**
+ [Python 3.9](https://www.python.org/downloads/) ou posterior
+ [AWS CDK v2 2.124.0](https://docs.aws.amazon.com/cdk/api/versions.html) ou superior
+ [AWS SDK para Python (Boto3)](https://docs.aws.amazon.com/pythonsdk/) 1.28 ou posterior

## Arquitetura
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-architecture"></a>

O diagrama a seguir mostra a arquitetura de alto nível e os principais componentes da solução.

![\[Fluxo de trabalho para automatizar o desenvolvimento e a implantação de bots do Amazon Lex.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/3c7f9d16-9708-43c4-afa6-9d804d6b9dad/images/cdc73e82-a777-4e88-8bf8-a73c9bacb47f.png)


Os componentes principais incluem o seguinte:
+ **Repositório de bots do Lex**: um repositório Git que armazena as definições de IaC para os bots do Amazon Lex.
+ **DevOps**— Um Conta da AWS dedicado a abrigar os CI/CD dutos e os recursos relacionados para o processo de desenvolvimento e implantação.
+ **Pipelines** — As AWS CodePipeline instâncias que automatizam vários estágios do ciclo de vida de desenvolvimento e implantação de bots, como criar um novo bot, exportar a definição de um bot, importar uma definição de bot e excluir um bot.
+ **Bots de tíquetes e bot principal**: os recursos de bots do Amazon Lex, em que os bots de tíquetes se referem a bots de recursos específicos desenvolvidos por equipes ou desenvolvedores individuais e o bot principal se refere ao bot básico que integra todos os recursos.

O diagrama de arquitetura ilustra o seguinte fluxo de trabalho:

1. **Definir a linha de base do bot principal**: o ponto de partida do fluxo de trabalho é definir a linha de base do bot principal no ambiente de desenvolvimento (Dev). O bot principal serve como base para futuros desenvolvimentos e adições de recursos.

1. **Criar o bot de tíquetes**: quando um novo recurso ou alteração é necessário, um bot de tíquete é criado. O bot de tíquete é essencialmente uma cópia ou ramificação do bot principal em que os desenvolvedores podem trabalhar sem afetar a versão principal.

1. **Exportar o bot de tíquetes**: depois que o trabalho no bot de tíquetes estiver concluído, ele será exportado do serviço Amazon Lex. Em seguida, a ramificação que contém o bot de tíquete é realocada da ramificação principal. Essa etapa garante que todas as alterações feitas no bot principal enquanto o bot de tíquete estava em desenvolvimento sejam incorporadas, reduzindo possíveis conflitos.

1. **Importar bot de tíquete realocado e validar**: o bot de tíquete realocado é importado de volta para o ambiente de desenvolvimento e validado para garantir que funcione corretamente com as alterações mais recentes da ramificação principal. Se a validação for bem-sucedida, uma solicitação de pull (PR) será criada para mesclar as alterações do bot de tíquete na ramificação principal.

1. **Excluir bot de tíquete**: depois que as alterações forem mescladas com sucesso na ramificação principal, o bot de tíquete não será mais necessário. O bot de tíquete pode ser excluído para manter o ambiente limpo e gerenciável.

1. **Implantar o bot principal no ambiente de desenvolvimento e testar**: o bot principal atualizado, agora incluindo os novos recursos ou alterações, é implantado no ambiente de desenvolvimento. Aqui, ele passa por testes completos para garantir que todas as funcionalidades funcionem conforme o esperado.

1. **Implantar o bot principal no ambiente de produção**: depois que os testes no ambiente de desenvolvimento forem concluídos e bem-sucedidos, o bot principal será implantado no ambiente de produção. Essa etapa é o estágio final do fluxo de trabalho, no qual os novos recursos ficam disponíveis para os usuários finais.

**Automação e escala**

O fluxo de trabalho automatizado permite que os desenvolvedores trabalhem paralelamente em diferentes recursos, cada um em ramificações separadas. Isso facilita o desenvolvimento simultâneo, permitindo que as equipes colaborem de forma eficaz e forneçam recursos com mais rapidez. Com ramificações isoladas umas das outras, as mudanças podem ser mescladas e implantadas sem bloquear nem interferir em outros trabalhos em andamento.

O fluxo de trabalho automatiza a implantação e a promoção de versões de bots em diferentes ambientes, como desenvolvimento, teste e produção.

Armazenar as definições de bots em um sistema de controle de versão como o Git fornece uma trilha de auditoria abrangente e permite uma colaboração eficiente. As alterações são rastreadas para desenvolvedores individuais, garantindo transparência e responsabilidade em todo o ciclo de vida do desenvolvimento. Essa abordagem também facilita as revisões de código, permitindo que as equipes identifiquem e resolvam problemas antes da implantação na produção.

Usando AWS CodePipeline e outros Serviços da AWS, o fluxo de trabalho automatizado pode ser escalado para acomodar o aumento das cargas de trabalho e do tamanho das equipes.

## Ferramentas
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é uma estrutura de desenvolvimento de software de código aberto para definir Nuvem AWS infraestrutura em código usando linguagens de programação familiares e provisionando-a por meio dela. CloudFormation O exemplo de implementação neste padrão usa Python.
+ [AWS CDK Interface de linha de comando (AWS CDK CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) - O AWS CDK kit de ferramentas é a principal ferramenta para interagir com seu aplicativo. AWS CDK Ele executa seu aplicativo, interroga o modelo de aplicativo que você definiu e produz e implanta os CloudFormation modelos gerados pelo CDK.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS Esse padrão é usado CloudFormation para implantar as configurações de bots do Amazon Lex e os recursos relacionados usando a infraestrutura como código.
+ O [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação. Esse padrão é usado CodeBuild para criar e empacotar os artefatos de implantação.
+ O [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ajuda você a modelar e configurar rapidamente os diferentes estágios de uma versão de software, além de automatizar as etapas necessárias para a implantação contínua de alterações. Esse padrão é usado CodePipeline para orquestrar o pipeline de entrega contínua.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [O Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) serve AWS service (Serviço da AWS) para criar interfaces conversacionais (bots) para aplicativos usando voz e texto.
+ [AWS SDK para Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script Python com o. Serviços da AWS

**Outras ferramentas**
+ O [Git](https://git-scm.com/docs) é um sistema de código aberto de controle de versão distribuído.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [management-framework-sample-for-amazon-lex](https://github.com/aws-samples/management-framework-sample-for-amazon-lex). O repositório do código contém os seguintes arquivos e pastas:
+ `prerequisite`pasta — Contém definições de CloudFormation pilha (usando o AWS CDK) para configurar os recursos e ambientes necessários.
+ Pasta `prerequisite/lexmgmtworkflow`: diretório principal do projeto Lex Management Workflow, incluindo definições de pilha e código Python.
+ `prerequisite/tests`: contém testes de unidade.
+ Pasta `src`: diretório de código-fonte, incluindo o wrapper e utilitários de gerenciamento de bots do Amazon Lex.
+ `src/dialogue_lambda`: diretório de código-fonte da função do Lambda do hook de diálogo que intercepta e processa as entradas do usuário durante uma conversa com um bot do Amazon Lex.

## Práticas recomendadas
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-best-practices"></a>
+ **Separação de tarefas**
  + Mantenha uma separação clara de responsabilidades entre DevOps os ambientes de desenvolvimento e produção.
  + Use separadamente Contas da AWS para cada ambiente para impor limites adequados de isolamento e segurança.
  + Use perfis entre contas e princípios de acesso com privilégios mínimos para garantir o acesso controlado entre ambientes.
+ **Infraestrutura como código**
  + Revise e atualize regularmente o código da infraestrutura para se alinhar às práticas recomendadas e aos requisitos dinâmicos.
  + Estabeleça uma estratégia clara de ramificação e mesclagem para o repositório de código-fonte.
+ **Teste e validação**
  + Implemente testes automatizados em vários estágios do pipeline para detectar problemas no início do ciclo de desenvolvimento.
  + Use o console do Amazon Lex ou estruturas automatizadas de teste para validar as configurações e a funcionalidade de bots antes de promovê-los para ambientes superiores.
  + Considere a implementação de portas de aprovação manual para implantações em ambientes críticos ou de produção.
+ **Monitoramento e registro**
  + Configure mecanismos de monitoramento e registro em log para pipelines, implantações e interações de bots.
  + Monitore eventos do pipeline, status de implantação e métricas de performance de bots para identificar e resolver problemas imediatamente.
  + Use serviços da AWS, como Amazon CloudWatch, AWS CloudTrail, e AWS X-Ray para registro e monitoramento centralizados.
  + Revise e analise regularmente a performance, a eficiência e a eficácia do fluxo de trabalho automatizado.
+ **Segurança e conformidade**
  + Implemente práticas de codificação seguras e siga as melhores práticas AWS de segurança para o desenvolvimento e a implantação de bots do Amazon Lex.
  + Analise e atualize regularmente as permissões, as políticas e os perfis do IAM para se alinhar ao princípio de privilégio mínimo.
  + Considere integrar a verificação de segurança e as verificações de conformidade aos pipelines.

## Épicos
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-epics"></a>

### Configurar a IaC para o gerenciamento de bots do Amazon Lex
<a name="set-up-iac-for-lex2-bot-management"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o ambiente local do CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | AWS DevOps | 
| Crie um perfil entre contas no ambiente `devops`. | A `devops` conta é responsável por hospedar e gerenciar os CI/CD pipelines. Para permitir que os CI/CD pipelines interajam com os `prod` ambientes `dev` e, execute os comandos a seguir para criar uma função entre contas na `devops` conta.<pre>cdk bootstrap --profile=devops<br /><br />cdk deploy LexMgmtDevopsRoleStack -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops</pre> | AWS DevOps | 
| Crie um perfil entre contas no ambiente `dev`. | Crie um perfil do IAM na conta `dev` com as permissões necessárias para permitir que a conta `devops` assuma esse perfil. O CI/CD pipeline usa essa função para realizar ações na `dev` conta, como implantar e gerenciar recursos de bots do Amazon Lex.Para criar o perfil do IAM, execute os seguintes comandos:<pre>cdk bootstrap --profile=dev<br /><br />cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=dev</pre> | AWS DevOps | 
| Crie um perfil entre contas no ambiente `prod`. | Crie um perfil do IAM na conta `prod` com as permissões necessárias para permitir que a conta `devops` assuma esse perfil. O CI/CD pipeline usa essa função para realizar ações na `prod` conta, como implantar e gerenciar recursos de bots do Amazon Lex.<pre>cdk bootstrap --profile=prod<br /><br />cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=prod</pre> | AWS DevOps | 
| Crie pipelines no ambiente `devops`. | Para gerenciar o fluxo de trabalho de desenvolvimento de bots do Amazon Lex, execute o comando a seguir para configurar pipelines no ambiente `devops`. <pre>cdk deploy LexMgmtWorkflowStack -c devops-account-id=1111111111111 -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops</pre> | AWS DevOps | 

### Estabelecer a linha de base para o bot principal
<a name="establish-the-baseline-for-the-main-bot"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Defina a versão inicial do bot principal. | Para definir a versão inicial do bot principal, [acione](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-triggers) o pipeline `BaselineBotPipeline`.O pipeline implanta a definição básica de bot definida no CloudFormation modelo, exporta a definição principal do bot como arquivos.json e armazena o código principal do bot em um sistema de controle de versão. | AWS DevOps | 

### Implementar o fluxo de trabalho de desenvolvimento de recursos
<a name="implement-the-feature-development-workflow"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o bot de tíquetes para desenvolver e testar um recurso. | `TicketBot` é uma nova instância de bot importada da definição de bot principal existente na ramificação de recursos. Essa abordagem garante que o novo bot tenha todas as funcionalidades e configurações atuais do bot principal.Para definir a versão inicial do bot de tíquete, acione o pipeline `CreateTicketBotPipeline`.O pipeline cria uma nova ramificação de recurso no sistema de controle de versão e cria uma nova instância de bot de tíquete com base no bot principal. | Desenvolvedor de bots do Lex | 
| Desenvolva e teste o recurso de bot de tíquete.  | Para desenvolver e testar o recurso, faça login Console de gerenciamento da AWS e abra o console do Amazon Lex em [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/). Para obter mais informações, consulte [Testing a bot using the console](https://docs.aws.amazon.com/lexv2/latest/dg/test-bot.html) na documentação do Amazon Lex.Com a instância `TicketBot`, agora você pode adicionar, modificar ou estender a funcionalidade do bot para implementar o novo recurso. Por exemplo, você pode criar ou modificar intenções, enunciados, slots e fluxos de diálogo. Para obter mais informações, consulte [Adding intents](https://docs.aws.amazon.com/lexv2/latest/dg/add-intents.html) na documentação do Amazon Lex. | Desenvolvedor de bots do Lex | 
| Exporte a definição do bot de tíquete. | A definição de bot exportada é essencialmente uma representação da configuração e funcionalidade do bot no formato JSON.Para exportar a definição do bot de tíquete, acione o pipeline `ExportTicketBotPipeline`.O pipeline exporta a definição do bot de tíquete como um arquivo .json e armazena o código do bot de tíquete em uma ramificação de recurso no sistema de controle de versão. | Desenvolvedor de bots do Lex | 
| Realoque a ramificação do recurso da ramificação principal mais recente. | Durante o desenvolvimento de um novo recurso, a ramificação principal pode ter recebido outras alterações de diferentes desenvolvedores ou equipes. Para incorporar essas alterações na ramificação de recursos, execute uma operação `rebase` do Git. Essa operação basicamente reproduz as confirmações da ramificação de recursos em cima das confirmações mais recentes da ramificação principal, garantindo que a ramificação de recursos inclua todas as alterações mais recentes. | Desenvolvedor de bots do Lex | 
| Importe e valide o bot de tíquete realocado. | Depois de realocar a ramificação de recursos, você deverá importá-la para a instância do bot de tíquete. Essa importação atualiza o bot de tíquete existente com as alterações mais recentes da ramificação realocada.Para importar o bot de tíquete realocado, acione o pipeline `ImportTicketBotPipeline`.O pipeline importa os arquivos .json de definição do bot de tíquete na ramificação de recursos do sistema de controle de versão para a instância `TicketBot`. | Desenvolvedor de bots do Lex | 
| Valide a definição do bot realocado. | Depois de importar a definição de bot realocado, é fundamental validar sua funcionalidade. Você precisa garantir que o novo recurso funcione conforme o esperado e não entre em conflito com a funcionalidade existente. Essa validação normalmente envolve testar o bot com vários cenários de entrada, verificar as respostas e confirmar se o bot se comporta conforme o esperado. Você pode realizar a validação de uma das seguintes maneiras:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | Desenvolvedor de bots do Lex | 
| Mescle a ramificação de recursos na ramificação principal. | Depois de desenvolver e testar o novo recurso na instância `TicketBot` isolada, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | Desenvolvedor de bots do Lex, administrador de repositório | 
| Exclua a ramificação de recursos e o bot de tíquete.  | Depois que uma ramificação de recursos for mesclada com sucesso na ramificação principal, exclua a ramificação de recursos e o bot de tíquete do repositório de código-fonte. Para excluir a ramificação de recursos e o bot de tíquete, acione o pipeline `DeleteTicketBotPipeline`.O pipeline remove os recursos temporários de bot que foram criados durante o processo de desenvolvimento (por exemplo, o bot de tíquete). Essa ação ajuda a manter o repositório limpo e a evitar confusões ou conflitos com futuras ramificações de recursos.  | Desenvolvedor de bots do Lex | 

### Manter o bot principal
<a name="maintain-the-main-bot"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Importe a definição mais recente do bot principal para o ambiente `dev`. | Para importar a definição mais recente do bot principal na ramificação principal para o ambiente `dev`, acione o pipeline `DeployBotDevPipeline`.O pipeline também cria uma marcação git na aprovação. | AWS DevOps | 
| Importe a definição mais recente do bot principal para o ambiente `prod`. | Para importar a definição de bot mais recente na ramificação principal para o ambiente `prod`, forneça a referência da marcação da tarefa anterior como parâmetro e acione o pipeline `DeployBotProdPipeline`.O pipeline importa a definição de bot mais recente de uma marcação específica para o ambiente `prod`. | AWS DevOps | 

## Solução de problemas
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Quando você implanta bots do Amazon Lex em diferentes Contas da AWS, os serviços de ferramentas devem ter as permissões necessárias para acessar recursos nessas contas. | Para conceder acesso entre contas, use políticas e perfis do (IAM). Crie perfis do IAM nas contas de destino e anexe as políticas aos perfis que concedem as permissões necessárias. Em seguida, assuma esses perfis na conta em que o bot do Amazon Lex está implantado.Para obter mais informações, consulte [IAM permissions required to import](https://docs.aws.amazon.com/lexv2/latest/dg/import.html#import-permissions) e [IAM permissions required to export bots in Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/export.html#export-permissions) na documentação do Amazon Lex. | 

## Recursos relacionados
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-resources"></a>
+ [Importing bots in Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/import.html)
+ [Inicie um pipeline em CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-about-starting.html)
+ [Trabalhando com bots Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/building-bots.html)

# Coordene a dependência de recursos e a execução de tarefas usando a AWS Fargate WaitCondition construção de gancho
<a name="use-the-aws-fargate-waitcondition-hook-construct"></a>

*Stan Fan, Amazon Web Services*

## Resumo
<a name="use-the-aws-fargate-waitcondition-hook-construct-summary"></a>

Esse padrão descreve o pacote WaitCondition hook (`waitcondition-hook-for-aws-fargate-task`) npm, que é uma solução nativa da nuvem projetada para orquestrar [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)tarefas em clusters do Amazon Elastic Container Service (Amazon ECS). 

O WaitCondition gancho é uma AWS Cloud Development Kit (AWS CDK) construção especificamente adaptada para integração com AWS CloudFormation. O WaitCondition gancho fornece os seguintes recursos principais:
+ Atua como um mecanismo de condição de espera, pausando a execução da CloudFormation pilha até que uma tarefa específica do Fargate seja concluída, o que ajuda nas implantações ordenadas e no provisionamento de recursos.
+ Suportes TypeScript e Python, o que o torna ideal para AWS CDK projetos.
+ Permite que desenvolvedores e arquitetos realizem a orquestração de implantações ao coordenar a conclusão de tarefas e o gerenciamento de recursos para aplicações em contêineres na AWS.
+ Permite executar tarefas do Fargate com um ou vários contêineres incorporados em um CloudFormation ciclo de vida e pode lidar com falhas de tarefas e reverter a pilha após uma falha na CloudFormation tarefa.
+ Oferece flexibilidade para adicionar dependências entre recursos e os resultados da execução das tarefas do Fargate, permitindo a criação de tarefas personalizadas ou a invocação de outros endpoints. Por exemplo, você pode pausar uma CloudFormation pilha e aguardar a migração do banco de dados (feita por uma tarefa do Fargate) e provisionar outros recursos que podem depender do sucesso da migração do banco de dados.

## Pré-requisitos e limitações
<a name="use-the-aws-fargate-waitcondition-hook-construct-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ AWS Cloud Development Kit (AWS CDK) Interface de linha de comando (CLI) instalada em uma estação de trabalho local. Para obter mais informações, consulte a [referência da AWS CDK CLI](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) na AWS CDK documentação.
+ [Gerenciador de pacotes Node (npm), instalado em uma estação de trabalho local e configurado para entrada.AWS CDK TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Para obter mais informações, consulte [Download e instalação do Node.js e npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm), na documentação do npm.
+ O Yarn instalado em uma estação de trabalho local. Para obter mais informações, consulte [Installation](https://yarnpkg.com/getting-started/install) na documentação do Yarn.

**Limitações**
+ Essa solução é implantada em um único Conta da AWS.
+ O código de retorno esperado do contêiner é `0`, representando êxito. Qualquer outro código de retorno indica falha e a CloudFormation pilha será revertida. 
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="use-the-aws-fargate-waitcondition-hook-construct-architecture"></a>

O diagrama apresentado a seguir mostra a arquitetura do constructo.

![\[Fluxo de trabalho do AWS Step Functions da construção waitcondition-hook-for-aws -fargate-task.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/598020df-908c-4486-9844-c05af759c18a.png)


O diagrama mostra o fluxo de trabalho para `waitcondition-hook-for-aws-fargate-task`:

1. `WaitCondition`e `WaitConditionHandler` são provisionados para ouvir a resposta das AWS Lambda funções.

1. Dependendo do resultado da tarefa, as funções `CallbackFunction` ou `ErrorHandlerFunction` são acionadas pelo término da tarefa do Fargate.

1. A função do Lambda envia um sinal de SUCESSO ou FALHA para o `WaitConditionHandler`.

1. O `WaitConditionHandler` continua a provisionar os recursos se o resultado da execução da tarefa do Fargate for bem-sucedido, ou reverte a pilha se a tarefa apresentar falhas.

O diagrama apresentado a seguir mostra um exemplo de fluxo de trabalho para a realização de uma migração de banco de dados.

![\[Fluxo de trabalho da migração do banco de dados Amazon RDS usando a construção de WaitCondition gancho.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/3b83fc2a-80bb-4ba9-9637-782060493cf0.png)


O fluxo de trabalho de exemplo usa o constructo `waitcondition-hook-for-aws-fargate-task` para realizar uma migração de banco de dados, conforme descrito abaixo:

1. Uma instância do Amazon Relational Database Service (Amazon RDS) é provisionada.

1. O constructo `waitcondition-hook-for-aws-fargate-task` executa a tarefa de migração de banco de dados e pausa a pilha como uma instância do Amazon Elastic Compute Cloud (Amazon EC2).

1. Se a tarefa de migração for concluída com êxito, ela enviará um sinal de sucesso para CloudFormation. Caso contrário, ele envia um sinal de falha CloudFormation e reverte a pilha.

## Ferramentas
<a name="use-the-aws-fargate-waitcondition-hook-construct-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir a infraestrutura de nuvem em código e provisioná-la por meio dela CloudFormation.
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.
+ O [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) é um serviço de gerenciamento de contêineres escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster.
+ O [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) facilita a execução de contêineres sem que você precise gerenciar servidores ou instâncias do Amazon EC2. É usado em conjunto com o Amazon ECS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)é um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Esta rede virtual é parecida com uma rede tradicional que você gerenciaria em seu próprio data center, com as vantagens de aproveitar a infraestrutura escalável da AWS. 

**Outras ferramentas**
+ O [npm](https://docs.npmjs.com/about-npm) é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados.
+ O [Yarn](https://yarnpkg.com/) é um gerenciador de pacotes de código aberto que você pode usar para gerenciar dependências em JavaScript projetos. O Yarn pode auxiliar na instalação, atualização, configuração e remoção de dependências de pacotes.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [waitcondition-hook-for-aws-fargate-task](https://github.com/aws-samples/waitcondition-hook-for-aws-fargate-task).

## Práticas recomendadas
<a name="use-the-aws-fargate-waitcondition-hook-construct-best-practices"></a>
+ Ao criar seu AWS CDK aplicativo, siga as [melhores práticas para desenvolver e implantar a infraestrutura de nuvem AWS CDK na](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) documentação AWS CDK v2.
+ Para a AWS Fargate tarefa, siga as [melhores práticas para imagens de contêineres do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/application.html) na documentação do Amazon ECS.

## Épicos
<a name="use-the-aws-fargate-waitcondition-hook-construct-epics"></a>

### Configure o AWS CDK
<a name="set-up-the-cdk"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale AWS CDK o. | Para instalar o AWS CDK em sua máquina local ou em outro ambiente, execute o seguinte comando: <pre>npm install -g aws-cdk@latest</pre> | Arquiteto de nuvem, desenvolvedor de aplicativos | 
| Inicialize o. AWS CDK | A [inicialização](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) é o processo de preparar um [ambiente](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) para implantação. Para inicializar seu AWS CDK kit de ferramentas para o destino Conta da AWS e Região da AWS, execute o seguinte comando:<pre>cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 </pre>Esse comando cria uma CloudFormation pilha chamada`CDKToolkit`.  | Arquiteto de nuvem | 

### Execute o WaitCondition gancho para construir AWS Fargate tarefas
<a name="run-the-waitcondition-hook-for-fargatelong-tasks-construct"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o projeto do CDK. | Crie um projeto do CDK com a linguagem de sua preferência. Esse padrão usa TypeScript. Para criar um projeto CDK usando TypeScript, execute o seguinte comando: `cdk init app —language typescript` | Arquiteto de nuvem | 
| Instale o pacote . | Execute `npm install` no caminho raiz do seu projeto do CDK. Após a biblioteca do CDK ser instalada, execute o seguinte comando para instalar `waitcondition-hook-for-aws-fargate-task`: `yarn add waitcondition-hook-for-aws-fargate-task` | Arquiteto de nuvem | 
| Desenvolva sua aplicação do CDK e os componentes do Amazon ECS. | Desenvolva seu projeto do CDK. É necessário um recurso de definição de tarefa do Amazon ECS. Para obter mais informações sobre como criar uma definição de tarefa, consulte [Definições de tarefa do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) na documentação do Amazon ECS.O exemplo apresentado a seguir usa este constructo:<pre>import * as cdk from 'aws-cdk-lib';<br />import { Vpc } from 'aws-cdk-lib/aws-ec2';<br />import * as ecr from 'aws-cdk-lib/aws-ecr';<br />import * as ecs from 'aws-cdk-lib/aws-ecs';<br />import { Construct } from 'constructs';<br />import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';<br />import { Queue } from 'aws-cdk-lib/aws-sqs';<br /><br />export class FargateRunnerStack extends cdk.Stack {<br />    constructor(scope: Construct, id: string, props?: cdk.StackProps) {<br />        super(scope, id, props);<br />        // Define the VPC<br />        const vpc = new Vpc(this, 'MyVpc')<br />        // Define the Fargate Task<br />        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});<br />        // Import exiting ecr repo<br />        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');<br />        // Add a container to the task<br />        taskDefinition.addContainer('MyContainer', {<br />            image: ecs.ContainerImage.fromEcrRepository(repo),<br />        });<br />        // Create the Fargate runner<br />        const myFargateRunner = new FargateRunner(this, 'MyRunner', {<br />            fargateTaskDef: taskDefinition,<br />            timeout: `${60 * 5}`,<br />            vpc: vpc,<br />        });<br />        // Create the SQS queue<br />        const myQueue = new Queue(this, 'MyQueue', {});<br />        // Add dependency<br />        myQueue.node.addDependency(myFargateRunner);<br />    }<br />}</pre> | Arquiteto de nuvem | 
| Sintetize e execute a aplicação do CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)O constructo `waitcondition-hook-for-aws-fargate-task` executa a tarefa do Fargate.  | Arquiteto de nuvem | 

### Limpeza
<a name="clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpar os recursos | Para remover os recursos provisionados na etapa anterior, execute o seguinte comando:<pre>cdk destroy </pre> | Arquiteto de nuvem | 

## Solução de problemas
<a name="use-the-aws-fargate-waitcondition-hook-construct-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Falha geral CloudFormation na pilha | Para ajudar a solucionar falhas gerais de CloudFormation pilha, adicione o `--no-rollback` sinalizador conforme mostrado no exemplo a seguir: <pre>cdk deploy --no-rollback</pre>Esse comando interromperá a reversão da CloudFormation pilha, o que fornece recursos para solucionar problemas. Para obter mais informações, consulte [Escolha como lidar com falhas ao provisionar recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) na CloudFormation documentação. | 
| AWS Step Functions falha | Uma máquina de AWS Step Functions estado pode falhar na execução por diferentes motivos. Com a opção `—disable-rollback` configurada, siga as etapas apresentadas abaixo para solucionar o problema:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Para obter mais informações, consulte [Solução de problemas no Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html) e [Visualização dos detalhes da execução no console do Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-view-execution-details.html#exec-details-intf-step-details) na AWS Step Functions documentação. | 
| AWS Lambda falha de função | Este constructo provisiona duas funções do Lambda: `CallbackFunction` e `ErrorhandlerFunction`. Essas funções podem falhar por diversos motivos, como por exceções não tratadas. Siga as etapas apresentadas abaixo para solucionar o problema: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Para obter mais informações, consulte [Solução de problemas no Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-troubleshooting.html) na AWS Lambda documentação. | 

## Recursos relacionados
<a name="use-the-aws-fargate-waitcondition-hook-construct-resources"></a>

**AWS documentação**
+ [AWS CDK Referência da API Construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)
+ [Começando com o AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Saiba como criar e usar os recursos do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started.html)
+ [Saiba como começar a usar o Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
+ [O que AWS CDKé](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

**Outros recursos**
+ [Gancho de condição de espera para AWS Fargate tarefa](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (npm)
+ [waitcondition-hook-for-aws-fargate-task](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) 1.0.6 (pypi.org)

# Use repositórios de origem Git de terceiros na AWS CodePipeline
<a name="use-third-party-git-source-repositories-in-aws-codepipeline"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Resumo
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-summary"></a>

Esse padrão descreve como usar a AWS CodePipeline com repositórios de origem Git de terceiros.

 CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-continuous-delivery-integration.html) é um serviço de entrega contínua que automatiza tarefas para criar, testar e implantar seu software. Atualmente, o serviço oferece suporte a repositórios Git gerenciados pela GitHub [AWS](https://aws.amazon.com/codecommit) e pela Atlassian CodeCommit Bitbucket. No entanto, algumas empresas usam repositórios Git de terceiros que são integrados ao serviço de autenticação única (SSO) e ao Microsoft Active Directory para autenticação. Você pode usar esses repositórios Git de terceiros como fontes para criar ações e CodePipeline webhooks personalizados.

Um webhook é uma notificação HTTP que detecta eventos em outra ferramenta, como um GitHub repositório, e conecta esses eventos externos a um pipeline. Quando você cria um webhook no CodePipeline, o serviço retorna uma URL que você pode usar no webhook do seu repositório Git. **Se você enviar o código para uma ramificação específica do repositório Git, o webhook do Git iniciará o CodePipeline webhook por meio dessa URL e definirá o estágio de origem do pipeline como Em andamento.** Quando o pipeline está nesse estado, um funcionário pesquisa CodePipeline o trabalho personalizado, executa o trabalho e envia um status de sucesso ou falha para CodePipeline. Nesse caso, como o pipeline está no estágio de origem, o operador de trabalho obtém o conteúdo do repositório Git, compacta o conteúdo e o carrega no bucket do Amazon Simple Storage Service (Amazon S3), onde os artefatos do pipeline são armazenados, usando a chave de objeto fornecida pelo trabalho pesquisado. Você também pode associar uma transição para a ação personalizada a um evento na Amazon CloudWatch e iniciar o funcionário com base no evento. Essa configuração permite que você use repositórios Git de terceiros para os quais o serviço não oferece suporte nativo como fontes. CodePipeline

## Pré-requisitos e limitações
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um repositório Git que suporta webhooks e pode se conectar a uma CodePipeline URL de webhook pela Internet 
+ AWS Command Line Interface (AWS CLI), [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) para trabalhar com a conta da AWS

## Arquitetura
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-architecture"></a>

O padrão envolve as seguintes etapas:

1. O usuário confirma o código em um repositório Git.

1. O webhook do Git é chamado.

1. O CodePipeline webhook é chamado.

1. O pipeline é definido como **Em andamento** e o estágio de origem está definido para o estado **Em andamento**.

1. A ação do estágio de origem inicia uma regra de CloudWatch Eventos, indicando que ela foi iniciada.

1. O CloudWatch evento inicia uma função Lambda.

1. A função do Lambda obtém os detalhes do trabalho de ação personalizado.

1. A função Lambda inicia a CodeBuild AWS e passa todas as informações relacionadas ao trabalho.

1. CodeBuild obtém a chave SSH pública ou as credenciais do usuário para acesso HTTPS Git do Secrets Manager.

1. CodeBuild clona o repositório Git para uma ramificação específica.

1. CodeBuild compacta o arquivo e o carrega no bucket do S3 que serve como armazenamento de artefatos. CodePipeline 

![\[Fluxo de trabalho que usa repositórios de origem Git de terceiros como fontes para a AWS. CodePipeline\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/84284bec-b39d-466a-9fd9-994be2c953df/images/85555dab-7317-40f5-86a7-ccb8987c5bf3.png)


 

## Ferramentas
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-tools"></a>
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/) — CodePipeline A AWS é um serviço de [entrega contínua](https://aws.amazon.com/devops/continuous-delivery/) totalmente gerenciado que ajuda você a automatizar seus pipelines de lançamento para atualizações rápidas e confiáveis de aplicativos e infraestrutura. CodePipeline automatiza as fases de criação, teste e implantação do seu processo de lançamento para cada alteração de código, com base no modelo de lançamento que você define. Isso permite entregar recursos e atualizações de forma rápida e confiável. Você pode integrar a AWS CodePipeline com serviços de terceiros, como GitHub ou com seu próprio plug-in personalizado.
+ [AWS Lambda](https://aws.amazon.com/lambda/): o AWS Lambda permite executar código sem provisionar ou gerenciar servidores. Com o Lambda, você pode executar o código em praticamente qualquer tipo de aplicação ou serviço de backend sem a necessidade de administração. Você carrega seu código e o Lambda cuidará de tudo que for necessário para executar e escalar seu código com alta disponibilidade. Você pode configurar o seu código para que ele seja iniciado automaticamente por meio de outros serviços da AWS ou chamá-lo diretamente usando qualquer aplicativo móvel ou da web.
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/) — CodeBuild A AWS é um serviço de [integração contínua](https://aws.amazon.com/devops/continuous-integration/) totalmente gerenciado que compila o código-fonte, executa testes e produz pacotes de software prontos para implantação. Com CodeBuild, você não precisa provisionar, gerenciar e escalar seus próprios servidores de compilação. CodeBuild escala continuamente e processa várias compilações simultaneamente, para que suas compilações não fiquem esperando em uma fila. Você pode começar a usar ambientes de compilação pré-empacotados rapidamente ou criar ambientes de compilação personalizados que usem suas próprias ferramentas de compilação.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/): o AWS Secrets Manager ajuda você a proteger os segredos necessários para acessar seus aplicativos, serviços e recursos de TI. O serviço permite alternar, gerenciar e recuperar credenciais de banco de dados, chaves de API e outros segredos durante seu ciclo de vida. Usuários e aplicativos recuperam segredos chamando o Secrets Manager APIs, sem precisar codificar informações confidenciais em texto simples. O Secrets Manager oferece alternância secreta com integração embutida para o Amazon Relational Database Service (Amazon RDS), o Amazon Redshift e o Amazon DocumentDB. O serviço pode ser estendido para oferecer suporte a outros tipos de segredos, incluindo chaves e OAuth tokens de API. Além disso, o Secrets Manager permite que você controle o acesso a segredos usando permissões refinadas e audite centralmente a rotação de segredos para recursos na nuvem AWS, serviços de terceiros e ambientes on-premises.
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) — CloudWatch A Amazon é um serviço de monitoramento e observação criado para DevOps engenheiros, desenvolvedores, engenheiros de confiabilidade de sites (SREs) e gerentes de TI. CloudWatch fornece dados e insights acionáveis para monitorar seus aplicativos, responder às mudanças de desempenho em todo o sistema, otimizar a utilização de recursos e obter uma visão unificada da integridade operacional. CloudWatch coleta dados operacionais e de monitoramento na forma de registros, métricas e eventos, fornecendo a você uma visão unificada dos recursos, aplicativos e serviços da AWS que são executados na AWS e em servidores locais. Você pode usar CloudWatch para detectar comportamentos anômalos em seus ambientes, definir alarmes, visualizar registros e métricas lado a lado, realizar ações automatizadas, solucionar problemas e descobrir insights para manter seus aplicativos funcionando sem problemas.
+ [Amazon S3](https://aws.amazon.com/s3/): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que permite armazenar e proteger qualquer volume de dados para uma variedade de casos de uso, como sites, aplicativos móveis, backup e restauração, arquivamento, aplicativos corporativos, dispositivos IoT e big data analytics. O Amazon S3 fornece recursos easy-to-use de gerenciamento para ajudá-lo a organizar seus dados e configurar controles de acesso bem ajustados para atender aos seus requisitos comerciais, organizacionais e de conformidade específicos.

## Épicos
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-epics"></a>

### Crie uma ação personalizada no CodePipeline
<a name="create-a-custom-action-in-codepipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma ação personalizada usando a AWS CLI ou a AWS. CloudFormation | Essa etapa envolve a criação de uma ação de origem personalizada que pode ser usada no estágio de origem de um pipeline em sua conta da AWS em uma região específica. Você deve usar a AWS CLI ou a AWS CloudFormation (não o console) para criar a ação de origem personalizada. Para obter mais informações sobre os comandos e etapas descritos neste e em outros épicos, consulte a seção “Recursos relacionados” no final desse padrão. Na AWS CLI, use o create-custom-action-type comando. Use --configuration-properties para fornecer todos os parâmetros necessários para o trabalhador processar ao pesquisar um trabalho. CodePipeline Certifique-se de observar os valores fornecidos às opções --provider e --action-version, para que você possa usar os mesmos valores ao criar o pipeline com esse estágio de origem personalizado. Você também pode criar a ação de origem personalizada na AWS CloudFormation usando o tipo de recurso AWS::CodePipeline::CustomActionType. | AWS geral | 

### Configurar a autenticação
<a name="set-up-authentication"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um par de chaves SSH. | Crie um par de chaves do Secure Shell (SSH). Para obter instruções, consulte a GitHub documentação. | Sistemas/engenheiro DevOps  | 
| Crie um segredo no AWS Secrets Manager. | Copie o conteúdo da chave privada do par de chaves do SSH e crie um segredo no AWS Secrets Manager. Esse segredo é usado para autenticação ao acessar o repositório Git. | AWS geral | 
| Adicione a chave pública ao repositório Git. | Adicione a chave pública do par de chaves do SSH às configurações da conta do repositório Git para autenticação na chave privada. | Sistemas/engenheiro DevOps  | 

### Criar um pipeline e um webhook
<a name="create-a-pipeline-and-webhook"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um pipeline que inclua a ação de origem personalizada. | Crie um pipeline em CodePipeline. Ao configurar o estágio de origem, escolha a ação de origem personalizada que você criou anteriormente. Você pode fazer isso no CodePipeline console da AWS ou na AWS CLI. CodePipeline solicita as propriedades de configuração que você definiu na ação personalizada. Essas informações são necessárias para que o funcionário processe o trabalho para a ação personalizada. Siga o assistente e crie a próxima etapa para o pipeline. | AWS geral | 
| Crie um CodePipeline webhook. | Crie um webhook para o pipeline que você criou com a ação de origem personalizada. Você deve usar a AWS CLI ou a AWS CloudFormation (não o console) para criar o webhook. Na AWS CLI, execute o comando put-webhook e forneça os valores apropriados para as opções de webhook. Anote os valores do URL do webhook que o comando retorna. Se você estiver usando CloudFormation a AWS para criar o webhook, use o tipo AWS::CodePipeline::Webhook de recurso. Certifique-se de enviar o URL do webhook do recurso criado e anote-o. | AWS geral | 
| Crie uma função e um projeto Lambda. CodeBuild  | Nesta etapa, você usa o Lambda CodeBuild para criar um trabalhador de trabalho que pesquisará as solicitações de trabalho CodePipeline para a ação personalizada, executará o trabalho e retornará o resultado do status para. CodePipeline Crie uma função Lambda que seja iniciada por uma regra da Amazon CloudWatch Events quando o estágio de ação da fonte personalizada do pipeline passa para “Em andamento”. Quando a função do Lambda é iniciada, ela deve obter os detalhes do trabalho de ação personalizada pesquisando os trabalhos. Você pode usar a PollForJobs API para retornar essas informações. Depois que as informações do trabalho pesquisado forem obtidas, a função do Lambda deve retornar uma confirmação e, em seguida, processar as informações com os dados obtidos das propriedades de configuração da ação personalizada. Quando o trabalhador estiver pronto para conversar com o repositório Git, você poderá iniciar um CodeBuild projeto, pois é conveniente lidar com tarefas do Git usando o cliente SSH. | AWS geral e desenvolvedor de código | 

### Crie um evento em CloudWatch
<a name="create-an-event-in-cloudwatch"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma regra de CloudWatch eventos. | Crie uma regra de CloudWatch eventos que inicie a função Lambda como alvo sempre que o estágio de ação personalizado do pipeline fizer a transição para “Em andamento”. | AWS geral | 

## Recursos relacionados
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-resources"></a>

**Criando uma ação personalizada no CodePipeline**
+ [Crie e adicione uma ação personalizada no CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html)
+ [AWS::CodePipeline::CustomActionType recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html)

**Configuração da autenticação**
+ [Criação e gerenciamento de segredos com o AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)

**Criar um pipeline e um webhook**
+ [Crie um pipeline em CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html)
+ [Referência do comando put-webhook](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/put-webhook.html)
+ [AWS::CodePipeline::Webhook recurso](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html)
+ [PollForJobs Referência de API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html)
+ [Crie e adicione uma ação personalizada no CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html)
+ [Crie um projeto de construção na AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html)

**Criar um evento**
+ [Detecte e reaja às mudanças no estado do pipeline com o Amazon CloudWatch Events](https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html)

**Referências adicionais**
+ [Trabalhando com oleodutos em CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines.html)
+ [Guia do desenvolvedor do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

# Crie um CI/CD pipeline para validar as configurações do Terraform usando a AWS CodePipeline
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline"></a>

*Aromal Raj Jayarajan e Vijesh Vijayakumaran Nair, Amazon Web Services*

## Resumo
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-summary"></a>

Esse padrão mostra como testar as configurações do HashiCorp Terraform usando um pipeline de integração contínua e entrega contínua (CI/CD) implantado pela AWS. CodePipeline

O Terraform é um aplicativo de interface da linha de comando que ajuda você a usar o código para fornecer e gerenciar a infraestrutura e os recursos da nuvem. [A solução fornecida nesse padrão cria um CI/CD pipeline que ajuda você a validar a integridade de suas configurações do Terraform executando cinco estágios: CodePipeline ](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-stages)

1. `"checkout"`extrai a configuração do Terraform que você está testando de um repositório da AWS CodeCommit .

1. `"validate"`[executa ferramentas de validação de infraestrutura como código (IaC), incluindo [tfsec](https://github.com/aquasecurity/tfsec) e [TFLint](https://github.com/terraform-linters/tflint)checkov.](https://www.checkov.io/) O estágio também executa os seguintes comandos de validação do Terraform IaC: `terraform validate` e `terraform fmt`.

1. `"plan"` mostra quais mudanças serão aplicadas à infraestrutura se a configuração do Terraform for aplicada.

1. `"apply"` usa o plano gerado para provisionar a infraestrutura necessária em um ambiente de teste.

1. `"destroy"` remove a infraestrutura de teste que foi criada durante o estágio `"apply"`.

## Pré-requisitos e limitações
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), instalado e configurado em sua máquina local
+ [Terraform](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS), instalado e configurado em sua máquina local

**Limitações**
+ A abordagem desse padrão implanta a AWS CodePipeline em uma conta da AWS e somente em uma região da AWS. Alterações na configuração são necessárias para implantações em várias contas e em várias regiões.
+ O perfil do AWS Identity and Access Management (IAM) que esse padrão fornece (**codepipeline\$1iam\$1role**) segue o princípio do privilégio mínimo. As permissões desse perfil do IAM devem ser atualizadas com base nos recursos específicos que seu pipeline precisa criar.** **

**Versões do produto**
+ AWS CLI versão 2.9.15 ou superior
+ Terraform versão 1.3.7 ou superior

## Arquitetura
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS IAM
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Key Management Service (AWS KMS)
+ Terraform

**Arquitetura de destino**

O diagrama a seguir mostra um exemplo de fluxo de trabalho de CI/CD pipeline para testar as configurações do Terraform em. CodePipeline

![\[Arquitetura para testar as configurações do Terraform usando um pipeline da AWS CI/CD .\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/4df7b1f8-8eef-4d85-a971-a7f158be9691/images/90b931c8-e745-4b52-92de-a367fb0f1f51.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Em CodePipeline, um usuário da AWS inicia as ações propostas em um plano do Terraform executando o `terraform apply` comando na CLI da AWS.

1. A AWS CodePipeline assume uma função de serviço do IAM que inclui as políticas necessárias para acessar CodeCommit o AWS KMS e o Amazon S3. CodeBuild

1. CodePipeline executa o estágio de `"checkout"` pipeline para extrair a configuração do Terraform de um CodeCommit repositório da AWS para testes.

1. CodePipeline executa o `"validate"` estágio para testar a configuração do Terraform executando as ferramentas de validação do IaC e executando os comandos de validação do Terraform IaC em um projeto. CodeBuild 

1. CodePipeline executa o `"plan"` estágio para criar um plano no CodeBuild projeto com base na configuração do Terraform. O usuário da AWS pode revisar esse plano antes que as alterações sejam aplicadas ao ambiente de teste.

1. O Code Pipeline executa o `"apply"` estágio de implementação do plano usando o CodeBuild projeto para provisionar a infraestrutura necessária no ambiente de teste.

1. CodePipeline executa o `"destroy"` estágio, que é usado CodeBuild para remover a infraestrutura de teste que foi criada durante o `"apply"` estágio.

1. Um bucket do Amazon S3 armazena artefatos de pipeline, que são criptografados e descriptografados usando uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) do AWS KMS.

## Ferramentas
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-tools"></a>

**Ferramentas**

*Serviços da AWS*
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 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.
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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 Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é 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*
+ [HashiCorp O Terraform](https://www.terraform.io/docs) é um aplicativo de interface de linha de comando que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.

**Código **

O código desse padrão está disponível no GitHub [aws-codepipeline-terraform-cicdsamples](https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples)repositório. O repositório contém as configurações do Terraform necessárias para criar a arquitetura de destino descrita nesse padrão.

## Épicos
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-epics"></a>

### Provisione os componentes da solução
<a name="provision-the-solution-components"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o GitHub repositório. | Clone o GitHub [aws-codepipeline-terraform-cicdsamples](https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples)repositório executando o seguinte comando em uma janela de terminal:<pre>git clone https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples.git</pre>Para obter mais informações, consulte [Clonar um repositório](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) na GitHub documentação. | DevOps engenheiro | 
| Crie um arquivo de definições de variáveis do Terraform.  | Crie um arquivo `terraform.tfvars` com base nos requisitos do seu caso de uso. Você pode atualizar as variáveis no arquivo `examples/terraform.tfvars` que está no repositório clonado.Para obter mais informações, consulte [Atribuição de valores às variáveis do módulo raiz](https://developer.hashicorp.com/terraform/language/values/variables#assigning-values-to-root-module-variables) na documentação do Terraform.O arquivo `Readme.md` do repositório contém mais informações sobre as variáveis necessárias. | DevOps engenheiro | 
| Configure a AWS como o provedor do Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Para obter mais informações, consulte o [provedor da AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) na documentação do Terraform. | DevOps engenheiro | 
| Atualize a configuração do provedor Terraform para criar o bucket de replicação do Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Com a replicação, os objetos são copiados automaticamente e de forma assíncrona entre os buckets do Amazon S3. | DevOps engenheiro | 
| Inicialize a configuração do Terraform. | Para inicializar seu diretório de trabalho que contém os arquivos de configuração Terraform, execute o seguinte comando na pasta raiz do repositório clonado:<pre>terraform init</pre> | DevOps engenheiro | 
| Crie o plano do Terraform. | Para criar um plano do Terraform, execute o seguinte comando na pasta raiz do repositório clonado:<pre>terraform plan --var-file=terraform.tfvars -out=tfplan</pre>O Terraform avalia os arquivos de configuração para determinar o estado de destino dos recursos declarados. Em seguida, ele compara o estado de destino com o estado atual e cria um plano. | DevOps engenheiro | 
| Verifique o plano do Terraform. | Revise o plano do Terraform e confirme se ele configura a arquitetura necessária em sua conta da AWS de destino. | DevOps engenheiro | 
| Implante a solução. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)O Terraform cria, atualiza ou destrói a infraestrutura para atingir o estado de destino declarado nos arquivos de configuração. | DevOps engenheiro | 

### Valide as configurações do Terraform executando o pipeline
<a name="validate-terraform-configurations-by-running-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o repositório de código-fonte. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html) | DevOps engenheiro | 
| Valide os estágios do pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Para obter mais informações, consulte [Visualizar detalhes e histórico do pipeline (console)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-view-console.html) no *Guia CodePipeline do usuário da AWS*.Quando uma alteração é confirmada na ramificação principal do repositório de origem, o pipeline de teste é ativado automaticamente. | DevOps engenheiro | 
| Verifique a saída do relatório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)O `<project_name>-validate` CodeBuild projeto gera relatórios de vulnerabilidade para seu código durante a `"validate"` etapa. | DevOps engenheiro | 

### Limpe os seus recursos
<a name="clean-up-your-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Limpe o pipeline e os recursos associados. | Para excluir os recursos de teste da sua conta da AWS, execute o seguinte comando na pasta raiz do repositório clonado:<pre>terraform destroy --var-file=terraform.tfvars</pre> | DevOps engenheiro | 

## Solução de problemas
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Você recebe um **AccessDenied **erro durante a `"apply"` etapa. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html) | 

## Recursos relacionados
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-resources"></a>
+ [Blocos de módulos](https://developer.hashicorp.com/terraform/language/modules/syntax) (documentação do Terraform)
+ [Como usar para CI/CD implantar e configurar serviços de segurança da AWS com o Terraform](https://aws.amazon.com/blogs/security/how-use-ci-cd-deploy-configure-aws-security-services-terraform/) (postagem no blog da AWS)
+ [Using service-linked roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) (documentação do IAM)
+ [create-pipeline](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codepipeline/create-pipeline.html) (documentação da AWS CLI)
+ [Configure a criptografia do lado do servidor para artefatos armazenados no Amazon S3](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html) para (documentação da AWS) CodePipeline CodePipeline 
+ [Cotas para a AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html) ( CodeBuild documentação da AWS)
+ [Proteção de dados na AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/data-protection.html) ( CodePipeline documentação da AWS)

## Mais informações
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-additional"></a>

**Módulos personalizados do Terraform**

A seguir está uma lista de módulos personalizados do Terraform que são usados nesse padrão:
+ `codebuild_terraform`cria os CodeBuild projetos que formam cada estágio do pipeline.
+ `codecommit_infrastructure_source_repo`captura e cria o CodeCommit repositório de origem.
+ `codepipeline_iam_role` cria os perfis do IAM necessários para o pipeline.
+ `codepipeline_kms` cria a chave do AWS KMS necessária para criptografia e descriptografia de objetos do Amazon S3.
+ `codepipeline_terraform`cria o pipeline de teste para o CodeCommit repositório de origem.
+ `s3_artifacts_bucket` cria um bucket do Amazon S3 para gerenciar artefatos de pipeline.

**Arquivos de especificação de compilação**

Veja a seguir uma lista de arquivos de especificação de compilação (buildspec) que esse padrão usa para executar cada estágio do pipeline:
+ `buildspec_validate.yml` executa o estágio `"validate"`.
+ `buildspec_plan.yml` executa o estágio `"plan"`.
+ `buildspec_apply.yml` executa o estágio `"apply"`.
+ `buildspec_destroy.yml` executa o estágio `"destroy"`.

*Variáveis do arquivo de especificação de compilação*

Cada arquivo buildspec usa as seguintes variáveis para ativar diferentes configurações específicas da compilação:


| 
| 
| Variável | Valor padrão  | Description | 
| --- |--- |--- |
| `CODE_SRC_DIR` | "." | Define o CodeCommit diretório de origem | 
| `TF_VERSION` | "1.3.7" | Define a versão do Terraform para o ambiente de construção | 

O arquivo `buildspec_validate.yml` também suporta as seguintes variáveis para ativar diferentes configurações específicas da compilação:


| 
| 
| Variável | Valor padrão  | Description | 
| --- |--- |--- |
| `SCRIPT_DIR` | "./templates/scripts" | Define o diretório do script | 
| `ENVIRONMENT` | "dev" | Define o nome do ambiente | 
| `SKIPVALIDATIONFAILURE` | "Y" | Ignora a validação em caso de falhas | 
| `ENABLE_TFVALIDATE` | "Y" | Ativa a validação do Terraform  | 
| `ENABLE_TFFORMAT` | "Y" | Ativa o formato do Terraform | 
| `ENABLE_TFCHECKOV` | "Y" | Ativa varredura checkov | 
| `ENABLE_TFSEC` | "Y" | Ativa varredura tfsec | 
| `TFSEC_VERSION` | “v1.28.1" | Define a versão do tfsec | 

# Mais padrões
<a name="devops-more-patterns-pattern-list"></a>

**Topics**
+ [Acesse aplicativos de contêineres de forma privada no Amazon EKS usando a AWS PrivateLink e um Network Load Balancer](access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Associe um AWS CodeCommit repositório em um Conta da AWS com o Amazon SageMaker AI Studio Classic em outra conta](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Automatize a criação de contas usando o Landing Zone Accelerator em AWS](automate-account-creation-lza.md)
+ [Automatizar a adição ou atualização de entradas de registro do Windows usando o AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatize backups para instâncias de banco de dados do Amazon RDS para PostgreSQL usando o AWS Batch](automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch.md)
+ [Automatize a implantação de aplicativos aninhados usando o AWS SAM](automate-deployment-of-nested-applications-using-aws-sam.md)
+ [Automatize a implantação do Node Termination Handler no Amazon EKS usando um pipeline CI/CD](automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.md)
+ [Automatize a configuração RabbitMQ no Amazon MQ](automate-rabbitmq-configuration-in-amazon-mq.md)
+ [Automatize a replicação de instâncias do Amazon RDS em Contas da AWS](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Crie e implante automaticamente um aplicativo Java no Amazon EKS usando um CI/CD pipeline](automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.md)
+ [Geração automática de um modelo do PynamoDB e funções de CRUD para o Amazon DynamoDB por meio de uma aplicação do Python](automatically-generate-a-pynamodb-model-and-crud-functions-for-amazon-dynamodb-by-using-a-python-application.md)
+ [Valide e implante automaticamente políticas e funções do IAM usando CodePipeline macros do IAM Access Analyzer e AWS CloudFormation](automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.md)
+ [Faça backup dos servidores Sun SPARC no emulador Stromasys Charon-SSP no Nuvem AWS](back-up-sun-sparc-servers-in-the-stromasys-charon-ssp-emulator-on-the-aws-cloud.md)
+ [Crie um pipeline de dados para ingerir, transformar e analisar dados do Google Analytics usando o AWS DataOps Development Kit](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Crie um PAC de servidor corporativo da Micro Focus com o Amazon EC2 Auto Scaling e o Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Crie um pipeline para imagens de contêiner reforçadas usando o EC2 Image Builder e o Terraform](build-a-pipeline-for-hardened-container-images-using-ec2-image-builder-and-terraform.md)
+ [Crie um MLOps fluxo de trabalho usando o Amazon SageMaker AI e o Azure DevOps](build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.md)
+ [Centralize a resolução de DNS usando o Microsoft AWS Managed Microsoft AD Active Directory local](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Limpe os recursos AWS do Account Factory for Terraform (AFT) com segurança após a perda do arquivo de estado](clean-up-aft-resources-safely-after-state-file-loss.md)
+ [Configure o registro em log para aplicativos.NET no Amazon CloudWatch Logs usando NLog](configure-logging-for-net-applications-in-amazon-cloudwatch-logs-by-using-nlog.md)
+ [Copie imagens de contêineres do Amazon ECR entre e Contas da AWS Regiões da AWS](copy-ecr-container-images-across-accounts-regions.md)
+ [Crie uma imagem de contêiner Docker personalizada SageMaker e use-a para treinamento de modelos no AWS Step Functions](create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.md)
+ [Crie um pipeline em regiões da AWS que não oferecem suporte à AWS CodePipeline](create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.md)
+ [Crie alarmes para métricas personalizadas usando a detecção de CloudWatch anomalias da Amazon](create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection.md)
+ [Personalize os nomes das funções padrão usando AWS CDK aspectos e escotilhas de escape](customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.md)
+ [Implantação de um pipeline que detecta simultaneamente problemas de segurança em diversos entregáveis de código](deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.md)
+ [Implante e gerencie um data lake de tecnologia sem servidor na Nuvem AWS usando a infraestrutura como código](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Implante aplicativos em contêineres em AWS IoT Greengrass V2 execução como um contêiner Docker](deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.md)
+ [Implante recursos e pacotes do Kubernetes usando o Amazon EKS e um repositório de charts do Helm no Amazon S3](deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3.md)
+ [Implante aplicativos de várias pilhas usando o AWS CDK com TypeScript](deploy-multiple-stack-applications-using-aws-cdk-with-typescript.md)
+ [Implemente a validação de segurança de codificação em tempo real usando um servidor MCP com Kiro e outros assistentes de codificação](deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.md)
+ [Implante instâncias de cluster de failover do SQL Server na Amazon EC2 e na Amazon FSx usando o Terraform](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Implemente as automações de segurança para a AWS WAF solução usando o Terraform](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Desenvolva assistentes avançados baseados em bate-papo com IA generativa usando RAG e prompting ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Habilite a Amazon GuardDuty condicionalmente usando modelos AWS CloudFormation](enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.md)
+ [Configuração do ajuste de escala automático orientado por eventos no Amazon EKS usando o Identidade de Pods do Amazon EKS e o KEDA](event-driven-auto-scaling-with-eks-pod-identity-and-keda.md)
+ [Gere recomendações personalizadas e reclassificadas usando o Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Receber notificações do Amazon SNS quando o estado de chave de uma chave do AWS KMS mudar](get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.md)
+ [Governança de conjuntos de permissões para várias contas usando o Account Factory para Terraform](govern-permission-sets-aft.md)
+ [Identificação automática de imagens de contêineres duplicadas ao migrar para um repositório do Amazon ECR](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [Implementação do versionamento de APIs baseado em caminhos usando domínios personalizados no Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Melhore o desempenho operacional habilitando o Amazon DevOps Guru em várias regiões e contas da AWS e OUs com o AWS CDK](improve-operational-performance-by-enabling-amazon-devops-guru-across-multiple-aws-regions-accounts-and-ous-with-the-aws-cdk.md)
+ [Instale o agente SSM nos nós de trabalho do Amazon EKS usando o Kubernetes DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Integre o controlador universal Stonebranch com o AWS Mainframe Modernization](integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.md)
+ [Modernização do mainframe: DevOps iniciada AWS com o Rocket Software Enterprise Suite](mainframe-modernization-devops-on-aws-with-micro-focus.md)
+ [Gerencie conjuntos de Centro de Identidade do AWS IAM permissões como código usando AWS CodePipeline](manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.md)
+ [Gerencie conjuntos de AWS permissões dinamicamente usando o Terraform](manage-aws-permission-sets-dynamically-by-using-terraform.md)
+ [Gerencie aplicativos de contêineres on-premises configurando o Amazon ECS Anywhere com o AWS CDK](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [Gerencie AWS Organizations políticas como código usando o AWS CodePipeline Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Migre registros de DNS em massa para uma zona hospedada privada do Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Migre aplicativos hospedados no IIS para a Amazon EC2 usando o appcmd.exe](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [Monitore o uso de uma Amazon Machine Image compartilhada em várias Contas da AWS](monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.md)
+ [Organize um pipeline de ETL com validação, transformação e particionamento usando AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Automatize blue/green as implantações dos bancos de dados globais do Amazon Aurora usando os princípios de IaC](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [Preserve o espaço IP roteável em projetos de VPC com várias contas para sub-redes sem workload](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Provisione um produto Terraform AWS Service Catalog usando um repositório de código](provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.md)
+ [Execute tarefas do AWS Systems Manager Automation de forma síncrona a partir do AWS Step Functions](run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions.md)
+ [Configure um CI/CD pipeline para cargas de trabalho híbridas no Amazon ECS Anywhere usando o AWS CDK e GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Configure um CI/CD pipeline para migração de banco de dados usando o Terraform](set-up-ci-cd-pipeline-for-db-migration-with-terraform.md)
+ [Configure a infraestrutura Multi-AZ para um SQL Server Always On FCI usando a Amazon FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Configure bots de UiPath RPA automaticamente na Amazon EC2 usando a AWS CloudFormation](set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.md)
+ [Autenticação simplificada de aplicações com TLS mútua no Amazon ECS usando o Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Integração de locatários na arquitetura de SaaS para o modelo de silo usando C\$1 e o AWS CDK](tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.md)
+ [Use o Terraform para habilitar automaticamente a Amazon GuardDuty para uma organização](use-terraform-to-automatically-enable-amazon-guardduty-for-an-organization.md)
+ [Como usar agentes do Amazon Bedrock para automatizar a criação de controles de entrada de acesso no Amazon EKS por meio de prompts baseados em texto](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)
+ [Valide o código do Account Factory for Terraform (AFT) localmente](validate-account-factory-for-terraform-aft-code-locally.md)
+ [Visualize os resultados do AI/ML modelo usando o Flask e o AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)

# Infraestrutura
<a name="infrastructure-pattern-list"></a>

**Topics**
+ [Acesse um bastion host usando o Session Manager e o Amazon EC2 Instance Connect](access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.md)
+ [Centralize a resolução de DNS usando o Microsoft AWS Managed Microsoft AD Active Directory local](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Centralize o monitoramento usando o Amazon CloudWatch Observability Access Manager](centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.md)
+ [Verifique as EC2 instâncias para ver as tags obrigatórias no lançamento](check-ec2-instances-for-mandatory-tags-at-launch.md)
+ [Limpe os recursos AWS do Account Factory for Terraform (AFT) com segurança após a perda do arquivo de estado](clean-up-aft-resources-safely-after-state-file-loss.md)
+ [Crie um pipeline em regiões da AWS que não oferecem suporte à AWS CodePipeline](create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.md)
+ [Personalize os nomes das funções padrão usando AWS CDK aspectos e escotilhas de escape](customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.md)
+ [Implemente um cluster Cassandra na Amazon EC2 com estática privada IPs para evitar o reequilíbrio](deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.md)
+ [Estenda VRFs para a AWS usando o AWS Transit Gateway Connect](extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.md)
+ [Receber notificações do Amazon SNS quando o estado de chave de uma chave do AWS KMS mudar](get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.md)
+ [Preserve o espaço IP roteável em projetos de VPC com várias contas para sub-redes sem workload](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Provisione um produto Terraform AWS Service Catalog usando um repositório de código](provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.md)
+ [Registre vários Contas da AWS com um único endereço de e-mail usando o Amazon SES](register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.md)
+ [Configure a resolução de DNS para redes híbridas em um ambiente de conta única da AWS](set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment.md)
+ [Configure bots de UiPath RPA automaticamente na Amazon EC2 usando a AWS CloudFormation](set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.md)
+ [Configure uma PeopleSoft arquitetura altamente disponível na AWS](set-up-a-highly-available-peoplesoft-architecture-on-aws.md)
+ [Configure a recuperação de desastres para o Oracle JD Edwards com o EnterpriseOne AWS Elastic Disaster Recovery](set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.md)
+ [Configure a detecção de CloudFormation desvios em uma organização multirregional e com várias contas](set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.md)
+ [Importe com sucesso um bucket do S3 como uma pilha da AWS CloudFormation](successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.md)
+ [Sincronize dados entre sistemas de arquivos Amazon EFS em diferentes regiões da AWS usando a AWS DataSync](synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.md)
+ [Teste a AWS infraestrutura usando LocalStack e Terraform Tests](test-aws-infra-localstack-terraform.md)
+ [Atualize os clusters do SAP Pacemaker de para ENSA1 ENSA2](upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.md)
+ [Use zonas de disponibilidade consistentes VPCs em diferentes contas da AWS](use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.md)
+ [Use o usuário IDs nas políticas do IAM para controle de acesso e automação](use-user-ids-iam-policies-access-control-automation.md)
+ [Valide o código do Account Factory for Terraform (AFT) localmente](validate-account-factory-for-terraform-aft-code-locally.md)
+ [Mais padrões](infrastructure-more-patterns-pattern-list.md)

# Acesse um bastion host usando o Session Manager e o Amazon EC2 Instance Connect
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect"></a>

*Piotr Chotkowski e Witold Kowalik, Amazon Web Services*

## Resumo
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-summary"></a>

Um *bastion host*, às vezes chamado de *jump box*, é um servidor que fornece um único ponto de acesso de uma rede externa aos recursos localizados em uma rede privada. Um servidor exposto a uma rede pública externa, como a Internet, representa um potencial risco de segurança para acesso não autorizado. É importante proteger e controlar o acesso a esses servidores.

Esse padrão descreve como você pode usar o [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) e o [Amazon EC2 Instance Connect para se conectar](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) com segurança a um host bastion do Amazon Elastic Compute Cloud (Amazon EC2) implantado em seu. Conta da AWS O Gerenciador de Sessões é um recurso de AWS Systems Manager. Os benefícios desse padrão incluem:
+ O bastion host implantado não tem nenhuma porta de entrada aberta exposta à Internet pública. Isso reduz a superfície de ataque potencial.
+ Você não precisa armazenar e manter chaves Secure Shell (SSH) de longo prazo no seu Conta da AWS. Em vez disso, cada usuário gera um novo par de chaves SSH sempre que se conecta ao bastion host. AWS Identity and Access Management As políticas (IAM) anexadas às AWS credenciais do usuário controlam o acesso ao bastion host.

**Público-alvo**

Esse padrão é destinado a leitores com experiência com conhecimento básico da Amazon EC2, Amazon Virtual Private Cloud (Amazon VPC) e Hashicorp Terraform.

## Pré-requisitos e limitações
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ AWS Command Line Interface (AWS CLI) versão 2, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ Plugin do Gerenciador de Sessões para o AWS CLI, [instalado](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
+ CLI do Terraform, [instalado](https://developer.hashicorp.com/terraform/cli)
+ Armazenamento para o [estado](https://developer.hashicorp.com/terraform/language/state) do Terraform, como um bucket do Amazon Simple Storage Service (Amazon S3) e uma tabela do Amazon DynamoDB que serve como backend remoto para armazenar o estado do Terraform. Para obter mais informações sobre o uso de backends remotos para o estado do Terraform, consulte [Amazon S3 Backends](https://www.terraform.io/language/settings/backends/s3) (documentação do Terraform). Para uma amostra de código que configura o gerenciamento remoto do estado com um back-end do Amazon S3, consulte [remote-state-s3-back-end](https://registry.terraform.io/modules/nozaq/remote-state-s3-backend/aws/latest) (Terraform Registry). Observe os seguintes requisitos:
  + As tabelas do DynamoDB e do bucket do Amazon S3 devem estar na mesma Região da AWS.
  + Ao criar a tabela do DynamoDB, a chave de partição deve ser `LockID` (com distinção entre maiúsculas e minúsculas) e o tipo de chave de partição deve ser `String`. Todas as outras configurações devem estar em seus valores predefinidos. Para obter mais informações, consulte [Sobre chaves primárias](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey) e [Criar uma tabela](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html) na documentação do DynamoDB.
+ Um SSH cliente, instalado

**Limitações**
+ Esse padrão serve como uma prova de conceito (PoC) ou como base para um maior desenvolvimento. Ele não deve ser usado na sua forma atual em ambientes de produção. Antes da implantação, ajuste o código de amostra no repositório para atender aos seus requisitos e ao seu caso de uso.
+ Esse padrão pressupõe que o bastion host de destino usa o Amazon Linux 2 como seu sistema operacional. Embora seja possível usar outras Amazon Machine Images (AMIs), outros sistemas operacionais estão fora do escopo desse padrão.
**nota**  
O Amazon Linux 2 está se aproximando do fim do suporte. Para obter mais informações, consulte o [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).
+ Nesse padrão, o bastion host está localizado em uma sub-rede privada sem um gateway NAT e um gateway da internet. Esse design isola a EC2 instância da Amazon da Internet pública. Você pode adicionar uma configuração de rede específica que permita a comunicação com a internet. Para obter mais informações, consulte [Conectar sua VPC a outras redes](https://docs.aws.amazon.com/vpc/latest/userguide/extend-intro.html) na documentação do Amazon VPC. Da mesma forma, seguindo o [princípio do privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), o host bastion não tem acesso a nenhum outro recurso em seu, a Conta da AWS menos que você conceda permissões explicitamente. Para obter mais informações, consulte [Políticas baseadas em recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) na documentação do IAM.

**Versões do produto**
+ AWS CLI versão 2
+ Terraform versão 1.3.9

## Arquitetura
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-architecture"></a>

**Pilha de tecnologias de destino**
+ Uma VPC com uma única sub-rede privada.
+ Os seguintes [endpoints da VPC de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html):
  + `amazonaws.<region>.ssm`— O endpoint do AWS Systems Manager serviço.
  + `amazonaws.<region>.ec2messages`: o Systems Manager usa esse endpoint para fazer chamadas do SSM Agent para o serviço do Systems Manager.
  + `amazonaws.<region>.ssmmessages`— O Session Manager usa esse endpoint para se conectar à sua EC2 instância Amazon por meio de um canal de dados seguro.
+ Uma EC2 instância `t3.nano` da Amazon executando o Amazon Linux 2
+ Perfil do IAM de perfil de instância
+ Grupos de segurança da Amazon VPC e regras de grupos de segurança para os endpoints e a instância da Amazon EC2 

**Arquitetura de destino**

![\[Diagrama de arquitetura do uso do Session Manager para acessar um bastion host.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/a02aed20-1852-4c91-902f-f553795006e2/images/819c503b-7eec-4a9c-862b-b87107d50dc1.png)


O diagrama mostra o seguinte processo:

1. O usuário assume um perfil do IAM que tem permissões para fazer o seguinte:
   + Autentique, autorize e conecte-se à instância da Amazon EC2 
   + Iniciar a sessão com o Session Manager

1. O usuário inicia uma sessão SSH por meio do Session Manager.

1. O Session Manager autentica o usuário, verifica as permissões nas políticas do IAM associadas, verifica as configurações e envia uma mensagem ao SSM Agent para abrir uma conexão bidirecional.

1. O usuário envia a chave pública SSH para o Bastion Host por meio de metadados da Amazon. EC2 Isso deve ser feito antes de cada conexão. A chave pública SSH permanece disponível por 60 segundos.

1. O bastion host se comunica com os endpoints VPC da interface para Systems Manager e Amazon. EC2

1. O usuário acessa o bastion host por meio do Session Manager usando um canal de comunicação bidirecional criptografado TLS 1.2.

**Automação e escala**

As opções a seguir estão disponíveis para automatizar a implantação ou escalar essa arquitetura:
+ Você pode implantar a arquitetura por meio de um pipeline de integração contínua e entrega contínua (CI/CD).
+ Você pode modificar o código para alterar o tipo de instância do bastion host.
+ Você pode modificar o código para implantar vários bastion hosts. No arquivo `bastion-host/main.tf`, no bloco de recursos `aws_instance`, adicione o meta-argumento `count`. Para obter mais informações, consulte a [documentação do Terraform](https://developer.hashicorp.com/terraform/language/meta-arguments/count).

## Ferramentas
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-tools"></a>

**Serviços da AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
+ [O Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fornece capacidade de computação escalável no. Nuvem AWS Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ajuda você a gerenciar suas aplicações e infraestrutura em execução na Nuvem AWS. Ele simplifica o gerenciamento de aplicativos e recursos, reduz o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus AWS recursos com segurança em grande escala. Esse padrão usa o [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html), um atributo do Systems Manager.
+ [A Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda você a lançar AWS recursos em uma rede virtual que você definiu. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

**Outras ferramentas**
+ O [HashiCorp Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código. Esse padrão usa o [Terraform CLI](https://developer.hashicorp.com/terraform/cli).

**Repositório de código**

O código desse padrão está disponível no GitHub [Access a bastion host usando o Session Manager e o repositório Amazon EC2 Instance Connect](https://github.com/aws-samples/secured-bastion-host-terraform).

## Práticas recomendadas
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-best-practices"></a>
+ Recomendamos o uso de ferramentas automatizadas de verificação de código para melhorar a segurança e a qualidade do código. Esse padrão foi verificado usando o [Checkov](https://www.checkov.io/), uma ferramenta estática de análise de código para IaC. No mínimo, recomendamos que você execute verificações básicas de validação e formatação usando os comandos `terraform validate` e `terraform fmt -check -recursive` do Terraform.
+ É uma boa prática adicionar testes automatizados para IaC. Para obter mais informações sobre as diferentes abordagens para testar o código do Terraform, consulte [Testando o HashiCorp Terraform](https://www.hashicorp.com/blog/testing-hashicorp-terraform) (postagem no blog do Terraform).
+ Durante a implantação, o Terraform usa a EC2 instância substituta da Amazon sempre que uma nova versão do [Amazon Linux 2 AMI](https://aws.amazon.com/marketplace/pp/prodview-zc4x2k7vt6rpu?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) é detectada. Isso implanta a nova versão do sistema operacional, incluindo patches e atualizações. Se a programação de implantação não for frequente, isso pode representar um risco de segurança porque a instância não tem os patches mais recentes. É importante atualizar e aplicar patches de segurança com frequência às EC2 instâncias implantadas da Amazon. Para obter mais informações, consulte [Gerenciamento de atualizações na Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/update-management.html).
+ Como esse padrão é uma prova de conceito, ele usa políticas AWS gerenciadas, como`AmazonSSMManagedInstanceCore`. AWS as políticas gerenciadas abrangem casos de uso comuns, mas não concedem permissões de privilégios mínimos. Conforme necessário para seu caso de uso, recomendamos que você crie políticas personalizadas que concedam permissões de privilégio mínimo para os recursos implantados nessa arquitetura. Para obter mais informações, consulte [Comece a usar políticas AWS gerenciadas e adote as permissões de privilégios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-use-aws-defined-policies).
+ Use uma senha para proteger o acesso às chaves SSH e armazenar as chaves em um local seguro.
+ Configure o registro em log e o monitoramento do bastion host. O registro em log e o monitoramento são partes importantes da manutenção de sistemas, tanto do ponto de vista operacional quanto de segurança. Há várias maneiras de monitorar conexões e atividades em seu bastion host. Para obter mais informações, consulte os tópicos a seguir na documentação do Systems Manager.
  + [Monitoramento AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring.html)
  + [Registro e monitoramento em AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/logging-and-monitoring.html)
  + [Auditar a atividade da sessão](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-auditing.html)
  + [Registrar a atividade de sessão de registro em log](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging.html)

## Épicos
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics"></a>

### Implantar os recursos
<a name="deploy-the-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório de códigos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps engenheiro, Desenvolvedor | 
| Iniciar o diretório de trabalho do Terraform. | Essa etapa é necessária somente para a primeira implantação. Se você estiver reimplantando o padrão, pule para a próxima etapa.No diretório raiz do repositório clonado, insira o seguinte comando, onde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)<pre>terraform init \<br />    -backend-config="bucket=$S3_STATE_BUCKET" \<br />    -backend-config="key=$PATH_TO_STATE_FILE" \<br />    -backend-config="region=$AWS_REGION</pre>Como alternativa, você pode abrir o arquivo **config.tf** e, na seção `terraform`, fornecer manualmente esses valores. | DevOps engenheiro, desenvolvedor, Terraform | 
| Implantar os recursos | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps engenheiro, desenvolvedor, Terraform | 

### Configurar o ambiente local
<a name="set-up-the-local-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure a conexão do SSH. | Atualize o arquivo de configuração do SSH para permitir conexões do SSH através do Session Manager. Para obter instruções, consulte [Permitir conexões do SSH para o Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable). Isso permite que usuários autorizados insiram um comando proxy que inicia uma sessão do Session Manager e transfere todos os dados por meio de uma conexão bidirecional. | DevOps engenheiro | 
| Gerar as chaves SSH. | Insira o seguinte comando para gerar um par de chaves SSH privadas e públicas locais. Use esse par de chaves para se conectar ao bastion host.<pre>ssh-keygen -t rsa -f my_key</pre> | DevOps engenheiro, Desenvolvedor | 

### Conecte-se ao bastion host usando o Session Manager
<a name="connect-to-the-bastion-host-by-using-sesh"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Obtenha o ID da instância. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | AWS geral | 
| Enviar a chave pública SSH. | Nesta seção, você carrega a chave pública para os [metadados da instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) do bastion host. Depois que a chave for carregada, você terá 60 segundos para iniciar uma conexão com o bastion host. Após 60 segundos, a chave pública é removida. Para obter mais informações, consulte a seção [Solução de problemas](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting) desse padrão. Conclua as próximas etapas rapidamente para evitar que a chave seja removida antes de se conectar ao bastion host.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | AWS geral | 
| Conecte-se ao bastion host. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)Existem outras opções para abrir uma conexão SSH com o bastion host. Para obter mais informações, consulte *Abordagens alternativas para estabelecer uma conexão SSH com o bastion host* na seção [Informações adicionais](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional) desse padrão. | AWS geral | 

### Limpar (opcional)
<a name="optional-clean-up"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Remova os recursos implantados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps engenheiro, desenvolvedor, Terraform | 

## Solução de problemas
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| erro `TargetNotConnected` ao tentar se conectar ao bastion host | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | 
| erro `Permission denied` ao tentar se conectar ao bastion host | Depois que a chave for carregada aos bastion host, você terá 60 segundos para iniciar a conexão. Depois de 60 segundos, a chave é removida automaticamente e você não pode usá-la para se conectar à instância. Se isso ocorrer, você poderá repetir a etapa para reenviar a chave para a instância. | 

## Recursos relacionados
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-resources"></a>

**AWS documentação**
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) (documentação do Systems Manager)
+ [Instalar o plugin do Gerenciador de Sessões para a AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) (documentação do Gerenciador de Sessões)
+ [Permitindo conexões SSH para o Session Manager ](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable) (documentação do Systems Manager)
+ [Sobre o uso do EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) ( EC2 documentação da Amazon)
+ [Conecte-se usando o EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html) ( EC2 documentação da Amazon)
+ [Gerenciamento de identidade e acesso para a Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam.html) ( EC2 documentação da Amazon)
+ [Usando uma função do IAM para conceder permissões a aplicativos executados em EC2 instâncias da Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) (documentação do IAM)
+ [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentação do IAM)
+ [Controlar o tráfego para recursos usando grupos de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) (documentação da Amazon VPC)

**Outros recursos**
+ [Página da web do Desenvolvedor do Terraform](https://developer.hashicorp.com/terraform)
+ [Comando: validar](https://developer.hashicorp.com/terraform/cli/commands/validate) (documentação do Terraform)
+ [Comando: fmt](https://developer.hashicorp.com/terraform/cli/commands/fmt) (documentação do Terraform)
+ [Testando o HashiCorp Terraform](https://www.hashicorp.com/blog/testing-hashicorp-terraform) (postagem HashiCorp no blog)
+ [Página da Web de Checkov](https://www.checkov.io/)

## Mais informações
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional"></a>

**Abordagens alternativas para estabelecer uma conexão SSH com o bastion host**

*Encaminhamento de portas*

Você pode usar a opção `-D 8888` para abrir uma conexão SSH com encaminhamento dinâmico de portas. Para obter mais informações, consulte as [instruções](https://explainshell.com/explain?cmd=ssh+-i+%24PRIVATE_KEY_FILE+-D+8888+ec2-user%40%24INSTANCE_ID) em explainshell.com. Veja a seguir um exemplo de um comando para abrir uma conexão SSH usando o encaminhamento de porta.

```
ssh -i $PRIVATE_KEY_FILE -D 8888 ec2-user@$INSTANCE_ID
```

Esse tipo de conexão abre um proxy SOCKS que pode encaminhar o tráfego do seu navegador local por meio do bastion host. Se você estiver usando Linux ou macOS, insira `man ssh` para ver todas as opções. Isso exibe o manual de referência do SSH.

*Usando o script fornecido*

Em vez de executar manualmente as etapas descritas em *Conecte-se ao bastion host usando o Session Manager* na seção [Épicos](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics), você pode usar o script **connect.sh** incluído no repositório de código. Esse script gera o par de chaves SSH, envia a chave pública para a EC2 instância da Amazon e inicia uma conexão com o host bastion. Ao executar o script, você passa a tag e o nome da chave como argumentos. Veja a seguir um exemplo do comando para executar o script.

```
./connect.sh sandbox-dev-bastion-host my_key
```

# Centralize a resolução de DNS usando o Microsoft AWS Managed Microsoft AD Active Directory local
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory"></a>

*Brian Westmoreland, Amazon Web Services*

## Resumo
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-summary"></a>

Esse padrão fornece orientação para centralizar a resolução de DNS em um ambiente de AWS várias contas usando AWS Directory Service for Microsoft Active Directory ()AWS Managed Microsoft AD e o Amazon Route 53. Nesse padrão, o namespace AWS DNS é um subdomínio do namespace DNS local. Esse padrão também fornece orientação sobre como configurar os servidores DNS locais para encaminhar consultas para AWS quando a solução de DNS local usa o Microsoft Active Directory.  

## Pré-requisitos e limitações
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-prereqs"></a>

**Pré-requisitos **
+ Um ambiente de AWS várias contas configurado usando AWS Organizations.
+ Conectividade de rede estabelecida entre Contas da AWS.
+ Conectividade de rede estabelecida entre AWS e o ambiente local (usando AWS Direct Connect ou qualquer tipo de conexão VPN).
+ AWS Command Line Interface (AWS CLI) configurado em uma estação de trabalho local.
+ AWS Resource Access Manager (AWS RAM) usado para compartilhar regras do Route 53 entre contas. Portanto, o compartilhamento deve ser ativado dentro do AWS Organizations ambiente, conforme descrito na seção [Epics](#centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics).

**Limitações**
+ AWS Managed Microsoft AD A Edição Standard tem um limite de 5 compartilhamentos.
+ AWS Managed Microsoft AD A Enterprise Edition tem um limite de 125 ações.
+ A solução nesse padrão é limitada ao compartilhamento Regiões da AWS desse suporte AWS RAM.

**Versões do produto**
+ Microsoft Active Directory em execução no Windows Server 2008, 2012, 2012 R2 ou 2016.

## Arquitetura
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-architecture"></a>

**Arquitetura de destino**

![\[Arquitetura para resolução de DNS centralizada na AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/91430e2a-f7f6-4dbe-9fe7-8abed1f764a7/images/9b5fc51d-590b-468f-80f7-1949f3b3b258.png)


Neste design, AWS Managed Microsoft AD é instalado nos serviços compartilhados Conta da AWS. Embora não seja obrigatório, este padrão considera essa configuração. Se você configurar de AWS Managed Microsoft AD forma diferente Conta da AWS, talvez seja necessário modificar as etapas na seção [Epics](#centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics) adequadamente.

Esse design usa resolvedores do Route 53 para oferecer suporte à resolução de nomes por meio do uso das regras do Route 53. Se a solução de DNS on-premises usa o Microsoft DNS, criar uma regra de encaminhamento condicional para o namespace da AWS (`aws.company.com`), que é um subdomínio do namespace do DNS da empresa (`company.com`), não é simples. Se você tentar criar um encaminhador condicional tradicional, isso resultará em um erro. Isso ocorre porque o Microsoft Active Directory já é considerado autoritário para qualquer subdomínio do `company.com`. Para contornar esse erro, primeiro você deve criar uma delegação para que `aws.company.com` delegue a autoridade desse namespace. Em seguida, você pode criar o encaminhador condicional.

A nuvem privada virtual (VPC) de cada conta spoke pode ter seu próprio namespace DNS exclusivo com base no namespace raiz. AWS Nesse design, cada conta spoke acrescenta uma abreviatura do nome da conta ao namespace base da AWS. Depois que as zonas hospedadas privadas na conta spoke forem criadas, elas serão associadas à VPC local na conta spoke, bem como à VPC na conta da rede central. AWS Isso permite que a conta da AWS rede central responda às consultas de DNS relacionadas às contas spoke. Dessa forma, tanto o Route 53 quanto o Route 53 AWS Managed Microsoft AD trabalham juntos para compartilhar a responsabilidade de gerenciar o AWS namespace ()`aws.company.com`.

**Automação e escala**

Esse design usa endpoints do Route 53 Resolver para escalar consultas de DNS entre AWS e seu ambiente local. Cada endpoint do Route 53 Resolver compreende várias interfaces de rede elástica (espalhadas por várias zonas de disponibilidade), e cada interface de rede pode lidar com até 10.000 consultas por segundo. O Route 53 Resolver suporta até 6 endereços IP por endpoint, então, no total, esse design suporta até 60.000 consultas ao DNS por segundo espalhadas por várias zonas de disponibilidade para alta disponibilidade.  

Além disso, este padrão considera automaticamente o crescimento futuro na AWS. As regras de encaminhamento de DNS configuradas no local não precisam ser modificadas para oferecer suporte às zonas hospedadas privadas novas VPCs e associadas que são adicionadas. AWS 

## Ferramentas
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-tools"></a>

**Serviços da AWS**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permite que suas cargas de trabalho e AWS recursos com reconhecimento de diretório usem o Microsoft Active Directory no. Nuvem AWS
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)é um serviço de gerenciamento de contas que ajuda você a consolidar várias Contas da AWS em uma organização que você cria e gerencia centralmente.
+ [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) ajuda você a compartilhar seus recursos com segurança Contas da AWS para reduzir a sobrecarga operacional e fornecer visibilidade e auditabilidade.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é um serviço web de DNS altamente disponível e escalável.

**Ferramentas**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando. Nesse padrão, o AWS CLI é usado para configurar as autorizações do Route 53.

## Épicos
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics"></a>

### Crie e compartilhe um AWS Managed Microsoft AD diretório
<a name="create-and-share-an-managed-ad-directory"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implantar AWS Managed Microsoft AD. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrador da AWS | 
| Compartilhar o diretório. | Depois que o diretório for criado, compartilhe-o com outras Contas da AWS pessoas na AWS organização. Para obter instruções, consulte [Compartilhar seu diretório](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step2_share_directory.html) no *Guia de administração do AWS Directory Service *.  AWS Managed Microsoft AD A Edição Standard tem um limite de 5 compartilhamentos. A Enterprise Edition tem um limite de 125 ações. | Administrador da AWS | 

### Configure o Route 53
<a name="configure-r53"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie resolvedores do Route 53. | Os resolvedores do Route 53 facilitam a resolução de consultas de DNS entre AWS e o data center local.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html)Embora o uso da conta AWS de rede central VPC não seja obrigatório, as etapas restantes pressupõem essa configuração. | Administrador da AWS | 
| Crie regras do Route 53. | Seu caso de uso específico pode exigir um grande número de regras do Route 53, mas você precisará configurar as seguintes regras como linha de base:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html)Para obter mais informações, consulte [Gerenciar regras de encaminhamento](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html) no *Guia do desenvolvedor do Route 53*. | Administrador da AWS | 
| Configure um perfil do Route 53. | Um perfil do Route 53 é usado para compartilhar as regras com as contas de spoke.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrador da AWS | 

### Configurar o DNS do Active Directory on-premises
<a name="configure-on-premises-active-directory-dns"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a delegação. | Use o snap-in do Microsoft DNS (`dnsmgmt.msc`) para criar uma nova delegação para o namespace `company.com` no Active Directory. O nome do domínio delegado deve ser `aws`. Isso torna o nome de domínio totalmente qualificado (FQDN) da delegação `aws.company.com`. Use os endereços IP dos controladores de AWS Managed Microsoft AD domínio para os valores IP do servidor de nomes e use `server.aws.company.com` para o nome. (Esta delegação é apenas para redundância, pois um encaminhador condicional será criado para esse namespace, o qual terá precedência sobre a delegação.) |  Active Directory | 
| Crie o encaminhador condicional. | Use o snap-in do Microsoft DNS (`dnsmgmt.msc`) para criar um novo encaminhador condicional para `aws.company.com`.  Use os endereços IP dos resolvedores de AWS entrada do Route 53 no DNS central Conta da AWS para o destino do encaminhador condicional.   |  Active Directory | 

### Crie zonas hospedadas privadas do Route 53 para spoke Contas da AWS
<a name="create-r53-private-hosted-zones-for-spoke-aws-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie as zonas hospedadas privadas do Route 53. | Crie uma zona hospedada privada do Route 53 em cada conta spoke. Associe essa zona hospedada privada à conta spoke VPC. Para obter etapas detalhadas, consulte [Criação de uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) no *Guia do desenvolvedor do Route 53*. | Administrador da AWS | 
| Crie autorizações. | Use o AWS CLI para criar uma autorização para a conta de AWS rede central VPC. Execute este comando no contexto de cada Conta da AWS de spoke:<pre>aws route53 create-vpc-association-authorization --hosted-zone-id <hosted-zone-id> \<br />   --vpc VPCRegion=<region>,VPCId=<vpc-id></pre>em que:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrador da AWS | 
| Criar associações. | Crie a associação de zona hospedada privada do Route 53 para a conta de AWS rede central VPC usando o. AWS CLI Execute este comando a partir do contexto da conta de AWS rede central:<pre>aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <hosted-zone-id> \<br />   --vpc VPCRegion=<region>,VPCId=<vpc-id></pre>em que:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrador da AWS | 

## Recursos relacionados
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-resources"></a>
+ [Simplifique o gerenciamento de DNS em um ambiente de várias contas com o Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/) (AWS postagem no blog)
+ [Criando sua AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html) (AWS Directory Service documentação)
+ [Compartilhamento de um AWS Managed Microsoft AD diretório](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step2_share_directory.html) (AWS Directory Service documentação)
+ [O que é Amazon Route 53 Resolver?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html) (Documentação do Amazon Route 53)
+ [Criar uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) (documentação do Amazon Route 53)
+ [O que são perfis do Amazon Route 53?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/profiles.html) (Documentação do Amazon Route 53)

# Centralize o monitoramento usando o Amazon CloudWatch Observability Access Manager
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager"></a>

*Anand Krishna Varanasi, Jagdish Komakula, Ashish Kumar, Jimmy Morgan, Sarat Chandra Pothula, Vivek Thangamuthu e Balaji Vedagiri, Amazon Web Services*

## Resumo
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-summary"></a>

A observabilidade é crucial para monitorar, entender e solucionar problemas de aplicativos. Aplicativos que abrangem várias contas, como implementações de landing zone AWS Control Tower ou landing zone, geram um grande número de registros e rastreiam dados. Para solucionar problemas rapidamente ou entender a análise de usuários ou a análise de negócios, você precisa de uma plataforma de observabilidade comum em todas as contas. O Amazon CloudWatch Observability Access Manager oferece acesso e controle sobre vários registros de contas a partir de um local central.

Você pode usar o Gerente de Acesso à Observabilidade para visualizar e gerenciar registros de dados de observabilidade gerados pelas contas de origem. As contas de origem são individuais Contas da AWS que geram dados de observabilidade para seus recursos. Os dados de observabilidade são compartilhados entre contas de origem e as de monitoramento. Os dados de observabilidade compartilhados podem incluir métricas na Amazon CloudWatch, registros no Amazon CloudWatch Logs e rastreamentos. AWS X-Ray Para obter mais informações, consulte [Referência de API do Gerente de Acesso à Observabilidade](https://docs.aws.amazon.com/OAM/latest/APIReference/Welcome.html).

Esse padrão é para usuários que têm aplicativos ou infraestrutura executados em vários Contas da AWS e precisam de um local comum para visualizar os registros. Ele explica como você pode configurar o Gerente de Acesso à Observabilidade usando o Terraform para monitorar o status e a integridade desses aplicativos ou infraestrutura. Você pode instalar esta solução de diversas formas:
+ Como um módulo do Terraform independente, que você configura manualmente
+ Ao usar um pipeline de integração contínua e entrega contínua (CI/CD)
+ Ao realizar a integração com outras soluções, como o [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)

As instruções na seção [Épicos](#centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-epics) abrangem a implementação manual. Para as etapas de instalação do AFT, consulte o arquivo README do repositório do GitHub [Observability Access Manager](https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform).

## Pré-requisitos e limitações
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-prereqs"></a>

**Pré-requisitos **
+ O [Terraform](https://www.terraform.io/) instalado ou referenciado em seu sistema ou em tubulações automatizadas. (É recomendável usar a versão [mais recente](https://releases.hashicorp.com/terraform/).)
+ Uma conta que você pode usar como uma conta de monitoramento central. Outras contas criam links para a conta de monitoramento central para visualizar os logs.
+ (Opcional) Um repositório de código-fonte GitHub, como AWS CodeCommit, Atlassian Bitbucket ou sistema similar. Um repositório de código-fonte não é necessário se você estiver usando CI/CD pipelines automatizados.
+ (Opcional) Permissões para criar pull requests (PRs) para revisão de código e colaboração de código em GitHub.

**Limitações**

O Gerente de Acesso à Observabilidade tem as seguintes Service Quotas, que não podem ser alteradas. Considere essas cotas antes de implantar esse atributo. Para obter mais informações, consulte as [cotas de CloudWatch serviço](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) na CloudWatch documentação.
+ **Links da conta de origem**: você pode vincular cada conta de origem a no máximo cinco contas de monitoramento.
+ **Coletores**: você pode criar vários coletores para uma conta, mas somente um coletor por conta Região da AWS é permitido.

Além disso:
+ Os coletores e links devem ser criados da mesma forma Região da AWS; eles não podem ser interregionais.

**Monitoramento entre regiões e entre contas**

Para o monitoramento entre regiões e entre contas, você pode escolher uma das seguintes opções:
+ Crie [ CloudWatch painéis entre contas e regiões](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) para alarmes e métricas. Essa opção não é compatível com registros em log e rastreamentos.
+ Implemente o [registro centralizado](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) usando o Amazon OpenSearch Service.
+ Crie um coletor por região a partir de todas as contas de locatários, envie métricas para uma conta de monitoramento centralizada (conforme descrito neste padrão) e, em seguida, use [fluxos de CloudWatch métricas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html) para enviar os dados para um destino externo comum ou para produtos de monitoramento de terceiros, como Datadog, Dynatrace, Sumo Logic, Splunk ou New Relic.

## Arquitetura
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-architecture"></a>

**Componentes**

CloudWatch O Observability Access Manager consiste em dois componentes principais que permitem a observabilidade entre contas:
+ Um *coletor* permite que as contas de origem enviem dados de observabilidade para a conta de monitoramento central. Basicamente, um coletor fornece uma junção de gateway para as contas de origem se conectarem. Só pode haver um gateway ou conexão de coletor, e várias contas podem se conectar a ele.
+ Cada conta de origem tem um *link* para a junção do gateway do coletor e os dados de observabilidade são enviados por meio desse link. Você deve criar um coletor antes de criar links de cada conta de origem.

**Arquitetura**

O diagrama a seguir ilustra o Gerente de Acesso à Observabilidade e seus componentes.

![\[Arquitetura para observabilidade entre contas com coletores e links.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/00603763-4f99-456e-85e7-a80d803b087d/images/5188caf9-348b-4d91-b560-2b3d6ea81191.png)


## Ferramentas
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-tools"></a>

**Serviços da AWS**
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)é um serviço de gerenciamento de contas que ajuda você a consolidar várias Contas da AWS em uma organização que você cria e gerencia centralmente.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

**Ferramentas**
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ AWS Control Tower O [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) configura um pipeline do Terraform para ajudá-lo a provisionar e personalizar contas em. AWS Control Tower Opcionalmente, você pode usar o AFT para configurar o Gerente de Acesso à Observabilidade em escala em várias contas.

**Repositório de código**

O código desse padrão está disponível no repositório do GitHub [Observability Access Manager](https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform).

## Práticas recomendadas
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-best-practices"></a>
+ Em AWS Control Tower ambientes, marque a conta de registro como a conta de monitoramento central (coletor).
+ Se você tiver várias organizações com várias contas AWS Organizations, recomendamos que você inclua as organizações em vez de contas individuais na política de configuração. Se você tiver um pequeno número de contas ou se as contas não fizerem parte de uma organização na política de configuração do coletor, você pode optar por incluir contas individuais.

## Épicos
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-epics"></a>

### Configure o módulo coletor
<a name="set-up-the-sink-module"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Clone o repositório do GitHub Observability Access Manager:<pre>git clone https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform</pre> | AWS DevOps, administrador da nuvem, administrador da AWS | 
| Especifique os valores das propriedades para o módulo coletor. | No arquivo `main.tf` (na pasta `deployments/aft-account-customizations/LOGGING/terraform/`**** do repositório), especifique valores para as seguintes propriedades:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Para obter mais informações, consulte [AWS::Oam::Sink](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-oam-sink.html)a CloudFormation documentação. | AWS DevOps, administrador da nuvem, administrador da AWS | 
| Instale o módulo sink. | Exporte as credenciais da Conta da AWS que você selecionou como conta de monitoramento e instale o módulo coletor do Observability Access Manager:<pre>Terraform Init<br />Terrafom Plan<br />Terraform Apply</pre> | AWS DevOps, administrador da nuvem, administrador da AWS | 

### Configure o módulo do coletor
<a name="set-up-the-link-module"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Especifique os valores da propriedade para o módulo de link. | No arquivo `main.tf ` (na pasta `deployments/aft-account-customizations/LOGGING/terraform/`**** do repositório), especifique valores para as seguintes propriedades:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Para obter mais informações, consulte [AWS::Oam::Link](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-oam-link.html)a CloudFormation documentação. | AWS DevOps, administrador de nuvem, arquiteto de nuvem | 
| Instale o módulo de link para contas individuais. | Exporte as credenciais de contas individuais e instale o módulo de link do Gerente de Acesso à Observabilidade:<pre>Terraform Plan<br />Terraform Apply</pre>Você pode configurar o módulo do link individualmente para cada conta ou usar o [AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) para instalar automaticamente esse módulo em várias contas. | AWS DevOps, administrador de nuvem, arquiteto de nuvem | 

### Aprovar conexões sink-to-link
<a name="approve-sink-to-link-connections"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verificar a mensagem de status. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)À direita, você deve ver a mensagem de status **Conta de monitoramento habilitada** com uma marca de seleção verde. Isso significa que a conta de monitoramento tem um coletor do Gerente de Acesso à Observabilidade ao qual os links de outras contas se conectarão. |  | 
| Aprove as link-to-sink conexões. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Para obter mais informações, consulte [Vincular contas de monitoramento com contas de origem](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account-Setup.html) na CloudWatch documentação. | AWS DevOps, administrador de nuvem, arquiteto de nuvem | 

### Verifique os dados de observabilidade entre contas
<a name="verify-cross-account-observability-data"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Visualize dados entre contas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html) | AWS DevOps, administrador de nuvem, arquiteto de nuvem | 

### (Opcional) Permita que as contas de origem confiem na conta de monitoramento
<a name="optional-enable-source-accounts-to-trust-monitoring-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Visualize métricas, painéis, logs, widgets e alarmes de outras contas. | Como recurso adicional,**** você pode compartilhar CloudWatch métricas, painéis, registros, widgets e alarmes com outras contas. Cada conta usa uma função do IAM chamada **CloudWatch- CrossAccountSharingRole ** para obter acesso a esses dados.As contas de origem que têm uma relação de confiança com a conta central de monitoramento podem assumir essa função e visualizar dados da conta de monitoramento.CloudWatch fornece um CloudFormation script de exemplo para criar a função. Escolha **Gerenciar perfil no IAM** e execute esse script nas contas em que você deseja visualizar os dados.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root"<br />                ]<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre>Para obter mais informações, consulte [Habilitando a funcionalidade entre contas CloudWatch na](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region) CloudWatch documentação. | AWS DevOps, administrador de nuvem, arquiteto de nuvem | 

### (Opcional) Visualizar entre contas e entre regiões a partir da conta de monitoramento
<a name="optional-view-cross-account-cross-region-from-the-monitoring-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o acesso entre contas e entre regiões. | Na conta central de monitoramento, você pode, opcionalmente, adicionar um seletor de contas para alternar facilmente entre contas e visualizar seus dados sem precisar se autenticar.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Para obter mais informações, consulte [ CloudWatch Console multiregional entre contas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) na CloudWatch documentação. | AWS DevOps, administrador de nuvem, arquiteto de nuvem | 

## Recursos relacionados
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-resources"></a>
+ [CloudWatch observabilidade entre contas (documentação](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) da Amazon CloudWatch )
+ [Referência da API do Amazon CloudWatch Observability Access Manager](https://docs.aws.amazon.com/OAM/latest/APIReference/Welcome.html) ( CloudWatch documentação da Amazon)
+ [Recurso: aws\$1oam\$1sink](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/oam_sink) (documentação do Terraform)
+ [Fonte de dados: aws\$1oam\$1link](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/oam_link) (documentação do Terraform)
+ [CloudWatchObservabilityAccessManager](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/oam.html)(Documentação AWS do Boto3)

# Verifique as EC2 instâncias para ver as tags obrigatórias no lançamento
<a name="check-ec2-instances-for-mandatory-tags-at-launch"></a>

*Susanne Kangnoh e Archit Mathur, Amazon Web Services*

## Resumo
<a name="check-ec2-instances-for-mandatory-tags-at-launch-summary"></a>

O Amazon Elastic Compute Cloud (Amazon EC2) fornece capacidade de computação escalável na nuvem da Amazon Web Services (AWS). O uso da Amazon EC2 elimina a necessidade de investir antecipadamente em hardware, para que você possa desenvolver e implantar aplicativos com mais rapidez.

Você pode usar a marcação para categorizar seus recursos da AWS de maneiras diferentes. EC2 a marcação de instâncias é útil quando você tem muitos recursos em sua conta e deseja identificar rapidamente um recurso específico com base nas tags. Você pode atribuir metadados personalizados às suas EC2 instâncias usando tags. Cada tag consiste em um valor e em uma chave definida pelo usuário. Recomendamos criar um conjunto consistente de tags para atender às necessidades da sua organização. 

Esse padrão fornece um CloudFormation modelo da AWS para ajudar você a monitorar EC2 instâncias para tags específicas. O modelo cria um evento da Amazon CloudWatch Events que monitora a AWS CloudTrail **TagResource**ou **UntagResource**os eventos para detectar novas marcações de EC2 instâncias ou remoção de tags. Se uma tag predefinida estiver ausente, ela chama uma função do AWS Lambda, que envia uma mensagem de violação para um endereço de e-mail que você fornece, usando o Amazon Simple Notiﬁcation Service (Amazon SNS). 

## Pré-requisitos e limitações
<a name="check-ec2-instances-for-mandatory-tags-at-launch-prerequisites-and-limitations"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket do Amazon Simple Storage Service (Amazon S3) para carregar o código do Lambda fornecido.
+ Um endereço de e-mail no qual você deseja receber notificações de violação.

**Limitações**
+ Essa solução suporta CloudTrail **TagResource**nossos **UntagResource**eventos. Ela não cria notificações para nenhum outro evento.
+ Essa solução verifica somente as chaves de tag. Ele não monitora os valores-chave.

## Arquitetura
<a name="check-ec2-instances-for-mandatory-tags-at-launch-architecture"></a>

**Arquitetura ****de fluxo de trabalho **

![\[Workflow diagram showing Serviços da AWS interaction for EC2 instance monitoring and notification.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9cd74141-a87f-419e-94b3-0b28fd04a018/images/b48fd21b-a86b-4ec7-b9f6-4f1a64999437.png)


 

**Automação e escala**
+ Você pode usar o CloudFormation modelo da AWS várias vezes para diferentes regiões e contas da AWS. Você precisa executar o modelo somente uma vez em cada região ou conta.

## Ferramentas
<a name="check-ec2-instances-for-mandatory-tags-at-launch-tools"></a>

**Serviços da AWS**
+ [Amazon EC2](https://aws.amazon.com/ec2/) — O Amazon Elastic Compute Cloud (Amazon EC2) é um serviço web que fornece capacidade computacional segura e redimensionável na nuvem. Ele foi projetado para facilitar a computação em nuvem na escala da web para os desenvolvedores.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) — CloudTrail é um serviço da AWS que ajuda você com governança, conformidade e auditoria operacional e de risco da sua conta da AWS. As ações realizadas por um usuário, função ou serviço da AWS são registradas como eventos em CloudTrail. 
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — O Amazon CloudWatch Events fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos recursos da AWS. CloudWatch Os eventos ficam cientes das mudanças operacionais à medida que elas ocorrem e tomam medidas corretivas conforme necessário, enviando mensagens para responder ao ambiente, ativando funções, fazendo alterações e capturando informações de estado. 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html): o Lambda é um serviço de computação que oferece suporte à execução de código sem a necessidade de provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html): o Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos altamente escalável que pode ser usado para uma ampla variedade de soluções de armazenamento, incluindo sites, aplicativos móveis, backups e data lakes.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html): o Amazon Simple Notiﬁcation Service (Amazon SNS) é um serviço web que permite que aplicativos, usuários finais e dispositivos enviem e recebam notificações da nuvem instantaneamente.

**Código **

Esse padrão inclui um anexo com dois arquivos:
+ `index.zip` é um arquivo compactado que inclui o código do Lambda para esse padrão.
+ `ec2-require-tags.yaml`é um CloudFormation modelo que implanta o código Lambda.

Consulte a seção *Tópicos* para obter informações sobre como usar esses arquivos.

## Épicos
<a name="check-ec2-instances-for-mandatory-tags-at-launch-epics"></a>

### Implantar o código do Lambda
<a name="deploy-the-lambda-code"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça upload do código para um bucket do S3. | Crie um novo bucket do S3 ou use um bucket do S3 existente para carregar o arquivo `index.zip` anexado (código do Lambda). Esse bucket deve estar na mesma região da AWS que os recursos (EC2 instâncias) que você deseja monitorar. | Arquiteto de nuvem | 
| Implante o CloudFormation modelo. | Abra o console do Cloudformation na mesma região da AWS do bucket S3 e implante o arquivo `ec2-require-tags.yaml` fornecido no anexo. No próximo épico, forneça valores para os parâmetros do modelo.   | Arquiteto de nuvem | 

### Preencha os parâmetros no CloudFormation modelo
<a name="complete-the-parameters-in-the-cloudformation-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Dar o nome do bucket do S3. | Insira o nome do bucket do S3 que você criou ou selecionou no primeiro épico. Esse bucket do S3 contém o arquivo.zip do código Lambda e deve estar na mesma região da AWS do CloudFormation modelo e das EC2 instâncias que você deseja monitorar. | Arquiteto de nuvem | 
| Fornecer a chave do S3. | Forneça a localização do arquivo .zip do código Lambda em seu bucket do S3, sem barras iniciais (por exemplo, `index.zip` ou `controls/index.zip`). | Arquiteto de nuvem | 
| Fornecer um endereço de e-mail. | Forneça um endereço de e-mail ativo no qual você deseja receber notificações de violação. | Arquiteto de nuvem | 
| Defina o nível de registro em log. | Especifique o nível de registro em log e a verbosidade. `Info` designa mensagens informativas detalhadas sobre o progresso do aplicativo e deve ser usado somente para depuração. `Error` designa eventos de erro que ainda podem permitir que o aplicativo continue em execução. `Warning` designa situações potencialmente prejudiciais. | Arquiteto de nuvem | 
| Inserir as chaves de tag necessárias. | Insira as chaves de tag que você deseja verificar. Se você quiser especificar várias chaves, separe-as com vírgulas, sem espaços. (Por exemplo, `ApplicationId,CreatedBy,Environment,Organization` pesquisa quatro chaves.) O evento CloudWatch Events pesquisa essas chaves de tag e envia uma notificação se elas não forem encontradas. | Arquiteto de nuvem | 

### Confirmar a assinatura
<a name="confirm-the-subscription"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirme a assinatura por e-mail. | Quando o CloudFormation modelo é implantado com sucesso, ele envia uma mensagem de e-mail de assinatura para o endereço de e-mail que você forneceu. Você precisa confirmar sua assinatura para começar a receber as notificações.   | Arquiteto de nuvem | 

## Recursos relacionados
<a name="check-ec2-instances-for-mandatory-tags-at-launch-related-resources"></a>
+ [Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) (documentação do Amazon S3)
+ [Carregar objetos](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) (documentação do Amazon S3)
+ [Marque seus EC2 recursos da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) ( EC2 documentação da Amazon)
+ [Criação de uma regra de CloudWatch eventos que é acionada em uma chamada de API da AWS usando a AWS (documentação da CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) Amazon CloudWatch )

## Anexos
<a name="attachments-9cd74141-a87f-419e-94b3-0b28fd04a018"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/9cd74141-a87f-419e-94b3-0b28fd04a018/attachments/attachment.zip)

# Limpe os recursos AWS do Account Factory for Terraform (AFT) com segurança após a perda do arquivo de estado
<a name="clean-up-aft-resources-safely-after-state-file-loss"></a>

*Gokendra Malviya, Amazon Web Services*

## Resumo
<a name="clean-up-aft-resources-safely-after-state-file-loss-summary"></a>

Quando você usa o AWS Account Factory for Terraform (AFT) para gerenciar seu AWS Control Tower ambiente, o AFT gera um arquivo de estado do Terraform para rastrear o estado e a configuração dos recursos criados pelo Terraform. Perder o arquivo de estado do Terraform pode gerar desafios significativos para o gerenciamento e a limpeza dos recursos. Esse padrão fornece uma abordagem sistemática para identificar e remover com segurança os recursos relacionados ao AFT, mantendo a integridade do seu AWS Control Tower ambiente.

O processo foi projetado para garantir a remoção adequada de todos os componentes do AFT, mesmo na ausência da referência do arquivo de estado original. Esse processo fornece um caminho claro para restabelecer e reconfigurar com sucesso o AFT em seu ambiente, para ajudar a garantir o mínimo de interrupção em suas operações. AWS Control Tower 

Para obter mais informações sobre o AFT, consulte a [documentação do AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html).

## Pré-requisitos e limitações
<a name="clean-up-aft-resources-safely-after-state-file-loss-prereqs"></a>

**Pré-requisitos **
+ Conhecimento detalhado da [arquitetura do AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-architecture.html).
+ Acesso de administrador às seguintes contas:
  + Conta gerencial do AFT
  + AWS Control Tower Conta de gerenciamento
  + Conta de arquivamento de logs
  + Conta de auditoria
+ Verificação de que nenhuma política de controle de serviço (SCPs) contém restrições ou limitações que bloqueariam a exclusão de recursos relacionados ao AFT.

**Limitações**
+ Este procedimento consegue remover os recursos com eficiência, porém não recupera arquivos de estado perdidos, e alguns recursos podem precisar ser identificados manualmente.
+ O tempo necessário para o processo de limpeza varia conforme a complexidade do ambiente e pode demorar várias horas.
+ Este padrão foi testado usando a versão 1.12.2 do AFT e remove os recursos listados a seguir. Se você estiver usando uma versão diferente do AFT, talvez seja necessário excluir recursos adicionais.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html)

**Importante**  
Os recursos excluídos pelos procedimentos deste padrão não podem ser recuperados. Antes de seguir estas etapas, verifique cuidadosamente os nomes dos recursos e confirme que eles foram criados pelo AFT.

## Arquitetura
<a name="clean-up-aft-resources-safely-after-state-file-loss-architecture"></a>

O diagrama a seguir apresenta os componentes do AFT e o fluxo de trabalho geral. O AFT configura um pipeline do Terraform que ajuda você a provisionar e personalizar suas contas no AWS Control Tower. O AFT segue um GitOps modelo para automatizar os processos de provisionamento de contas em. AWS Control Tower Você cria um arquivo do Terraform para uma solicitação de conta e o envia para um repositório, que fornece a entrada que aciona o fluxo de trabalho do AFT para o provisionamento das contas. Após a conclusão do provisionamento da conta, o AFT pode executar etapas adicionais de personalização automaticamente.

![\[Componentes do AFT e fluxo de trabalho geral.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/3e0cae87-20ef-4fcc-aacf-bb450844ac56.png)


Nesta arquitetura:
+ AWS Control Tower A **conta de gerenciamento** Conta da AWS é dedicada ao AWS Control Tower serviço. Essa conta também é comumente referida como *conta pagadora da AWS * ou a *conta gerencial do AWS Organizations *.
+ A **conta de gerenciamento da AFT** Conta da AWS é dedicada às operações de gerenciamento da AFT. Esta conta é diferente da conta gerencial da sua organização.
+ A **conta vendida** Conta da AWS contém todos os componentes e controles básicos que você selecionou. A AFT usa AWS Control Tower para vender uma nova conta.

Para obter informações adicionais sobre essa arquitetura, consulte [Introdução ao AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft) no AWS Control Tower workshop.

## Ferramentas
<a name="clean-up-aft-resources-safely-after-state-file-loss-tools"></a>

**Serviços da AWS**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)ajuda você a configurar e administrar um ambiente AWS com várias contas, seguindo as melhores práticas prescritivas.
+ AWS O [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html) configura um pipeline do Terraform para ajudá-lo a provisionar e personalizar contas e recursos no. AWS Control Tower
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ajuda você a gerenciar e governar centralmente seu ambiente à medida que você cresce e escala seus AWS recursos. Com o Organizations, você pode criar contas e alocar recursos, agrupar contas para organizar os fluxos de trabalho, aplicar políticas de governança e simplificar o faturamento usando um único método de pagamento para todas as suas contas.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los. Este padrão requer perfis IAM e permissões.

**Outras ferramentas**
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.

## Práticas recomendadas
<a name="clean-up-aft-resources-safely-after-state-file-loss-best-practices"></a>
+ Para AWS Control Tower isso, consulte [Práticas recomendadas para AWS Control Tower administradores](https://docs.aws.amazon.com/controltower/latest/userguide/best-practices.html) na AWS Control Tower documentação.
+ Para o IAM, consulte as [Práticas recomendadas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação do IAM.

## Épicos
<a name="clean-up-aft-resources-safely-after-state-file-loss-epics"></a>

### Exclusão de recursos do AFT na conta gerencial do AFT
<a name="delete-aft-resources-in-the-aft-management-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua recursos identificados pela etiqueta do AFT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 
| Exclua os perfis do IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 
| Exclua o cofre AWS Backup de backup. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 
| Exclua CloudWatch os recursos da Amazon. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 
| Exclua AWS KMS recursos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 

### Exclusão dos recursos do AFT na conta de arquivamento de logs
<a name="delete-aft-resources-in-the-log-archive-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os buckets do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 
| Exclua os perfis do IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 

### Exclusão dos recursos do AFT na conta de auditoria
<a name="delete-aft-resources-in-the-audit-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os perfis do IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 

### Excluir recursos AFT na conta AWS Control Tower de gerenciamento
<a name="delete-aft-resources-in-the-ctower-management-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os perfis do IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 
| Exclua EventBridge as regras. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrador da AWS, AWS DevOps, DevOps engenheiro | 

## Solução de problemas
<a name="clean-up-aft-resources-safely-after-state-file-loss-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| A desanexação do gateway da internet não foi bem-sucedida. | Durante a exclusão dos recursos identificados pela etiqueta **AFT**, se você enfrentar esse problema ao desanexar ou excluir o gateway da internet, deverá primeiro excluir os endpoints da VPC:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | 
| Você não consegue encontrar as CloudWatch consultas especificadas. | Se você não conseguir encontrar CloudWatch as consultas que foram criadas pelo AFT, siga estas etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | 

## Recursos relacionados
<a name="clean-up-aft-resources-safely-after-state-file-loss-resources"></a>
+ AFT:
  + [GitHub Repositório](https://github.com/aws-ia/terraform-aws-control_tower_account_factory)
  + [Workshop](https://catalog.workshops.aws/control-tower/en-US/customization/aft)
  + [Documentação](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html)
+ [AWS Control Tower documentação](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)

## Mais informações
<a name="clean-up-aft-resources-safely-after-state-file-loss-additional"></a>

Para visualizar as consultas AFT no painel do CloudWatch Logs Insights, escolha o ícone de **consultas salvas e de amostra** no canto superior direito, conforme ilustrado na captura de tela a seguir:

![\[Acessando as consultas do AFT no painel do CloudWatch Logs Insights.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/255d4032-738b-4600-9084-9684d2e9a328.png)


# Crie um pipeline em regiões da AWS que não oferecem suporte à AWS CodePipeline
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Resumo
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-summary"></a>

**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](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)

 CodePipeline A AWS é um serviço de orquestração de entrega contínua (CD) que faz parte de um conjunto de DevOps ferramentas da Amazon Web Services (AWS). Ele se integra a uma grande variedade de fontes (como sistemas de controle de versão e soluções de armazenamento), produtos e serviços de integração contínua (CI) da AWS e de parceiros da AWS e produtos de código aberto para fornecer um serviço de end-to-end fluxo de trabalho para implantações rápidas de aplicativos e infraestrutura.

No entanto, CodePipeline não é compatível com todas as regiões da AWS e é útil ter um orquestrador invisível que conecte os serviços da AWS CI/CD . Esse padrão descreve como implementar um pipeline de end-to-end fluxo de trabalho em regiões da AWS onde ainda CodePipeline não é suportado pelo uso de CI/CD serviços da AWS CodeCommit, como AWS CodeBuild, AWS e AWS CodeDeploy.

## Pré-requisitos e limitações
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ CLI do AWS Cloud Development Kit (AWS CDK) versão 2.28 ou superior

## Arquitetura
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-architecture"></a>

**Pilha de tecnologias de destino**

O diagrama a seguir mostra um pipeline que foi criado em uma região que não oferece suporte CodePipeline, como a região da África (Cidade do Cabo). Um desenvolvedor envia os arquivos de CodeDeploy configuração (também chamados de *scripts de gancho do ciclo de vida de implantação*) para o repositório Git hospedado por. CodeCommit (Consulte o [GitHub repositório](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) fornecido com esse padrão.) Uma EventBridge regra da Amazon é iniciada automaticamente. CodeBuild

Os arquivos de CodeDeploy configuração são obtidos CodeCommit como parte do estágio de origem do pipeline e transferidos para o. CodeBuild 

Na próxima fase, CodeBuild executa as seguintes tarefas: 

1. Faz o download do arquivo TAR do código-fonte da aplicação. Você pode configurar o nome desse arquivo usando o Parameter Store, um recurso do AWS Systems Manager.

1. Faz o download dos arquivos de CodeDeploy configuração.

1. Cria um arquivo combinado de código-fonte e arquivos CodeDeploy de configuração do aplicativo que são específicos para o tipo de aplicativo.

1. Inicia a CodeDeploy implantação em uma instância do Amazon Elastic Compute Cloud (Amazon EC2) usando o arquivamento combinado.

![\[Criação de pipeline em uma região da AWS sem suporte\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e27750de-b597-424e-b5bf-4d58dc9b60cc/images/95fc815e-a762-4142-b0fd-2a716823e498.png)


## Ferramentas
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-tools"></a>

**Serviços da AWS**
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) é 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) é 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.
+ A [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatiza implantações no Amazon EC2 ou em instâncias locais, funções do AWS Lambda ou serviços do Amazon Elastic Container Service (Amazon ECS).
+  CodePipelineA [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 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 [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.

**Código**

O código desse padrão está disponível no repositório GitHub [CodePipeline Unsupported Regions](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions).

## Épicos
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-epics"></a>

### Configurar a estação de trabalho do desenvolvedor
<a name="set-up-your-developer-workstation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale a AWS CDK CLI. | Para obter instruções, consulte a [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites). | AWS DevOps | 
| Instalar um cliente Git. | Para criar commits, você pode usar um cliente Git instalado em seu computador local e, em seguida, enviar seus commits para o repositório. CodeCommit [Para configurar CodeCommit com seu cliente Git, consulte a CodeCommit documentação.](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-commit.html) | AWS DevOps | 
| Instale o npm. | Instale o gerenciador de pacotes **npm**. Para obter mais informações, consulte a [documentação do npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). | AWS DevOps | 

### Configurar o pipeline
<a name="set-up-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório de códigos. | Clone o repositório de [regiões GitHub CodePipeline não suportadas](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) em sua máquina local executando o comando a seguir.<pre>git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions</pre> | DevOps engenheiro | 
| Defina os parâmetros em cdk.json. | Abra o arquivo `cdk.json` e forneça valores para os seguintes parâmetros:<pre>"pipeline_account":"XXXXXXXXXXXX",<br />"pipeline_region":"us-west-2",<br />"repo_name": "app-dev-repo",<br />"ec2_tag_key": "test-vm",<br />"configName" : "cbdeployconfig",<br />"deploymentGroupName": "cbdeploygroup",<br />"applicationName" : "cbdeployapplication",<br />"projectName" : "CodeBuildProject"</pre>em que:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.html) | AWS DevOps | 
| Configure a biblioteca de estruturas CDK da AWS. | No GitHub repositório clonado, use os comandos a seguir para instalar a biblioteca de construção do AWS CDK, criar seu aplicativo e sintetizar para gerar o modelo da AWS CloudFormation para o aplicativo.<pre>npm i aws-cdk-lib<br />npm run build<br />cdk synth</pre> | AWS DevOps | 
| Implante a aplicação WS CDK CLI de exemplo. | Implante o código executando o comando a seguir em uma região sem suporte (como `af-south-1`).<pre>cdk deploy</pre> | AWS DevOps | 

### Configure o CodeCommit repositório para CodeDeploy
<a name="set-up-the-codecommit-repository-for-codedeploy"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure CI/CD para o aplicativo. | Clone o CodeCommit repositório que você especificou no `cdk.json` arquivo (chamado `app-dev-repo` por padrão) para configurar o CI/CD pipeline do aplicativo.<pre>git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo</pre>onde o nome do repositório e a região dependem dos valores fornecidos no arquivo `cdk.json`. | AWS DevOps | 

### Teste o pipeline
<a name="test-the-pipeline"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Teste o pipeline com instruções de implantação. | A `CodeDeploy_Files` pasta do repositório GitHub [CodePipeline Unsupported Regions](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) inclui arquivos de amostra que instruem CodeDeploy a implantação do aplicativo. O `appspec.yml` arquivo é um arquivo CodeDeploy de configuração que contém ganchos para controlar o fluxo de implantação do aplicativo. Você pode usar os arquivos de amostra `index.html`, `start_server.sh`, `stop_server.sh` e `install_dependencies.sh` para atualizar um site hospedado no Apache. Esses são exemplos: você pode usar o código no GitHub repositório para implantar qualquer tipo de aplicativo. Quando os arquivos são enviados para o CodeCommit repositório, o pipeline invisível é iniciado automaticamente. Para ver os resultados da implantação, verifique os resultados das fases individuais nos CodeBuild CodeDeploy consoles e. | AWS DevOps | 

## Recursos relacionados
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-resources"></a>
+ [Conceitos básicos](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites) (documentação do AWS CDK)
+ [Introdução ao kit de desenvolvimento em nuvem (CDK)](https://catalog.us-east-1.prod.workshops.aws/workshops/5962a836-b214-4fbf-9462-fedba7edcc9b/en-US) (AWS Workshop Studio)
+ [Workshop sobre o AWS CDK](https://cdkworkshop.com/)

# Personalize os nomes das funções padrão usando AWS CDK aspectos e escotilhas de escape
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches"></a>

*Sandeep Singh e James Jacob, Amazon Web Services*

## Resumo
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-summary"></a>

Esse padrão demonstra como personalizar os nomes padrão das funções criadas por AWS Cloud Development Kit (AWS CDK) construções. A personalização dos nomes de perfis é frequentemente necessária quando sua organização tem restrições específicas baseadas em convenções de nomenclatura. Por exemplo, sua organização pode definir [limites de permissões AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) (IAM) ou [políticas de controle de serviço (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) que exijam um prefixo específico nos nomes das funções. Nesses casos, os nomes de função padrão gerados pelas AWS CDK construções podem não atender a essas convenções e talvez precisem ser alterados. Este padrão atende a esses requisitos ao usar [mecanismos de escape](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html) e [aspectos](https://docs.aws.amazon.com/cdk/v2/guide/aspects.html) no AWS CDK. Você emprega os mecanismos de escape para definir nomes de perfis personalizados e os aspectos para aplicar um nome personalizado a todos os perfis, garantindo conformidade com as políticas e restrições da sua organização.

## Pré-requisitos e limitações
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Pré-requisitos especificados na [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites)

**Limitações**
+ Os aspectos filtram recursos com base em tipos de recurso, garantindo que todos os perfis compartilhem o mesmo prefixo. Caso sejam necessários prefixos distintos para diferentes perfis, é preciso aplicar filtros adicionais com base em outras propriedades. Por exemplo, para atribuir prefixos diferentes a funções associadas a AWS Lambda funções, você pode filtrar por atributos ou tags de função específicos e aplicar um prefixo para funções relacionadas ao Lambda e um prefixo diferente para outras funções.
+ Os nomes de perfis do IAM podem ter, no máximo, 64 caracteres, de modo que nomes de perfis alterados precisam ser reduzidos para respeitar esse limite.
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte a página [Cotas e endpoints de serviços](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS CDK
+ AWS CloudFormation

**Arquitetura de destino**

![\[Arquitetura para usar mecanismos de escape e aspectos para personalizar os nomes de perfis atribuídos pelo AWS CDK.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/c149d8d2-1da6-4680-ab0b-e5051b69688c/images/15e56ca5-f150-4522-b374-8ee2dcc655a9.png)

+ Um AWS CDK aplicativo consiste em uma ou mais CloudFormation pilhas, que são sintetizadas e implantadas para gerenciar recursos. AWS 
+ Para modificar uma propriedade de um recurso AWS CDK gerenciado que não é exposta por uma construção de camada 2 (L2), use uma saída de emergência para substituir as CloudFormation propriedades subjacentes (nesse caso, o nome da função) e um aspecto para aplicar a função a todos os recursos no AWS CDK aplicativo durante o processo de síntese da pilha. AWS CDK 

## Ferramentas
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-tools"></a>

**Serviços da AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
+ AWS CDK A [interface de linha de comando (AWS CDK CLI)](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) (também conhecida como kit de AWS CDK ferramentas) é um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu aplicativo. AWS CDK O `cdk` comando CLI é a principal ferramenta para interagir com seu aplicativo. AWS CDK Ele executa seu aplicativo, interroga o modelo de aplicativo que você definiu e produz e implanta os CloudFormation modelos gerados pelo. AWS CDK
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida em todas Contas da AWS as regiões.

**Repositório de código**

O código-fonte e os modelos desse padrão estão disponíveis no repositório GitHub [CDK Aspects Override](https://github.com/aws-samples/cdk-aspects-override).

## Práticas recomendadas
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-best-practices"></a>

Consulte [as melhores práticas para usar o AWS CDK in TypeScript para criar projetos de IaC no site](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html) de Orientação **AWS **Prescritiva.

## Épicos
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-epics"></a>

### Instale a AWS CDK CLI
<a name="install-the-cdk-cli"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale a AWS CDK CLI. | Para instalar a AWS CDK CLI globalmente, execute o comando:<pre>npm install -g aws-cdk</pre> | AWS DevOps | 
| Verificar a versão. | Execute o comando :<pre>cdk --version</pre>Confirme se você está usando a versão 2 da AWS CDK CLI. | AWS DevOps | 
| Inicialize o AWS CDK ambiente. | Antes de implantar os CloudFormation modelos, prepare a conta Região da AWS que você deseja usar. Execute o comando :<pre>cdk bootstrap <account>/<Region></pre>Para obter mais informações, consulte [AWS CDK bootstrapping na documentação](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html). AWS  | AWS DevOps | 

### Implante o AWS CDK aplicativo para demonstrar o uso de aspectos
<a name="deploy-the-cdk-app-to-demonstrate-the-use-of-aspects"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o projeto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.html) | AWS DevOps | 
| Implante pilhas com nomes de perfil padrão atribuídos pelo AWS CDK. | Implante duas CloudFormation pilhas (`ExampleStack1`e`ExampleStack2`) que contenham as funções do Lambda e suas funções associadas:<pre>npm run deploy:ExampleAppWithoutAspects</pre>O código não transfere propriedades de perfil explicitamente, portanto, os nomes dos perfis serão definidos pelo AWS CDK.Para obter uma saída de exemplo, consulte a seção [ Informações adicionais](#customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional). | AWS DevOps | 
| Implante pilhas com aspectos. | Nesta etapa, você aplica um aspecto que impõe uma convenção de nome de função adicionando um prefixo a todas as funções do IAM implantadas no projeto. AWS CDK O aspecto está definido no arquivo `lib/aspects.ts`. O aspecto usa um mecanismo de escape para substituir o nome do perfil adicionando um prefixo. O aspecto é aplicado às pilhas no arquivo `bin/app-with-aspects.ts`. O prefixo de nome de perfil usado neste exemplo é `dev-unicorn`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.html)Para obter uma saída de exemplo, consulte a seção [ Informações adicionais](#customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional). | AWS DevOps | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua suas AWS CloudFormation pilhas. | Após terminar de usar este padrão, execute o seguinte comando para limpar os recursos e evitar incorrer em custos adicionais:<pre>cdk destroy --all -f && cdk --app npx ts-node bin/app-with-aspects.ts' destroy --all -f </pre> | AWS DevOps | 

## Solução de problemas
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Você encontra problemas ao usar AWS CDK o. | Consulte [Solução de AWS CDK problemas comuns](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html) na AWS CDK documentação. | 

## Recursos relacionados
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-resources"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)
+ [AWS CDK documentação](https://docs.aws.amazon.com/cdk/)
+ [AWS CDK em GitHub](https://github.com/aws/aws-cdk)
+ [Escape hatches](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html)
+ [Aspectos e o AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/aspects.html)

## Mais informações
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional"></a>

**Nomes de funções criados por CloudFormation without aspects**

```
Outputs:
ExampleStack1WithoutAspects.Function1RoleName = example-stack1-without-as-Function1LambdaFunctionSe-y7FYTY6FXJXA
ExampleStack1WithoutAspects.Function2RoleName = example-stack1-without-as-Function2LambdaFunctionSe-dDZV4rkWqWnI
...

Outputs:
ExampleStack2WithoutAspects.Function3RoleName = example-stack2-without-as-Function3LambdaFunctionSe-ygMv49iTyMq0
```

**Nomes de funções criados por CloudFormation with aspects**

```
Outputs:
ExampleStack1WithAspects.Function1RoleName = dev-unicorn-Function1LambdaFunctionServiceRole783660DC
ExampleStack1WithAspects.Function2RoleName = dev-unicorn-Function2LambdaFunctionServiceRole2C391181
...

Outputs:
ExampleStack2WithAspects.Function3RoleName = dev-unicorn-Function3LambdaFunctionServiceRole4CAA721C
```

# Implemente um cluster Cassandra na Amazon EC2 com estática privada IPs para evitar o reequilíbrio
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing"></a>

*Dipin Jain, Amazon Web Services*

## Resumo
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-summary"></a>

O IP privado de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) é retido durante todo o seu ciclo de vida. No entanto, o IP privado pode mudar durante uma falha planejada ou não planejada do sistema; por exemplo, durante uma atualização da imagem de máquina da Amazon (AMI). Em alguns cenários, reter um IP estático privado pode melhorar o desempenho e o tempo de recuperação das workloads. Por exemplo, usar um IP estático para um nó inicial do Apache Cassandra evita que o cluster incorra em uma sobrecarga de rebalanceamento. 

Esse padrão descreve como conectar uma interface de elastic network secundária às EC2 instâncias para manter o IP estático durante a nova hospedagem. O padrão se concentra nos clusters do Cassandra, mas você pode usar essa implementação para qualquer arquitetura que se beneficie da estática privada. IPs

## Pré-requisitos e limitações
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa da Amazon Web Service (AWS)

**Versões do produto**
+ DataStax versão 5.11.1
+ Sistema operacional: Ubuntu 16.04.6 LTS

## Arquitetura
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-architecture"></a>

**Arquitetura de origem**

A fonte pode ser um cluster Cassandra em uma máquina virtual (VM) local ou em instâncias EC2 na nuvem da AWS. O diagrama a seguir ilustra o segundo cenário. Esse exemplo inclui quatro nós de cluster: três nós iniciais e um nó de gerenciamento. Na arquitetura de origem, cada nó tem uma única interface de rede conectada.

![\[Quatro nós de EC2 cluster da Amazon, cada um com uma única interface de rede conectada.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/5d80cfc9-4b72-4c72-aefd-b77cc0fb58e3.png)


**Arquitetura de destino**

O cluster de destino é hospedado em EC2 instâncias com uma interface de rede elástica secundária conectada a cada nó, conforme ilustrado no diagrama a seguir.

![\[Quatro nós de EC2 cluster da Amazon, cada um com uma interface de rede elástica secundária conectada.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/d1e22017-f041-426b-9204-31ac158a407d.png)


**Automação e escala**

Você também pode automatizar a conexão de uma segunda interface de rede elástica a um grupo de Auto EC2 Scaling, conforme descrito em um vídeo do [AWS](https://www.youtube.com/watch?v=RmwGYXchb4E) Knowledge Center.

## Épicos
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-epics"></a>

### Configurar um cluster Cassandra na Amazon EC2
<a name="configure-a-cassandra-cluster-on-amazon-ec2"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie EC2 nós para hospedar um cluster Cassandra. | No [ EC2 console da Amazon](https://console.aws.amazon.com/ec2/), execute quatro EC2 instâncias para seus nós do Ubuntu em sua conta da AWS. Três nós (iniciais) são usados para o cluster Cassandra, e o quarto nó atua como um nó de gerenciamento de cluster onde você instalará o DataStax Enterprise (DSE). OpsCenter Para obter instruções, consulte a [ EC2 documentação da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance). | Engenheiro de nuvem | 
| Confirme as comunicações do nó. | Certifique-se de que os quatro nós possam se comunicar entre si pelas portas de gerenciamento do banco de dados e do cluster. | Engenheiro de rede | 
| Instale o DSE OpsCenter no nó de gerenciamento. | Instale o DSE OpsCenter 6.1 do pacote Debian no nó de gerenciamento. Para obter instruções, consulte a [documentação do DataStax ](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html). | DBA | 
| Criar uma interface de rede secundária. | O Cassandra gera um identificador exclusivo universal (UUID) para cada nó com base no endereço IP da EC2 instância desse nó. Esse UUID é usado para distribuir nós virtuais (vnodes) no anel. Quando o Cassandra é implantado em EC2 instâncias, os endereços IP são atribuídos automaticamente às instâncias à medida que elas são criadas.  No caso de uma interrupção planejada ou não planejada, o endereço IP da nova EC2 instância muda, a distribuição de dados muda e todo o anel precisa ser rebalanceado. Isso não é desejável. Para preservar o endereço IP atribuído, use uma [interface de rede elástica secundária](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#scenarios-enis) com um endereço IP fixo.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)Para obter mais informações sobre a criação de uma interface de rede, consulte a [ EC2 documentação da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#create_eni). | Engenheiro de nuvem | 
| Conecte a interface de rede secundária aos nós do cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)Para obter mais informações sobre como conectar uma interface de rede, consulte a [ EC2 documentação da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#attach_eni). | Engenheiro de nuvem | 
| Adicione rotas na Amazon EC2 para lidar com o roteamento assimétrico.  | Quando você conectar a segunda interface de rede, a rede provavelmente executará um roteamento assimétrico. Para evitar isso, você pode adicionar rotas para as novas interfaces de rede.Para obter uma explicação detalhada e a remediação do roteamento assimétrico, consulte o [vídeo do AWS Knowledge Center](https://www.youtube.com/watch?v=RmwGYXchb4E) ou [Superando o roteamento assimétrico em servidores multiresidenciais (artigo de Patrick no](http://www.linuxjournal.com/article/7291) *Linux* Journal, 5 de abril de 2004). McManus | Engenheiro de rede | 
| Atualize as entradas DNS para apontar para o IP da interface de rede secundária. | Aponte o nome de domínio totalmente qualificado (FQDN) do nó para o IP da interface de rede secundária. | Engenheiro de rede | 
| Instale e configure o cluster Cassandra usando o DSE. OpsCenter | Quando os nós do cluster estiverem prontos com as interfaces de rede secundárias, você poderá instalar e configurar o cluster do Cassandra. | DBA | 

### Recupere o cluster da falha do nó
<a name="recover-cluster-from-node-failure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma AMI para o nó inicial do cluster. | Faça um backup dos nós para que você possa restaurá-los com binários do banco de dados em caso de falha do nó. Para obter instruções, consulte [Criar uma AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html) na EC2 documentação da Amazon. | Administrador de backup | 
| Recupere-se da falha do nó. | Substitua o nó com falha por uma nova EC2 instância executada a partir da AMI e conecte a interface de rede secundária do nó com falha. | Administrador de backup | 
| Verifique se o cluster do Cassandra está íntegro. | Quando o nó de substituição estiver ativo, verifique a integridade do cluster no DSE. OpsCenter | DBA | 

## Recursos relacionados
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-resources"></a>
+ [Instalando o DSE OpsCenter 6.1 a partir do pacote Debian (documentação](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html)) DataStax 
+ [Como fazer uma interface de rede secundária funcionar em uma EC2 instância do Ubuntu](https://www.youtube.com/watch?v=RmwGYXchb4E) (vídeo do AWS Knowledge Center)
+ [Melhores práticas para executar o Apache Cassandra na Amazon (publicação no blog EC2 da AWS)](https://aws.amazon.com/blogs/big-data/best-practices-for-running-apache-cassandra-on-amazon-ec2/)

# Estenda VRFs para a AWS usando o AWS Transit Gateway Connect
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect"></a>

*Adam Till, Yashar Araghi, Vikas Dewangan e Mohideen, da Amazon Web Services HajaMohideen*

## Resumo
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-summary"></a>

O roteamento e encaminhamento virtuais (VRF) é um atributo das redes tradicionais. Ele usa domínios de roteamento lógico isolados, na forma de tabelas de rotas, para separar o tráfego de rede dentro da mesma infraestrutura física. Você pode configurar o AWS Transit Gateway para suportar o isolamento de VRF ao conectar sua rede on-premises à AWS. Esse padrão usa uma arquitetura de exemplo para se conectar localmente VRFs a diferentes tabelas de rotas do gateway de trânsito.

Esse padrão usa interfaces virtuais de trânsito (VIFs) nos anexos do AWS Direct Connect e do Transit Gateway Connect para estender o. VRFs Uma [VIF de trânsito](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html) é usada para acessar um ou mais gateways de trânsito do Amazon VPC associados aos gateways do Direct Connect. Um [anexo do gateway de trânsito Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html) conecta um gateway de trânsito a um dispositivo virtual de terceiros que está sendo executado em uma VPC. Um anexo do gateway de trânsito Connect oferece suporte ao protocolo de túnel Generic Routing Encapsulation (GRE) para alto desempenho e ao Protocolo de Gateway da Borda (BGP) para roteamento dinâmico.

A abordagem descrita nesse padrão tem os seguintes benefícios:
+ Usando o Transit Gateway Connect, você pode anunciar até 1.000 rotas para o Transit Gateway Connect peer e receber até 5.000 rotas dele. O uso do atributo Direct Connect Transit da VIF sem o Transit Gateway Connect é limitado a 20 prefixos por gateway de trânsito.
+ Você pode manter o isolamento do tráfego e usar o Transit Gateway Connect para fornecer serviços hospedados na AWS, independentemente dos esquemas de endereço IP que seus clientes estejam usando.
+ O tráfego de VRF não precisa cruzar uma interface virtual pública. Isso facilita o cumprimento dos requisitos de conformidade e segurança em muitas organizações.
+ Cada túnel do GRE suporta até 5 Gbps, e você pode ter até quatro túneis do GRE por anexo do gateway de trânsito Connect. Isso é mais rápido do que muitos outros tipos de conexão, como conexões AWS Site-to-Site VPN que suportam até 1,25 Gbps.

## Pré-requisitos e limitações
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-prereqs"></a>

**Pré-requisitos **
+ As contas da AWS necessárias foram criadas (consulte a arquitetura para obter detalhes)
+ Permissões para presumir um perfil do IAM no AWS Identity and Access Management (IAM) em cada conta.
+ Os perfis do IAM em cada conta devem ter permissões para provisionar recursos do AWS Transit Gateway e do AWS Direct Connect. Para obter mais informações, consulte [Autenticação e controle de acesso para seus gateways de trânsito](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-authentication-access-control.html) e consulte [Gerenciamento de identidade e acesso para o Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/security-iam.html).
+ As conexões do Direct Connect foram criadas com sucesso. Para obter mais informações, visite [Criar uma conexão usando o assistente de conexão](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dedicated_connection.html#create-connection).

**Limitações**
+ Há limites para anexos do Transit Gateway às contas VPCs de produção, controle de qualidade e desenvolvimento. Para obter mais informações, consulte [Anexos do gateway de trânsito para uma VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html).
+ Há limites para criação e uso de gateways Direct Connect. Para obter mais informações, consulte [Cotas do AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/limits.html).

## Arquitetura
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-architecture"></a>

**Arquitetura de destino**

O exemplo de arquitetura a seguir fornece uma solução reutilizável para implantar o transporte público VIFs com anexos do Transit Gateway Connect. Essa arquitetura fornece resiliência usando vários locais do Direct Connect. Para obter mais informações, visite [Máxima resiliência](https://docs.aws.amazon.com/directconnect/latest/UserGuide/maximum_resiliency.html) na documentação do Direct Connect. A rede local tem produção, controle de qualidade e desenvolvimento VRFs que são estendidos para a AWS e isolados por meio do uso de tabelas de rotas dedicadas.

![\[Diagrama de arquitetura do uso dos recursos do AWS Direct Connect e do AWS Transit Gateway para ampliar VRFs\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/10be0625-8574-40eb-bc00-bb0a07d0dc26.png)


No ambiente da AWS, duas contas são dedicadas à extensão do VRFs: uma conta do *Direct Connect e uma conta* do *hub de rede*. A conta do Direct Connect contém a conexão e o trânsito VIFs de cada roteador. Você cria o trânsito a VIFs partir da conta do Direct Connect, mas o implanta na conta do hub de rede para poder associá-lo ao gateway Direct Connect na conta do hub de rede. A conta do hub de rede contém o gateway do Direct Connect e o gateway de trânsito. Os recursos da AWS estão conectados da seguinte forma:

1. O Transit VIFs conecta os roteadores nos locais do Direct Connect com o AWS Direct Connect na conta do Direct Connect.

1. Uma VIF de trânsito conecta o Direct Connect ao gateway do Direct Connect na conta do hub de rede.

1. Uma [associação de gateway de trânsito](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html) conecta o gateway do Direct Connect ao gateway de trânsito na conta do hub de rede.

1. [Os anexos do Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html) Connect conectam o gateway de trânsito às contas de produção, controle de qualidade e desenvolvimento. VPCs 

*Arquitetura de VIF de trânsito*

O diagrama a seguir mostra os detalhes da configuração do trânsito VIFs. Esse exemplo de arquitetura usa uma VLAN para a origem do túnel, mas você também pode usar um loopback.

![\[Detalhes de configuração das conexões VIF de trânsito entre os roteadores e o AWS Direct Connect\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/e88d2546-61ef-4531-972b-089cdf44ed67.png)


A seguir estão os detalhes da configuração, como números do sistema autônomo (ASNs), para o trânsito VIFs.


| 
| 
| Recurso | Item | Detalhes | 
| --- |--- |--- |
| router-01 | ASN | 65534 | 
| router-02 | ASN | 65534 | 
| router-03 | ASN | 65534 | 
| router-04 | ASN | 65534 | 
| Direct Connect gateway | ASN | 64601 | 
| Transit gateway | ASN | 64600 | 
| CIDR block (Bloco CIDR) | 10.100.254.0/24 | 

*Arquitetura do Transit Gateway Connect*

O diagrama e as tabelas a seguir descrevem como configurar um único VRF por meio de um anexo do gateway de trânsito Connect. Além VRFs disso, atribua túneis exclusivos IDs, endereços IP GRE do gateway de trânsito e BGP dentro dos blocos CIDR. O endereço IP do GRE de mesmo nível corresponde ao endereço IP de mesmo nível do roteador da VIF de trânsito.

![\[Detalhes de configuração dos túneis do GRE entre os roteadores e o gateway de trânsito\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/e58278e1-f3b4-442d-95d9-1dafab4aa5ac.png)


A tabela a seguir contém detalhes da configuração do roteador.


| 
| 
| Roteador | Túnel | IP address (endereço de IP) | Fonte | Destino | 
| --- |--- |--- |--- |--- |
| router-01 | Túnel 1 | 169.254.101.17 | VLAN 60169.254.100.1 | 10.100.254.1 | 
| router-02 | Túnel 11 | 169.254.101.81 | VLAN 61169.254.100.5 | 10.100.254.11 | 
| router-03 | Túnel 21 | 169.254.101.145 | VLAN 62169.254.100.9 | 10.100.254.21 | 
| router-04 | Túnel 31 | 169.254.101.209 | VLAN 63169.254.100.13 | 10.100.254.31 | 

A tabela a seguir contém detalhes da configuração do Transit Gateway.


| 
| 
| Túnel | Endereço IP GRE do gateway de trânsito | Endereço IP GRE no mesmo nível | BGP dentro de blocos CIDR | 
| --- |--- |--- |--- |
| Túnel 1 | 10.100.254.1 | VLAN 60169.254.100.1 | 169.254.101.16/29 | 
| Túnel 11 | 10.100.254.11 | VLAN 61169.254.100.5 | 169.254.101.80/29 | 
| Túnel 21 | 10.100.254.21 | VLAN 62169.254.100.9 | 169.254.101.144/29 | 
| Túnel 31 | 10.100.254.31 | VLAN 63169.254.100.13 | 169.254.101.208/29 | 

**Implantação**

A seção [Épicos](#extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-epics) descreve como implantar um exemplo de configuração para um** **único VRF em vários roteadores de clientes. Depois que as etapas de 1 a 5 forem concluídas, você poderá criar novos anexos do Transit Gateway Connect usando as etapas 6 a 7 para cada novo VRF que você estiver estendendo para a AWS:

1. Crie o gateway de trânsito.

1. Crie uma tabela de rotas do gateway de trânsito para cada VRF.

1. Crie as interfaces virtuais de trânsito.

1. Crie um gateway do Direct Connect.

1. Crie a interface virtual do gateway do Direct Connect e as associações de gateway com prefixos permitidos.

1. Criar um anexo do Connect do gateway de trânsito.

1. Crie pares do gateway de trânsito Connect.

1. Associe o anexo do gateway de trânsito Connect à tabela de rotas.

1. Anuncie rotas para os roteadores.

## Ferramentas
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-tools"></a>

**Serviços da AWS**
+ O [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) conecta sua rede interna a um local do Direct Connect por meio de um cabo de fibra óptica Ethernet padrão. Com essa conexão, você pode criar interfaces virtuais diretamente para serviços públicos da AWS, ignorando provedores de serviço da internet no caminho da sua rede.
+ [O AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) é um hub central que conecta nuvens privadas virtuais (VPCs) e redes locais.
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

## Épicos
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-epics"></a>

### Planejar a arquitetura
<a name="plan-the-architecture"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie diagramas de arquitetura personalizados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Arquiteto de nuvem, administrador de rede | 

### Criar os recursos do Transit Gateway
<a name="create-the-transit-gateway-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o gateway de trânsito. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Administrador de rede, arquiteto de nuvem | 
| Criar uma tabela de rotas do gateway de trânsito. | Siga as instruções em [Criar uma tabela de rotas do gateway de trânsito](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html#create-tgw-route-table). Observe o seguinte para esse padrão:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Arquiteto de nuvem, administrador de rede | 

### Crie as interfaces virtuais de trânsito
<a name="create-the-transit-virtual-interfaces"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie as interfaces virtuais de trânsito. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Arquiteto de nuvem, administrador de rede | 

### Crie os recursos do Direct Connect
<a name="create-the-direct-connect-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um gateway Direct Connect. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Arquiteto de nuvem, administrador de rede | 
| Conecte o gateway Direct Connect ao trânsito VIFs. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Arquiteto de nuvem, administrador de rede | 
| Crie as associações do gateway do Direct Connect com os prefixos permitidos. | Na conta do hub de rede, siga as instruções em [Para associar um gateway de trânsito](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html#associate-tgw-with-direct-connect-gateway). Observe o seguinte para esse padrão:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html)A criação dessa associação cria automaticamente um anexo do gateway de trânsito que tem um tipo de recurso do Direct Connect Gateway. Esse anexo não precisa estar associado a uma tabela de rotas do gateway de trânsito. | Arquiteto de nuvem, administrador de rede | 
| Criar um anexo do Connect do gateway de trânsito. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Arquiteto de nuvem, administrador de rede | 
| Crie pares do gateway de trânsito Connect. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) |  | 

### Anuncie rotas para os roteadores
<a name="advertise-routes-to-the-routers"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Anuncie as rotas. | Associe o novo anexo do gateway de trânsito Connect à tabela de rotas que você criou anteriormente para esse VRF. Por exemplo, associe o anexo Connect do gateway de trânsito de produção à tabela de rotas `Production-VRF`.Crie uma rota estática para o prefixo anunciado para os roteadores.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Administrador de rede, arquiteto de nuvem | 

## Recursos relacionados
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-resources"></a>

**Documentação da AWS**
+ Documentação do Direct Connect
  + [Trabalhar com gateways Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html)
  + [Associações de gateways de trânsito](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html)
  + [Interfaces virtuais do AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html)
+ Documentação do Transit Gateway
  + [Trabalhar com gateways de trânsito](https://docs.aws.amazon.com/vpc/latest/tgw/working-with-transit-gateways.html)
  + [Anexos do gateway de trânsito a um gateway do Direct Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-dcg-attachments.html)
  + [Anexos do Transit Gateway Connect e pares do Transit Gateway Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html)
  + [Criar um anexo do Connect do gateway de trânsito](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html#create-tgw-connect-attachment)

**Publicações do blog da AWS**
+ [Segmentação de redes híbridas com o AWS Transit Gateway Connect](https://aws.amazon.com/blogs/networking-and-content-delivery/segmenting-hybrid-networks-with-aws-transit-gateway-connect/)
+ [Usando o AWS Transit Gateway, conecte-se para ampliar VRFs e aumentar a publicidade do prefixo IP](https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-transit-gateway-connect-to-extend-vrfs-and-increase-ip-prefix-advertisement/)

## Anexos
<a name="attachments-db17e177-6c94-4d81-ab39-0923ecab2f1b"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/db17e177-6c94-4d81-ab39-0923ecab2f1b/attachments/attachment.zip)

# Receber notificações do Amazon SNS quando o estado de chave de uma chave do AWS KMS mudar
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes"></a>

*Shubham Harsora, Aromal Raj Jayarajan e Navdeep Pareek, Amazon Web Services*

## Resumo
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-summary"></a>

Os dados e metadados associados a uma chave do AWS Key Management Service (AWS KMS) são perdidos quando essa chave é excluída. A exclusão é irreversível e você não pode recuperar dados perdidos (incluindo dados criptografados). Você pode evitar a perda de dados ao configurar um sistema de notificação para alertá-lo sobre mudanças de status nos [estados principais](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) de suas chaves do AWS KMS.

Esse padrão mostra como monitorar alterações de status nas chaves do AWS KMS usando a Amazon e o EventBridge Amazon Simple Notification Service (Amazon SNS) para emitir notificações automáticas sempre que o estado da chave do AWS KMS mudar para ou. `Disabled` `PendingDeletion` Por exemplo, se um usuário tentar desabilitar ou excluir uma chave do AWS KMS, você receberá uma notificação por e-mail com detalhes sobre a tentativa de alteração de status. Você também pode usar esse padrão para programar a exclusão das chaves do AWS KMS.

## Pré-requisitos e limitações
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-prereqs"></a>

**Pré-requisitos **
+ Uma conta ativa do AWS com um usuário do Identity and Access Management (IAM).
+ Uma [chave do AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)

## Arquitetura
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-architecture"></a>

**Pilha de tecnologia**
+ Amazon EventBridge
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Notiﬁcation Service (Amazon SNS)

**Arquitetura de destino**

O diagrama a seguir mostra uma arquitetura para criar um processo automatizado de monitoramento e notificação para detectar quaisquer alterações no estado de uma chave do AWS KMS.

![\[Arquitetura para criar um processo automatizado de monitoramento e notificação\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/2534df87-a6fd-4360-9b5d-4a8b1f533de3/images/0cb6a6b0-405b-4d26-ad04-2067176aa086.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um usuário desativa ou programa a exclusão de uma chave do AWS KMS.

1. Uma EventBridge regra avalia o agendado `Disabled` ou o `PendingDeletion` evento.

1. A EventBridge regra invoca o tópico do Amazon SNS.

1. O Amazon SNS envia uma mensagem de notificação por e-mail aos usuários.

**nota**  
É possível personalizar a mensagem de e-mail para atender às necessidades da sua organização. Recomendamos incluir informações sobre as entidades nas quais a chave do AWS KMS é usada. Isso pode ajudar os usuários a entenderem o impacto da exclusão da chave do AWS KMS. Você também pode agendar uma notificação de lembrete por e-mail enviada um ou dois dias antes da exclusão da chave do AWS KMS.

**Automação e escala**

O AWS CloudFormation stack implanta todos os recursos e serviços necessários para que esse padrão funcione. Você pode implementar o padrão de forma independente em uma única conta ou usando a [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) para várias contas independentes ou [unidades organizacionais](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) no AWS Organizations.

## Ferramentas
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-tools"></a>
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 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. O CloudFormation modelo desse padrão descreve todos os recursos da AWS que você deseja e CloudFormation provisiona e configura esses recursos para você.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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. EventBridge fornece um fluxo de dados em tempo real de seus próprios aplicativos e serviços da AWS e encaminha esses dados para destinos como o AWS Lambda. EventBridge simplifica o processo de criação de arquiteturas orientadas por eventos.
+ O [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para proteger seus dados.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

**Código **

O código desse padrão está disponível no repositório de [desativação e exclusão programada de chaves do AWS KMS do GitHub Monitor AWS](https://github.com/aws-samples/aws-kms-deletion-notification) KMS.

## Épicos
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-epics"></a>

### Implante o CloudFormation modelo
<a name="deploy-the-cloudformation-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Clone o repositório de [desativação e exclusão programada das chaves do GitHub Monitor AWS KMS](https://github.com/aws-samples/aws-kms-deletion-notification) em sua máquina local executando o seguinte comando:`git clone https://github.com/aws-samples/aws-kms-deletion-notification` | Administrador da AWS, arquiteto de nuvem | 
| Atualizar os parâmetros do modelo. | Em um editor de código, abra o `Alerting-KMS-Events.yaml` CloudFormation modelo que você clonou do repositório e atualize os seguintes parâmetros:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrador da AWS, arquiteto de nuvem | 
| Implante o CloudFormation modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrador da AWS, arquiteto de nuvem | 

### Confirmar a assinatura
<a name="confirm-the-subscription"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Confirmar a assinatura de e-mail. | Depois que o CloudFormation modelo for implantado com sucesso, o Amazon SNS envia uma mensagem de confirmação da assinatura para o endereço de e-mail que você forneceu no CloudFormation modelo.Você precisa confirmar sua assinatura para começar a receber as notificações. Para obter mais informações, consulte [Confirmar a assinatura](https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.confirm.html) no Guia do desenvolvedor do Amazon SNS. | Administrador da AWS, arquiteto de nuvem | 

### Testar a notificação de assinatura.
<a name="test-the-subscription-notification"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Desabilitar chaves do AWS KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrador da AWS | 
| Validar a assinatura. | Confirme se você recebeu o e-mail de notificação do Amazon SNS. | Administrador da AWS | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua a CloudFormation pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrador da AWS | 

## Recursos relacionados
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-resources"></a>
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/) (documentação da AWS)
+ [Criação de uma pilha no CloudFormation console da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) ( CloudFormation documentação da AWS)
+ [Criar arquiteturas orientadas por eventos na AWS](https://catalog.us-east-1.prod.workshops.aws/workshops/63320e83-6abc-493d-83d8-f822584fb3cb/en-US) (documentação do AWS Workshop Studio)
+ [Práticas recomendadas do AWS Key Management Service](https://d1.awsstatic.com/whitepapers/aws-kms-best-practices.pdf) (whitepaper da AWS)
+ [Práticas recomendadas de segurança para o AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) (Guia do desenvolvedor do AWS KMS)

## Mais informações
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-additional"></a>

O Amazon SNS fornece criptografia em trânsito por padrão. Para se alinhar às práticas recomendadas de segurança, você também pode habilitar a criptografia do lado do servidor para o Amazon SNS usando uma chave gerenciada pelo cliente do AWS KMS.

# Preserve o espaço IP roteável em projetos de VPC com várias contas para sub-redes sem workload
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets"></a>

*Adam Spicer, Amazon Web Services*

## Resumo
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-summary"></a>

A Amazon Web Services (AWS) publicou as melhores práticas que recomendam o uso de sub-redes dedicadas em uma nuvem privada virtual (VPC) para [anexos do gateway de trânsito e endpoints](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html) do Gateway [Load Balancer (](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/getting-started.html)para oferecer suporte ao [AWS](https://docs.aws.amazon.com/network-firewall/latest/developerguide/firewall-high-level-steps.html) Network Firewall ou dispositivos de terceiros). Essas sub-redes são usadas para conter interfaces de rede elásticas para esses serviços. Se você usa o AWS Transit Gateway e um balanceador de carga do gateway, duas sub-redes são criadas em cada zona de disponibilidade da VPC. Devido à forma como VPCs são projetadas, essas sub-redes extras [não podem ser menores que uma máscara /28 e podem consumir um](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-sizing) precioso espaço IP roteável que, de outra forma, poderia ser usado para cargas de trabalho roteáveis. Esse padrão demonstra como você pode usar um intervalo de Encaminhamento Entre Domínios Sem Classificação (CIDR) secundário, não roteável para essas sub-redes dedicadas para ajudar a preservar o espaço IP roteável.

## Pré-requisitos e limitações
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-prereqs"></a>

**Pré-requisitos**
+ [Estratégia de várias VPCs para espaço](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/welcome.html) IP roteável
+ [Um intervalo CIDR não roteável para os serviços que você está usando ([anexos de gateway de trânsito](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html) e [balanceador de carga do gateway](https://aws.amazon.com/blogs/apn/centralized-traffic-inspection-with-gateway-load-balancer-on-aws/) ou endpoints do Network Firewall](https://aws.amazon.com/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/))

## Arquitetura
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-architecture"></a>

**Arquitetura de destino**

Esse padrão inclui duas arquiteturas de referência: uma arquitetura tem sub-redes para anexos do Transit Gateway (TGW) e um endpoint do Gateway Load Balancer (GWLBe), e a segunda arquitetura tem sub-redes somente para anexos TGW.

**Arquitetura 1 ‒ VPC conectada ao TGW com roteamento de entrada para um dispositivo**

O diagrama a seguir representa uma arquitetura de referência para uma VPC que abrange duas zonas de disponibilidade. [Na entrada, a VPC usa [um padrão de roteamento de entrada para direcionar o](https://aws.amazon.com/blogs/aws/new-vpc-ingress-routing-simplifying-integration-of-third-party-appliances/) tráfego destinado à sub-rede pública para um dispositivo para inspeção do firewall. bump-in-the-wire ](https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-aws-gateway-load-balancer-supported-architecture-patterns/) Um anexo TGW suporta a saída das sub-redes privadas para uma VPC separada.

Esse padrão usa um intervalo CIDR não roteável para a sub-rede do anexo TGW e a sub-rede. GWLBe Na tabela de rotas do TGW, esse CIDR não roteável é configurado com uma rota de buraco negro (estática) usando um conjunto de rotas mais específicas. Se as rotas fossem propagadas para a tabela de rotas do TGW, essas rotas de buraco negro mais específicas se aplicariam.

Neste exemplo, o CIDR roteável /23 é dividido e totalmente alocado às sub-redes roteáveis.

![\[VPC anexada ao TGW com roteamento de entrada para um dispositivo.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/0171d91d-ab1e-41ca-a425-1e6e610080e1/images/adad1c83-cdc2-4c5e-aa35-f47fc31af384.png)


**Arquitetura 2 – VPC conectada ao TGW**

O diagrama a seguir representa outra arquitetura de referência para uma VPC que abrange duas zonas de disponibilidade. Um anexo TGW oferece suporte ao tráfego de saída (egress) das sub-redes privadas para uma VPC separada. Ele usa um intervalo CIDR não roteável somente para a sub-rede de anexos do TGW. Na tabela de rotas TGW, esse CIDR não roteável é configurado com uma rota blackhole usando um conjunto de rotas mais específicas. Se as rotas fossem propagadas para a tabela de rotas do TGW, essas rotas de buraco negro mais específicas se aplicariam.

Neste exemplo, o CIDR roteável /23 é dividido e totalmente alocado às sub-redes roteáveis. 

![\[A VPC abrange duas zonas de disponibilidade com anexo ao TGW para saída de sub-redes privadas para uma VPC separada.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/0171d91d-ab1e-41ca-a425-1e6e610080e1/images/31a2a241-5be6-425e-93e9-5ff7ffeca3a9.png)


## Ferramentas
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-tools"></a>

**Serviços e recursos da AWS**
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS. Nesse padrão, a VPC secundária CIDRs é usada para preservar o espaço IP roteável na carga de trabalho. CIDRs
+ O [roteamento de entrada do gateway da Internet](https://aws.amazon.com/blogs/aws/new-vpc-ingress-routing-simplifying-integration-of-third-party-appliances/) (associações de borda) pode ser usado junto com os endpoints do balanceador de carga do gateway para sub-redes dedicadas não roteáveis.
+ [O AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) é um hub central que conecta VPCs redes locais. Nesse padrão, VPCs são conectados centralmente a um gateway de trânsito, e os anexos do gateway de trânsito estão em uma sub-rede dedicada não roteável.
+ Os [balanceadores de carga do gateway](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/introduction.html) ajudam você a implantar, escalar e gerenciar dispositivos virtuais, como firewalls, sistemas de detecção e prevenção de intrusões e sistemas de inspeção profunda de pacotes. O gateway atua como um único ponto de entrada e saída para todo o tráfego. Nesse padrão, os endpoints de um balanceador de carga do gateway podem ser usados em uma sub-rede dedicada não roteável.
+ [O AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) é um serviço gerenciado e monitorado de firewall de rede e detecção e prevenção de intrusões VPCs na nuvem da AWS. Nesse padrão, os endpoints de um firewall podem ser usados em uma sub-rede não roteável dedicada.

**Repositório de código**

Um runbook e CloudFormation modelos da AWS para esse padrão estão disponíveis no repositório de padrões [CIDR secundários GitHub não roteáveis](https://github.com/aws-samples/non-routable-secondary-vpc-cidr-patterns/). Você pode usar os arquivos de amostra para configurar um laboratório de trabalho em seu ambiente.

## Práticas recomendadas
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-best-practices"></a>

**AWS Transit Gateway**
+ Use uma sub-rede separada para cada anexo da VPC do gateway.
+ Aloque uma sub-rede /28 do intervalo CIDR secundário não roteável para as sub-redes do anexo do gateway de trânsito.
+ Em cada tabela de rotas do Transit Gateway, adicione uma rota estática e mais específica para o intervalo CIDR não roteável como um buraco negro.

**Balanceador de carga do gateway e roteamento de entrada**
+ Use o roteamento de entrada para direcionar o tráfego da Internet para os endpoints do balanceador de carga do gateway.
+ Use uma sub-rede separada para cada endpoint do balanceador de carga do gateway.
+ Aloque uma sub-rede /28 do intervalo CIDR secundário não roteável para as sub-redes de endpoint do balanceador de carga do gateway.

## Épicos
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-epics"></a>

### Criar VPCs
<a name="create-vpcs"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Determine o intervalo CIDR não roteável. | Determine um intervalo CIDR não roteável que será usado para a sub-rede de anexo do gateway de trânsito e (opcionalmente) para qualquer sub-rede de endpoint do balanceador de carga do gateway ou do Network Firewall. Esse intervalo de CIDR será usado como CIDR secundário para a VPC. Ele **não deve ser roteável** a partir do intervalo CIDR primário da VPC ou de uma rede maior. | Arquiteto de nuvem | 
| Determine os intervalos de CIDR roteáveis para. VPCs | Determine um conjunto de intervalos CIDR roteáveis que serão usados para o seu. VPCs Esse intervalo de CIDR será usado como o CIDR primário para o seu. VPCs | Arquiteto de nuvem | 
| Criar VPCs. | Crie o seu VPCs e conecte-o ao gateway de trânsito. Cada VPC deve ter um intervalo CIDR primário que seja roteável e um intervalo CIDR secundário que não seja roteável, com base nos intervalos que você determinou nas duas etapas anteriores. | Arquiteto de nuvem | 

### Configurar rotas de blackhole do Transit Gateway
<a name="configure-transit-gateway-blackhole-routes"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie buracos negros não roteáveis CIDRs mais específicos. | Cada tabela de roteamento do gateway de trânsito precisa ter um conjunto de rotas blackhole criadas para as não roteáveis. CIDRs Eles são configurados para garantir que qualquer tráfego do CIDR VPC secundário permaneça não roteável e não vaze para a rede maior. Essas rotas devem ser mais específicas do que o CIDR não roteável definido como CIDR secundário na VPC. Por exemplo, se o CIDR secundário não roteável for 100.64.0.0/26, as rotas do blackhole na tabela de rotas do Transit Gateway deverão ser 100.64.0.0/27 e 100.64.0.32/27. | Arquiteto de nuvem | 

## Recursos relacionados
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-resources"></a>
+ [Melhores práticas para implantar o balanceador de carga do gateway](https://aws.amazon.com/blogs/networking-and-content-delivery/best-practices-for-deploying-gateway-load-balancer/)
+ [Arquiteturas de inspeção distribuídas com Gateway Load Balancer](https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/distributed-inspection-architectures-gwlb-ra.pdf?did=wp_card&trk=wp_card)
+ [Dia de imersão em redes ‒ ](https://catalog.workshops.aws/networking/en-US/gwlb/lab2-internettovpc)‒ [Lab de Internet para o Firewall da VPC](https://catalog.workshops.aws/networking/en-US/gwlb/lab2-internettovpc)
+ [Melhores práticas de design do gateway de trânsito](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html)

## Mais informações
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-additional"></a>

O intervalo CIDR secundário não roteável também pode ser útil ao trabalhar com implantações de contêineres em maior escala que exigem um grande conjunto de endereços IP. Você pode usar esse padrão com um gateway NAT privado para usar uma sub-rede não roteável para hospedar suas implantações de contêineres. Para obter mais informações, consulte a postagem de blog [Como resolver o esgotamento de IP privado com a solução de NAT privado](https://aws.amazon.com/blogs/networking-and-content-delivery/how-to-solve-private-ip-exhaustion-with-private-nat-solution/).

# Provisione um produto Terraform AWS Service Catalog usando um repositório de código
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository"></a>

*Dr. Rahul Sharad Gaikwad e Tamilselvan P, Amazon Web Services*

## Resumo
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-summary"></a>

AWS Service Catalog [oferece suporte ao provisionamento de autoatendimento com governança para suas HashiCorp configurações do Terraform.](https://developer.hashicorp.com/terraform/tutorials/aws-get-started) Se você usa o Terraform, pode usar o Service Catalog como a única ferramenta para organizar, controlar e distribuir suas configurações do Terraform em grande escala. AWS Você pode acessar os principais recursos do Service Catalog, incluindo catalogação de modelos padronizados e pré-aprovados de infraestrutura como código (IaC), controle de acesso, provisionamento de recursos em nuvem com acesso de privilégios mínimos, controle de versão, compartilhamento com milhares de pessoas e marcação. Contas da AWS Usuários finais, como engenheiros, administradores de banco de dados e cientistas de dados, veem uma lista de produtos e versões aos quais têm acesso e podem implantá-los por meio de uma única ação.

Esse padrão ajuda você a implantar AWS recursos usando o código do Terraform. O código do Terraform no GitHub repositório é acessado por meio do Service Catalog. Usando essa abordagem, você integra os produtos aos seus fluxos de trabalho existentes do Terraform. Os administradores podem criar portfólios do Service Catalog e adicionar AWS Launch Wizard produtos a eles usando o Terraform.

A seguir estão os benefícios dessa solução:
+ Devido ao recurso de reversão no Service Catalog, se ocorrer algum problema durante a implantação, você poderá reverter o produto para uma versão anterior.
+ Você pode identificar facilmente as diferenças entre as versões do produto. Isso ajuda você a resolver problemas durante a implantação.
+ Você pode configurar uma conexão de repositório no Service Catalog, como para GitHub ou GitLab. Você pode fazer alterações no produto diretamente por meio do repositório.

Para obter informações sobre os benefícios gerais do AWS Service Catalog, consulte [O que é Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html).

## Pré-requisitos e limitações
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Um GitHub, BitBucket, ou outro repositório que contenha arquivos de configuração do Terraform no formato ZIP.
+ AWS Serverless Application Model [Interface de linha de comando (AWS SAM CLI), instalada.](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Vá, [instalado](https://go.dev/doc/install).
+ [Python versão 3.9, instalado.](https://www.python.org/downloads/release/python-3913/) AWS SAM A CLI requer essa versão do Python.
+ Permissões para escrever e executar AWS Lambda funções e permissões para acessar e gerenciar produtos e portfólios do Service Catalog.

## Arquitetura
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-architecture"></a>

![\[Diagrama de arquitetura do provisionamento de um produto Terraform no Service Catalog a partir de um repositório de código\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/7d0d76e8-9485-4b3f-915f-481b6a7cdcd9/images/e83fa44a-4ca6-4438-a0d1-99f09a3541bb.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Quando uma configuração do Terraform está pronta, um desenvolvedor cria um arquivo.zip que contém todo o código do Terraform. O desenvolvedor carrega o arquivo.zip no repositório de código conectado ao Service Catalog.

1. Um administrador associa o produto Terraform a um portfólio no Service Catalog. O administrador também cria uma restrição de lançamento que permite que os usuários finais provisionem o produto.

1. No Service Catalog, os usuários finais iniciam AWS recursos usando a configuração do Terraform. Eles podem escolher a versão do produto a ser implantada.

## Ferramentas
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-tools"></a>

**Serviços da AWS**
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)ajuda você a gerenciar centralmente catálogos de serviços de TI aprovados. AWS Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.

**Outros serviços**
+ O [Go](https://go.dev/doc/install) é uma linguagem de programação de código aberto compatível com o Google.
+ [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.

**Repositório de código**

Se você precisar de exemplos de configurações do Terraform que você possa implantar por meio do Service Catalog, você pode usar as configurações no repositório GitHub [Amazon Macie Organization](https://github.com/aws-samples/aws-macie-customization-terraform-samples) Setup Using Terraform. O uso das amostras de código neste repositório não é obrigatório.

## Práticas recomendadas
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-best-practices"></a>
+ Em vez de fornecer os valores das variáveis no arquivo de configuração do Terraform (`terraform.tfvars`), configure os valores das variáveis ao iniciar o produto por meio do Service Catalog.
+ Conceda acesso ao portfólio somente para usuários ou administradores específicos.
+ Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte [Conceder privilégios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [melhores práticas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) na documentação AWS Identity and Access Management (IAM).

## Épicos
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-epics"></a>

### Configure sua estação de trabalho local.
<a name="set-up-your-local-workstation"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| (Opcional) Instale o Docker. | Se você quiser executar as AWS Lambda funções em seu ambiente de desenvolvimento, instale o Docker. Para obter mais informações, consulte [Install Docker Engine](https://docs.docker.com/engine/install/) (Instalar mecanismo do Docker) na documentação do Docker. | DevOps engenheiro | 
| Instale o AWS Service Catalog motor para o Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps engenheiro, administrador da AWS | 

### Conecte o GitHub repositório
<a name="connect-the-github-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma conexão com o GitHub repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 

### Crie um produto Terraform no Service Catalog
<a name="create-a-terraform-product-in-service-catalog"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o produto Service Catalog. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Crie um portfólio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Adicione o produto Terraform ao portfólio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Crie a política de acesso. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Crie uma política de confiança personalizada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Adicione uma restrição de lançamento ao produto Service Catalog. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Conceda acesso ao produto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 
| Lance o produto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps engenheiro | 

### Verificar a implantação
<a name="verify-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide a implantação. | Há duas máquinas de AWS Step Functions estado para o fluxo de trabalho de provisionamento do Service Catalog:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html)Você verifica os registros da máquina de `ManageProvisionedProductStateMachine` estado para confirmar se o produto foi provisionado.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps engenheiro | 

### Limpeza da infraestrutura
<a name="clean-up-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua produtos provisionados. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps engenheiro | 
| Remova o AWS Service Catalog motor do Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrador da AWS | 

## Recursos relacionados
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-resources"></a>

**AWS documentação**
+ [Começando com um produto Terraform](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-Terraform.html)

**Documentação do Terraform**
+ [Instalação do Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Configuração de backend do Terraform](https://developer.hashicorp.com/terraform/language/backend)
+ [Documentação do Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Mais informações
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-additional"></a>

**Política de acesso**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/servicecatalog:provisioning": "true"
                }
            }
        },
        {
            "Action": [
                "s3:CreateBucket*",
                "s3:DeleteBucket*",
                "s3:Get*",
                "s3:List*",
                "s3:PutBucketTagging"
            ],
            "Resource": "arn:aws:s3:::*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "resource-groups:CreateGroup",
                "resource-groups:ListGroupResources",
                "resource-groups:DeleteGroup",
                "resource-groups:Tag"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "tag:GetResources",
                "tag:GetTagKeys",
                "tag:GetTagValues",
                "tag:TagResources",
                "tag:UntagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

**Política de confiança**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GivePermissionsToServiceCatalog",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account_id:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringLike": {
                    "aws:PrincipalArn": [
                        "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*",
                        "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*",
                        "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*"
                    ]
                }
            }
        }
    ]
}
```

# Registre vários Contas da AWS com um único endereço de e-mail usando o Amazon SES
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses"></a>

*Joe Wozniak e Shubhangi Vishwakarma, Amazon Web Services*

## Resumo
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-summary"></a>

Esse padrão descreve como você pode dissociar endereços de e-mail reais do endereço de e-mail associado a um Conta da AWS. Contas da AWS exija que um endereço de e-mail exclusivo seja fornecido no momento da criação da conta. Em algumas organizações, a equipe que gerencia Contas da AWS deve assumir a responsabilidade de gerenciar vários endereços de e-mail exclusivos com sua equipe de mensagens. Isso pode ser difícil para grandes organizações que gerenciam muitas Contas da AWS. Além disso, se seu sistema de e-mail não permitir *endereçamento adicional* ou *subendereçamento*, conforme definido em [Sieve Email Filtering: Subaddress Extension (RFC 5233)](https://datatracker.ietf.org/doc/html/rfc5233) (adicionando um sinal de adição (\$1) e um identificador ao final da parte local do endereço de e-mail, como `admin+123456789123@example.com`) este padrão pode ajudar a superar essa limitação.

Esse padrão fornece uma solução exclusiva de venda automática de endereços de e-mail que permite que Conta da AWS os proprietários associem um endereço de e-mail a vários Contas da AWS. Os endereços de e-mail reais dos Conta da AWS proprietários são então associados a esses endereços de e-mail gerados em uma tabela. A solução lida com todos os e-mails recebidos para as contas de e-mail exclusivas, pesquisa o proprietário de cada conta e, em seguida, encaminha todas as mensagens recebidas para o proprietário.  

## Pré-requisitos e limitações
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-prereqs"></a>

**Pré-requisitos **
+ Acesso administrativo a um Conta da AWS.
+ Acesso a um ambiente de desenvolvimento. 
+ (Opcional) A familiaridade com AWS Cloud Development Kit (AWS CDK) os fluxos de trabalho e com a linguagem de programação Python ajudará você a solucionar quaisquer problemas ou fazer modificações.

**Limitações**
+ O tamanho geral do endereço de e-mail vendido é de 64 caracteres. Para obter detalhes, consulte [CreateAccount](https://docs.aws.amazon.com/organizations/latest/APIReference/API_CreateAccount.html)a *referência AWS Organizations da API*.

**Versões do produto**
+ Node.js versão 22.x ou posterior
+ Python 3.13 ou posterior
+ **Pacotes Python pip e **virtualenv****
+ AWS CDK CLI versão 2.10.19.2 ou posterior
+ Docker 20.10.x ou superior

## Arquitetura
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-architecture"></a>

**Pilha de tecnologias de destino**
+ CloudFormation pilha
+ AWS Lambda funções
+ Regras e conjunto de regras do Amazon Simple Email Service (Amazon SES)
+ AWS Identity and Access Management Funções e políticas (IAM)
+ O bucket do Amazon Simple Storage Service (Amazon S3) e política de bucket.
+ AWS Key Management Service (AWS KMS) chave e política chave
+ Tópico e política de tópico do Amazon Simple Notification Service (Amazon SNS)
+ Tabela do Amazon DynamoDB 

**Arquitetura de destino**

![\[Arquitetura de destino para registro de várias contas da AWS com um único endereço de e-mail\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/1be85b92-69e5-43b2-aeed-27b9509e145e/images/c7ae9d7a-d4e0-412e-97cb-0f3073e012e7.png)


Esse diagrama mostra dois fluxos:
+ **Fluxo de venda automática de endereços de e-mail:** no diagrama, o fluxo de venda automática de endereços de e-mail (seção inferior) geralmente inicia com uma solução de venda automática de contas ou automação externa, ou é invocado manualmente. Na solicitação, uma função do Lambda é chamada com uma carga que contém os metadados necessários. A função usa essas informações para gerar um nome de conta e endereço de e-mail exclusivos, armazenar em um banco de dados do DynamoDB e retornar os valores ao chamador. Esses valores podem então ser usados para criar um novo Conta da AWS (normalmente usando AWS Organizations).
+ **Fluxo de encaminhamento de e-mail:** esse fluxo é ilustrado na seção superior do diagrama anterior. Quando um Conta da AWS é criado usando o e-mail da conta gerado a partir do fluxo de venda automática de endereços de e-mail, AWS envia vários e-mails, como confirmação do registro da conta e notificações periódicas, para esse endereço de e-mail. Seguindo as etapas desse padrão, você configura seu Conta da AWS com o Amazon SES para receber e-mails de todo o domínio. Essa solução configura regras de encaminhamento que permitem ao Lambda processar todos os e-mails recebidos, verificar se o endereço `TO` está na tabela do DynamoDB e encaminhar a mensagem para o endereço de e-mail do proprietário da conta. O uso desse processo dá aos proprietários da conta a capacidade de associar várias contas a um endereço de e-mail.

**Automação e escala**

Esse padrão usa o AWS CDK para automatizar totalmente a implantação. A solução usa serviços AWS gerenciados que serão (ou podem ser configurados para) escalar automaticamente para atender às suas necessidades. As funções do Lambda podem exigir configuração adicional para atender às suas necessidades de escalabilidade. Para obter mais informações, consulte [Como entender a escalabilidade da função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html) na documentação do Lambda.

## Ferramentas
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-tools"></a>

**Serviços da AWS**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida em todas Contas da AWS as regiões.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir com os serviços da AWS por meio de comandos em seu shell de linha de comando.
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html): ajuda você a enviar e receber e-mails usando seus próprios endereços de e-mail e domínios.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Ferramentas necessárias para implantação**
+ Ambiente de desenvolvimento com acesso AWS CLI e IAM ao seu Conta da AWS. Para obter detalhes, consulte os links na seção [Recursos relacionados](#register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources).  
+ Em seu sistema de desenvolvimento, instale o seguinte:
  + Ferramenta de linha de comando do Git, disponível no [site de downloads do Git](https://git-scm.com/downloads).
  + O AWS CLI para configurar as credenciais de acesso para o. AWS CDK Para obter mais informações, consulte a [documentação do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).
  + Python versão 3.13 ou posterior, disponível no [site de downloads do Python](https://www.python.org/downloads/).
  + UV para gerenciamento de pacotes Python. Para obter instruções de instalação, consulte o [guia de instalação do UV](https://docs.astral.sh/uv/getting-started/installation/).
  + Node.js versão 22.x ou posterior. Para obter instruções de instalação, consulte a [documentação do Node.js](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs).
  + AWS CDK CLI versão 2.1019.2 ou posterior. Para obter instruções de instalação, consulte a [documentação do AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting-started.html#getting-started-install).
  + Docker versão 20.10.x ou posterior. Para obter instruções de instalação, consulte a [documentação do Docker](https://docs.docker.com/engine/install/).

**Código **

O código desse padrão está disponível no repositório de [e-mail de GitHub Conta da AWS fábrica](https://github.com/aws-samples/aws-account-factory-email).

## Épicos
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-epics"></a>

### Aloque um ambiente de implantação de destino
<a name="allocate-a-target-deployment-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Identifique ou crie um Conta da AWS. | Identifique um existente ou novo Conta da AWS ao qual você tenha acesso administrativo total para implantar a solução de e-mail. | Administrador da AWS, administrador de nuvem | 
| Configurar um ambiente de implantação. | Configure um ambiente de implantação fácil de usar e configure dependências seguindo estas etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | AWS DevOps, desenvolvedor de aplicativos | 

### Configurar um domínio verificado
<a name="set-up-a-verified-domain"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Identifique e aloque um domínio. | A funcionalidade de encaminhamento de e-mail requer um domínio dedicado. Identifique e aloque um domínio ou subdomínio que você possa verificar com o Amazon SES. Esse domínio deve estar disponível para receber e-mails recebidos no local em Conta da AWS que a solução de encaminhamento de e-mail está implantada.Requisitos de domínio:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Administrador de nuvem, administrador de rede, administrador de DNS | 
| Verificar o domínio. | Verifique se o domínio identificado pode ser usado para aceitar e-mails recebidos.Complete as instruções em [Como verificar seu domínio para recebimento de e-mails do Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-verification.html) na documentação do Amazon SES. Isso exigirá coordenação com a pessoa ou equipe responsável pelos registros DNS do domínio. | Desenvolvedor de aplicativos, AWS DevOps | 
| Configurar registros MX. | Configure seu domínio com registros MX que apontam para os endpoints do Amazon SES em sua região Conta da AWS . Para obter mais informações, consulte [Publicação de um registro MX para recebimento de e-mails do Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-mx-record.html) na documentação do Amazon SES. | Administrador de nuvem, administrador de rede, administrador de DNS | 

### Implemente a solução de venda e encaminhamento de e-mails
<a name="deploy-the-email-vending-and-forwarding-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Modifique os valores padrão em `cdk.json`. | Edite alguns dos valores padrão no arquivo `cdk.json` (na raiz do repositório) para que a solução funcione corretamente após a implantação.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Implante a solução de venda e encaminhamento de e-mails. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Verificar se a solução foi implantada. | Verificar se a solução foi implantada com sucesso antes de começar o teste:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Desenvolvedor de aplicativos, AWS DevOps | 

### Verificar se a venda e o encaminhamento de e-mails funcionam conforme o esperado
<a name="verify-that-email-vending-and-forwarding-operate-as-expected"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verificar se a API está trabalhando. | Nesta etapa, você enviará dados de teste para a API da solução e confirma se a solução produz a saída esperada e se as operações de backend foram executadas conforme o esperado.Execute manualmente a função do Lambda **Vend Email** usando a entrada de teste. (Para ver um exemplo, consulte o arquivo [sample\$1vend\$1request.json](https://github.com/aws-samples/aws-account-factory-email/blob/main/src/events/sample_vend_request.json).) Use um endereço de e-mail válido para `OwnerAddress`. A API deve retornar o nome da conta e o e-mail da conta com os valores esperados. | Desenvolvedor de aplicativos, AWS DevOps | 
| Verificar se o e-mail está sendo encaminhado. | Nesta etapa, você enviará um e-mail de teste pelo sistema e verifica se o e-mail foi encaminhado para o destinatário esperado.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Desenvolvedor de aplicativos, AWS DevOps | 

## Solução de problemas
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O sistema não encaminha e-mails conforme o esperado. | Verificar se sua configuração está correta:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html)Depois de verificar a configuração do domínio, siga estas etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| Ao tentar implantar a AWS CDK pilha, você recebe um erro semelhante a:“Erro no formato do modelo: tipos de recursos não reconhecidos”  | Na maioria das instâncias, essa mensagem de erro significa que a região que você está segmentando não tem todos os serviços da AWS disponíveis. Se você estiver usando uma EC2 instância da Amazon para implantar a solução, você pode ter como alvo uma região diferente da região em que a instância está sendo executada.Por padrão, o é AWS CDK implantado na região e na conta que você configurou no AWS CLI.Soluções possíveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| Ao implementar a solução, você recebe a mensagem de erro:“Falha na implantação: Erro: AwsMailFwdStack: parâmetro SSM bootstrap/hnb659fds/version /cdk- não encontrado. O ambiente foi inicializado? Por favor, execute 'cdk bootstrap'” | Se você nunca implantou nenhum AWS CDK recurso na região que está almejando, primeiro precisará executar o `cdk bootstrap` comando conforme o erro indica. Conta da AWS Se você continua recebendo esse erro depois de executar o comando inicialização, talvez esteja tentando implementar a solução em uma região diferente da região em que seu ambiente de desenvolvimento está sendo executado.Para resolver esse problema, defina a variável de `AWS_DEFAULT_REGION` ambiente ou defina uma região com o AWS CLI antes de implantar a solução. Como alternativa, você pode modificar o arquivo `app.py` na raiz do repositório para incluir um ID de conta e uma região de codificação rígida seguindo as instruções na [documentação do AWS CDK para ambientes](https://docs.aws.amazon.com/cdk/v2/guide/environments.html). | 

## Recursos relacionados
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources"></a>
+ Para obter ajuda na instalação do AWS CLI, consulte [Instalando ou atualizando para a versão mais recente do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ Para obter ajuda na configuração do AWS CLI com credenciais de acesso do IAM, consulte [Como configurar as configurações do](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). AWS CLI
+ Para obter ajuda com o AWS CDK, consulte [Introdução ao AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_install). 

## Mais informações
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-additional"></a>

**Custos**

Quando você implanta essa solução, o Conta da AWS detentor pode incorrer em custos associados ao uso dos seguintes serviços.  É importante entender como esses serviços são cobrados para estar ciente de quaisquer possíveis cobranças. Para obter mais informações sobre definição de preço, veja as seguintes páginas:
+ [Definição de preços do Amazon SES](https://aws.amazon.com/ses/pricing/)
+ [Definição de preços do Amazon S3](https://aws.amazon.com/s3/pricing/)
+ [AWS KMS preços](https://aws.amazon.com/kms/pricing/)
+ [AWS Lambda preços](https://aws.amazon.com/lambda/pricing/)
+ [Preços do Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/)

# Configure a resolução de DNS para redes híbridas em um ambiente de conta única da AWS
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Resumo
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-summary"></a>

Esse padrão descreve como configurar uma arquitetura de Sistema de Nomes de Domínio (DNS) totalmente híbrida que permite a resolução de end-to-end DNS de recursos locais, recursos da AWS e consultas de DNS na Internet, sem sobrecarga administrativa. O padrão descreve como configurar as regras de encaminhamento do Amazon Route 53 Resolver que determinam para onde uma consulta ao DNS originada da AWS deve ser enviada, com base no nome do domínio. As consultas ao DNS para recursos on-premises são encaminhadas para solucionadores de DNS on-premises. As consultas ao DNS para recursos da AWS e consultas ao DNS da Internet são resolvidas pelo Route 53 Resolver.

Esse padrão cobre a resolução de DNS híbrido em um ambiente de conta única da AWS. Para obter informações sobre como configurar consultas ao DNS de saída em um ambiente de várias contas da AWS, consulte o padrão [Configurar a resolução de DNS para redes híbridas em um ambiente da AWS com várias contas](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.html).

## Pré-requisitos e limitações
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-prereqs"></a>

**Pré-requisitos **
+ Uma conta da AWS
+ Uma nuvem privada virtual (VPC) na conta da AWS.
+ Uma conexão de rede entre o ambiente on-premises e a sua VPC, por meio da AWS Virtual Private Network (AWS VPN) ou do AWS Direct Connect
+ Endereços IP dos seus solucionadores de DNS on-premises (acessíveis a partir da sua VPC)
+ Nome de domínio/subdomínio a ser encaminhado aos solucionadores on-premises (por exemplo, onprem.mydc.com)
+ Nome de domínio/subdomínio para a zona hospedada privada da AWS (por exemplo, myvpc.cloud.com)

## Arquitetura
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-architecture"></a>

**Pilha de tecnologias de destino**
+ Zona hospedada privada do Amazon Route 53
+ Amazon Route 53 Resolver
+ Amazon VPC
+ AWS VPN ou Direct Connect

**Arquitetura de destino**

![\[Fluxo de trabalho da resolução de DNS híbrida em um ambiente da AWS de conta única usando o Route 53 Resolver.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/120dedc8-cc6c-4aa7-be11-c70a7ee80642/images/7b75f534-1adc-4a39-86d6-5c4596ff7b6a.png)


 

## Ferramentas
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-tools"></a>
+ O [Amazon Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) facilita a nuvem híbrida para clientes corporativos ao permitir uma resolução perfeita de consultas ao DNS em toda a sua nuvem híbrida. Você pode criar endpoints de DNS e regras de encaminhamento condicional para resolver namespaces DNS entre seu data center local e seu. VPCs
+ A [zona hospedada privada do Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) é um contêiner que contém informações sobre como você deseja que o Route 53 responda às consultas de DNS para um domínio e seus subdomínios em um ou mais VPCs que você cria com o serviço Amazon VPC.

## Épicos
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-epics"></a>

### Configurar uma zona hospedada privada
<a name="configure-a-private-hosted-zone"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma zona hospedada privada do Route 53 para um nome de domínio reservado da AWS, como myvpc.cloud.com. | Essa zona contém os registros DNS dos recursos da AWS que devem ser resolvidos no ambiente on-premises. Para obter instruções, consulte [Como criar uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) na documentação do Route 53. | Admin de rede, admin do sistema | 
| Associe a zona hospedada privada à sua VPC. | Para permitir que os recursos em sua VPC resolvam registros DNS nessa zona hospedada privada, você deve associar sua VPC à zona hospedada. Para obter instruções, consulte [Como criar uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) na documentação do Route 53. | Admin de rede, admin do sistema | 

### Configurar endpoints do Route 53 Resolver
<a name="set-up-route-53-resolver-endpoints"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um endpoint de entrada. | O Route 53 Resolver usa o endpoint de entrada para receber consultas ao DNS de solucionadores DNS on-premises. Para obter instruções, consulte [Encaminhando consultas DNS de entrada para você na documentação do VPCs Route](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) 53. Anote o endereço IP do endpoint de entrada. | Admin de rede, admin do sistema | 
| Crie um endpoint de saída | O Route 53 Resolver usa o endpoint de saída para enviar consultas ao DNS para solucionadores DNS on-premises. Para obter instruções, consulte [Como encaminhar consultas ao DNS de saída para sua rede](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries.html) na documentação do Route 53. Anote o ID do endpoint de saída. | Admin de rede, admin do sistema | 

### Configure uma regra de encaminhamento e associe à sua VPC
<a name="set-up-a-forwarding-rule-and-associate-it-with-your-vpc"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma regra para o domínio no on-premises | Essa regra instruirá o Route 53 Resolver a encaminhar qualquer consulta ao DNS para domínios on-premises (como onprem.mydc.com) para solucionadores de DNS on-premises. Para criar essa regra, você precisará dos endereços IP dos solucionadores de DNS on-premises e do ID do endpoint de saída do Route 53 Resolver. Para obter instruções, consulte [Como gerenciar regras de encaminhamento](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html) na documentação do Route 53. | Admin de rede, admin do sistema | 
| Associe a regra de encaminhamento à sua VPC. | Para que a regra de encaminhamento entre em vigor, você deve associar a regra à sua VPC. O Route 53 Resolver então leva a regra em consideração ao resolver um domínio. Para obter instruções, consulte [Como gerenciar regras de encaminhamento](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html) na documentação do Route 53. | Admin de rede, admin do sistema | 

### Configurar solucionadores de DNS on-premises
<a name="configure-on-premises-dns-resolvers"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o encaminhamento condicional nos solucionadores de DNS on-premises.  | Para que as consultas ao DNS sejam enviadas para a zona hospedada privada do Route 53 a partir do ambiente on-premises, você deve configurar o encaminhamento condicional nos solucionadores de DNS on-premises. Isso instrui os solucionadores de DNS a encaminhar todas as consultas ao DNS para o domínio da AWS (por exemplo, para myvpc.cloud.com) para o endereço IP do endpoint de entrada do Route 53 Resolver. | Admin de rede, admin do sistema | 

### Teste a end-to-end resolução do DNS
<a name="test-end-to-end-dns-resolution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Teste a resolução de DNS da AWS para o ambiente on-premises. | Em um servidor na VPC, execute uma consulta ao DNS para um domínio on-premises (como server1.onprem.mydc.com). | Admin de rede, admin do sistema | 
| Teste a resolução de DNS para o ambiente on-premises. | Em um servidor on-premises, execute a resolução de DNS para um domínio da AWS (como server1.myvpc.cloud.com). | Admin de rede, admin do sistema | 

## Recursos relacionados
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-resources"></a>
+ [Gerenciamento de DNS centralizado da nuvem híbrida com o Amazon Route 53 e o AWS Transit Gateway](https://aws.amazon.com/blogs/networking-and-content-delivery/centralized-dns-management-of-hybrid-cloud-with-amazon-route-53-and-aws-transit-gateway/) (blog de redes e entrega de conteúdo da AWS)
+ [Simplifique o gerenciamento de DNS em um ambiente de várias contas com o Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/) (blog de segurança da AWS)
+ [Trabalhando com zonas hospedadas privadas](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) (documentação do Route 53)
+ [Conceitos básicos do Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) (documentação do Route 53 Resolver)

# Configure bots de UiPath RPA automaticamente na Amazon EC2 usando a AWS CloudFormation
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation"></a>

*Dr. Rahul Sharad Gaikwad e Tamilselvan P, Amazon Web Services*

## Resumo
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-summary"></a>

Esse padrão explica como você pode implantar bots de automação robótica de processos (RPA) em instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Ele usa um pipeline do [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) para criar uma Amazon Machine Image (AMI) personalizada. Uma AMI é uma imagem de máquina virtual (VM) pré-configurada que contém o sistema operacional (OS) e o software pré-instalado para implantar instâncias. EC2 Esse padrão usa CloudFormation modelos da AWS para instalar a [edição UiPath Studio Community](https://www.uipath.com/product/studio) na AMI personalizada. UiPath é uma ferramenta de RPA que ajuda você a configurar robôs para automatizar suas tarefas.

Como parte dessa solução, as instâncias EC2 do Windows são iniciadas usando a AMI básica e o aplicativo UiPath Studio é instalado nas instâncias. O padrão usa a ferramenta Microsoft System Preparation (Sysprep) para duplicar uma instalação personalizada do Windows. Depois disso, ele remove as informações do host e cria uma AMI final da instância. Em seguida, você pode executar as instâncias sob demanda usando a AMI final com suas próprias convenções de nomenclatura e configuração de monitoramento.


| 
| 
| Observação: esse padrão não fornece nenhuma informação sobre o uso de bots de RPA. Para obter essas informações, consulte a [UiPath documentação](https://docs.uipath.com/). Você também pode usar esse padrão para configurar outros aplicativos de bot RPA personalizando as etapas de instalação com base em seus requisitos. | 
| --- |

Esse padrão fornece as seguintes automações e benefícios:
+ Implantação e compartilhamento de aplicativos: você pode criar a Amazon EC2 AMIs para implantação de aplicativos e compartilhá-los em várias contas por meio de um pipeline do EC2 Image Builder, que usa CloudFormation modelos da AWS como scripts de infraestrutura como código (IaC).
+  EC2 Provisionamento e escalabilidade da Amazon: os modelos de CloudFormation IaC fornecem sequências personalizadas de nomes de computadores e automação de junção do Active Directory.
+ Observabilidade e monitoramento: o padrão configura os CloudWatch painéis da Amazon para ajudar você a monitorar as EC2 métricas da Amazon (como uso de CPU e disco).
+ Benefícios da RPA para sua empresa: a RPA melhora a precisão porque os robôs podem realizar tarefas atribuídas de forma automática e consistente. A RPA também aumenta a velocidade e a produtividade porque remove operações que não agregam valor e lida com atividades repetitivas.

## Pré-requisitos e limitações
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-prereqs"></a>

**Pré-requisitos **
+ Uma [conta AWS](https://aws.amazon.com/free/) ativa
+ [Permissões do AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) para implantação de modelos CloudFormation 
+ [Políticas do IAM](https://docs.aws.amazon.com/imagebuilder/latest/userguide/cross-account-dist.html) para configurar a distribuição de AMI entre contas com o EC2 Image Builder

## Arquitetura
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-architecture"></a>

![\[Arquitetura alvo para configurar bots de RPA na Amazon EC2\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/5555a62d-91d4-4e81-9961-ff89faedd6ad/images/1893d2d3-8912-4473-adf1-6633b5badcd9.png)


1. O administrador fornece a AMI básica do Windows no `ec2-image-builder.yaml` arquivo e implanta a pilha no CloudFormation console.

1. A CloudFormation pilha implanta o pipeline do EC2 Image Builder, que inclui os seguintes recursos:
   + `Ec2ImageInfraConfiguration`
   + `Ec2ImageComponent`
   + `Ec2ImageRecipe`
   + `Ec2AMI`

1. O pipeline do EC2 Image Builder inicia uma EC2 instância temporária do Windows usando a AMI básica e instala os componentes necessários (nesse caso, o UiPath Studio).

1. O EC2 Image Builder remove todas as informações do host e cria uma AMI do Windows Server.

1. Você atualiza o `ec2-provisioning yaml` arquivo com a AMI personalizada e executa várias EC2 instâncias com base em seus requisitos.

1. Você implanta a macro Count usando um CloudFormation modelo. Essa macro fornece uma propriedade **Count** para CloudFormation recursos para que você possa especificar facilmente vários recursos do mesmo tipo.

1. Você atualiza o nome da macro no CloudFormation `ec2-provisioning.yaml` arquivo e implanta a pilha.

1. O administrador atualiza o arquivo `ec2-provisioning.yaml` com base nos requisitos e inicia a pilha.

1. O modelo implanta EC2 instâncias com o aplicativo UiPath Studio.

## Ferramentas
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-tools"></a>

**Serviços da AWS**
+  CloudFormationA [AWS](https://aws.amazon.com/cloudformation/) ajuda você a modelar e gerenciar recursos de infraestrutura de forma automatizada e segura.
+  CloudWatchA [Amazon](https://aws.amazon.com/cloudwatch/) ajuda você a observar e monitorar recursos e aplicativos na AWS, no local e em outras nuvens.
+ [A Amazon Elastic Compute Cloud (Amazon EC2](https://aws.amazon.com/ec2/)) fornece capacidade computacional segura e redimensionável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ EC2 O [Image Builder](https://aws.amazon.com/image-builder/) simplifica a criação, o teste e a implantação de máquinas virtuais e imagens de contêineres para uso na AWS ou localmente.
+  EventBridgeA [Amazon](https://aws.amazon.com/eventbridge/) ajuda você a criar aplicativos orientados por eventos em grande escala na AWS, em sistemas existentes ou em aplicativos de software como serviço (SaaS).
+ O [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a controlar de modo seguro o acesso a recursos da AWS. Com o IAM, é possível gerenciar, de maneira centralizada, permissões que controlam quais recursos da AWS os usuários poderão acessar. Com o IAM, você controla quem pode se autenticar (fazer login) e quem tem autorização (permissões) para acessar os recursos.
+ O [AWS Lambda](https://aws.amazon.com/lambda/) é um serviço computacional com tecnologia sem servidor e orientado a eventos que permite executar o código em praticamente qualquer tipo de aplicativo ou serviço de backend sem o provisionamento ou gerenciamento de servidores. Você chama as funções do Lambda a partir de mais de 200 serviços da AWS e aplicativos de SaaS e pagar somente pelo que usar.
+ O [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ [O AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) ajuda o Systems Manager a atualizar, gerenciar e configurar EC2 instâncias, dispositivos periféricos, servidores locais e máquinas virtuais ()VMs.

**Repositórios de códigos**

O código desse padrão está disponível na [configuração do bot GitHub UiPath RPA usando](https://github.com/aws-samples/uipath-rpa-setup-ec2-windows-ami-cloudformation) o CloudFormation repositório. O padrão também usa uma macro que está disponível no [repositório de CloudFormation macros da AWS](https://github.com/aws-cloudformation/aws-cloudformation-macros/tree/master/Count).

## Práticas recomendadas
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-best-practices"></a>
+ A AWS lança um novo [Windows AMIs](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-ami-version-history.html) todo mês. Elas contêm os drivers, agentes de execução e patches do SO mais recentes. Recomendamos utilizar o AMI mais recente ao executar novas instâncias ou ao criar suas próprias imagens personalizadas.
+ Aplique todos os patches de segurança disponíveis para Windows ou Linux durante a criação de imagens.

## Épicos
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-epics"></a>

### Implementar um pipeline de imagens para a imagem base
<a name="deploy-an-image-pipeline-for-the-base-image"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure um pipeline do EC2 Image Builder. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Veja as configurações do EC2 Image Builder. | As configurações do EC2 Image Builder incluem configuração de infraestrutura, configurações de distribuição e configurações de verificação de segurança. Para ver as configurações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Como prática recomendada, você deve fazer qualquer atualização no EC2 Image Builder somente por meio do CloudFormation modelo. | AWS DevOps | 
| Visualize o pipeline de imagens. | Para ver o pipeline de imagens implantado:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Veja os logs do Image Builder. | EC2 Os registros do Image Builder são agregados em grupos de CloudWatch registros. Para ver os logins CloudWatch:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)EC2 Os registros do Image Builder também são armazenados em um bucket do S3. Para visualizar os logs no bucket:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Faça upload do UiPath arquivo em um bucket do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 

### Implantar e testar a macro Count
<a name="deploy-and-test-the-count-macro"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implantar a macro Count. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Se você quiser usar o console, siga as instruções no épico anterior ou na [CloudFormation documentação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).  | DevOps engenheiro | 
| Testar a macro Count. | Para testar os recursos da macro, tente iniciar o modelo de exemplo fornecido com a macro. <pre>aws cloudformation deploy \<br />    --stack-name Count-test \<br />    --template-file test.yaml \<br />    --capabilities CAPABILITY_IAM</pre> | DevOps engenheiro | 

### Implante a CloudFormation pilha para provisionar instâncias com a imagem personalizada
<a name="deploy-the-cloudformation-stack-to-provision-instances-with-the-custom-image"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o modelo de EC2 provisionamento da Amazon. | Para implantar o EC2 Image Pipeline usando CloudFormation:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Veja as EC2 configurações da Amazon. | As EC2 configurações da Amazon incluem configurações de segurança, rede, armazenamento, verificações de status, monitoramento e tags. Para ver essas configurações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Veja o CloudWatch painel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Depois que você provisiona a pilha, leva algum tempo para que o painel seja preenchido com as métricas.O painel fornece essas métricas:`CPUUtilization`, `DiskUtilization`, `MemoryUtilization`, `NetworkIn`, `NetworkOut`, `StatusCheckFailed`. | AWS DevOps | 
| Visualizar métricas personalizadas para uso de memória e disco.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Visualizar os alarmes para uso da memória e do disco.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Verificar a regra do ciclo de vida do snapshot. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 

### Excluir o ambiente (opcional)
<a name="delete-the-environment-optional"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua as pilhas. | Quando seu PoC ou projeto piloto estiver concluído, recomendamos que você exclua as pilhas criadas para garantir que não seja cobrado por esses recursos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)A operação de exclusão da pilha não pode ser interrompida após ser iniciada. A pilha continua para o estado `DELETE_IN_PROGRESS`.Se houver falha ao excluir, a pilha estará no estado `DELETE_FAILED`. Para obter soluções, consulte [Excluir falhas na pilha](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-delete-stack-fails) na documentação de solução de CloudFormation problemas da AWS.Para obter informações sobre como proteger pilhas de serem excluídas acidentalmente, consulte Como [proteger uma pilha de ser excluída na documentação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html) da AWS. CloudFormation  | AWS DevOps | 

## Solução de problemas
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Ao implantar o modelo de EC2 provisionamento da Amazon, você recebe o erro: *Received malformed response from transform 123xxxx*: :Count. | Esse é um problema conhecido. (Veja a solução personalizada e o PR no [repositório de CloudFormation macros da AWS](https://github.com/aws-cloudformation/aws-cloudformation-macros/pull/20).)[Para corrigir esse problema, abra o console do AWS Lambda e atualize `index.py` com o conteúdo do GitHub repositório.](https://raw.githubusercontent.com/aws-cloudformation/aws-cloudformation-macros/f1629c96477dcd87278814d4063c37877602c0c8/Count/src/index.py)  | 

## Recursos relacionados
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-resources"></a>

**GitHub repositórios**
+ [UiPath Configuração do bot RPA usando CloudFormation](https://github.com/aws-samples/uipath-rpa-setup-ec2-windows-ami-cloudformation)
+ [ CloudFormation Macro de contagem](https://github.com/aws-cloudformation/aws-cloudformation-macros/tree/master/Count)

**Referências da AWS**
+ [Criação de uma pilha no CloudFormation console da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (CloudFormation documentação)
+ [Solução de problemas CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation documentação)
+ [Monitore métricas de memória e disco para EC2 instâncias da Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html) ( EC2 documentação da Amazon)
+ [Como posso usar o CloudWatch agente para visualizar métricas do Monitor de Desempenho em um servidor Windows?](https://repost.aws/knowledge-center/cloudwatch-performance-monitor-windows) (Artigo do AWS ref:Post)

**Referências adicionais**
+ [UiPath documentação](https://docs.uipath.com/)
+ [Definindo o nome do host em uma SysPreped AMI](https://blog.brianbeach.com/2014/07/setting-hostname-in-syspreped-ami.html) (postagem no blog de Brian Beach)
+ [Como faço para que o Cloudformation reprocesse um modelo usando uma macro quando os parâmetros mudam?](https://stackoverflow.com/questions/59828989/how-do-i-make-cloudformation-reprocess-a-template-using-a-macro-when-parameters) (Estouro de pilha)

# Configure uma PeopleSoft arquitetura altamente disponível na AWS
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws"></a>

*Ramanathan Muralidhar, Amazon Web Services*

## Resumo
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-summary"></a>

Quando você migra suas PeopleSoft cargas de trabalho para a AWS, a resiliência é um objetivo importante. Ele garante que seu PeopleSoft aplicativo esteja sempre altamente disponível e seja capaz de se recuperar rapidamente de falhas.

Esse padrão fornece uma arquitetura para seus PeopleSoft aplicativos na AWS para garantir alta disponibilidade (HA) nos níveis de rede, aplicativo e banco de dados. Ele usa um banco de dados [Amazon Relational Database Service (Amazon RDS](https://aws.amazon.com/rds/)) para Oracle ou Amazon RDS para SQL Server para a camada de banco de dados. Essa arquitetura também inclui serviços da AWS, como o [Amazon Route 53](https://aws.amazon.com/route53/), instâncias Linux do [Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/ec2/), o [Amazon Elastic Block Storage (Amazon EBS)](https://aws.amazon.com/ebs/), o [Amazon Elastic File System (Amazon EFS)](https://aws.amazon.com/efs/) e um [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer), além de ser escalável.

 PeopleSoftA [Oracle](https://www.oracle.com/applications/peoplesoft/) fornece um conjunto de ferramentas e aplicativos para gerenciamento da força de trabalho e outras operações comerciais.

## Pré-requisitos e limitações
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um PeopleSoft ambiente com as licenças necessárias para configurá-lo na AWS
+ Uma nuvem privada virtual (VPC) configurada em sua conta da AWS com os seguintes recursos:
  + Selecione pelo menos duas Zonas de disponibilidade.
  + Uma sub-rede pública e três sub-redes privadas em cada zona de disponibilidade
  + Um gateway NAT e um gateway da Internet
  + Tabelas de rotas para cada sub-rede para rotear o tráfego
  + Listas de controle de acesso à rede (rede ACLs) e grupos de segurança definidos para ajudar a garantir a segurança do PeopleSoft aplicativo de acordo com os padrões da sua organização

**Limitações**
+ Esse padrão fornece uma solução de alta disponibilidade (HA). Ele não oferece suporte a cenários de recuperação de desastres (DR). Na rara ocorrência de toda a região da AWS para a implementação de HA cair, o aplicativo ficará indisponível.

**Versões do produto**
+ PeopleSoft aplicativos executando PeopleTools 8.52 e versões posteriores

## Arquitetura
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-architecture"></a>

**Arquitetura de destino**

O tempo de inatividade ou interrupção de seu aplicativo de PeopleSoft produção afeta a disponibilidade do aplicativo e causa grandes interrupções em seus negócios.

Recomendamos que você projete seu aplicativo de PeopleSoft produção para que ele esteja sempre altamente disponível. Você pode conseguir isso eliminando pontos únicos de falha, adicionando pontos confiáveis de cruzamento ou failover e detectando falhas. O diagrama a seguir ilustra uma arquitetura de HA para PeopleSoft a AWS.

![\[Arquitetura altamente disponível para PeopleSoft na AWS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/0db96376-dadb-4545-b130-ebbe64acd4e9/images/5d585a8e-320a-495d-a049-97171633e90f.png)


Essa implantação de arquitetura usa o Amazon RDS for Oracle como PeopleSoft banco de dados e instâncias EC2 que estão sendo executadas no Red Hat Enterprise Linux (RHEL). Você também pode usar o Amazon RDS para SQL Server como banco de dados Peoplesoft.

Essa arquitetura inclui os seguintes componentes: 
+ [O Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é usado como servidor de nomes de domínio (DNS) para rotear solicitações da Internet para o PeopleSoft aplicativo.
+ O [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) ajuda você a se proteger contra exploits comuns da web e bots que podem afetar a disponibilidade, comprometer a segurança ou consumir recursos excessivos. O [AWS Shield Avançado](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html) (não ilustrado) oferece uma proteção muito mais ampla.
+ Um [Application Load Balancer equilibra a carga](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) do tráfego HTTP e HTTPS com roteamento avançado de solicitações direcionado aos servidores da web.
+ Os servidores web, servidores de aplicativos, servidores de agendamento de processos e servidores Elasticsearch que oferecem suporte ao PeopleSoft aplicativo são executados em várias zonas de disponibilidade e usam o [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html).
+ O banco de dados usado pelo PeopleSoft aplicativo é executado no [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) em uma configuração Multi-AZ.
+ O compartilhamento de arquivos usado pelo PeopleSoft aplicativo é configurado no [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) e é usado para acessar arquivos entre instâncias.
+ As [Amazon Machine Images (AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) s) são usadas pelo Amazon EC2 Auto Scaling para PeopleSoft garantir que os componentes sejam clonados rapidamente quando necessário.
+ O [gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) conecta as instâncias em uma sub-rede privada a serviços fora da VPC, e tgarantir que externos não iniciem uma conexão com essas instâncias.
+ Um [gateway da Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) é um componente da VPC horizontalmente dimensionado, redundante e altamente disponível que permite a comunicação entre a VPC e a Internet.
+ Os bastion hosts na sub-rede pública fornecem acesso aos servidores na sub-rede privada a partir de uma rede externa, como a Internet ou a rede on-premises. Os bastion hosts fornecem acesso controlado e seguro aos servidores nas sub-redes privadas.

**Detalhes de arquitetura**

O PeopleSoft banco de dados está alojado em um banco de dados Amazon RDS for Oracle (ou Amazon RDS for SQL Server) em uma configuração Multi-AZ. O atributo [Multi-AZ do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) replica as atualizações de bancos de dados em duas zonas de disponibilidade para aumentar a durabilidade e a disponibilidade. O Amazon RDS passará automaticamente para o modo de standby para manutenção planejada e interrupções não planejadas.

A PeopleSoft web e a camada intermediária são instaladas em instâncias do EC2. Essas instâncias estão espalhadas por várias zonas de disponibilidade e vinculadas por um [grupo do Auto Scaling.](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) Isso garante que esses componentes estejam sempre altamente disponíveis. Um número mínimo de instâncias necessárias é mantido para garantir que o aplicativo esteja sempre disponível e possa ser escalado quando necessário.

Recomendamos que você use um tipo de instância do EC2 da geração atual para as instâncias OEM EC2. Os tipos de instância da geração atual, como [instâncias criadas no AWS Nitro System](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances), oferecem suporte a máquinas virtuais de hardware (HVMs). É necessário que o HVM aproveite AMIs as vantagens da [rede aprimorada](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) e também ofereça maior segurança. As instâncias do EC2 que fazem parte de cada grupo do Auto Scaling usam sua própria AMI ao substituir ou ampliar as instâncias. Recomendamos que você selecione os tipos de instância do EC2 com base na carga que você deseja que seu PeopleSoft aplicativo manipule e nos valores mínimos recomendados pela Oracle para seu PeopleSoft aplicativo e PeopleTools versão. Para obter mais informações sobre os requisitos de hardware e software, consulte o [site de suporte da Oracle](https://support.oracle.com).

A PeopleSoft web e o nível intermediário compartilham uma montagem do Amazon EFS para compartilhar relatórios, arquivos de dados e (se necessário) o `PS_HOME` diretório. O Amazon EFS é configurado com destinos de montagem em cada zona de disponibilidade por motivos de desempenho e custo.

Um Application Load Balancer é provisionado para suportar o tráfego que acessa o PeopleSoft aplicativo e balanceia a carga do tráfego entre os servidores web em diferentes zonas de disponibilidade. Um Application Load Balancer é um dispositivo de rede que fornece HA em pelo menos duas zonas de disponibilidade. Os servidores web distribuem o tráfego para diferentes servidores de aplicativos usando uma configuração de balanceamento de carga. O balanceamento de carga entre o servidor web e o servidor de aplicativos garante que a carga seja distribuída uniformemente entre as instâncias e ajuda a evitar gargalos e interrupções no serviço devido a instâncias sobrecarregadas.

O Amazon Route 53 é usado como serviço de DNS para rotear o tráfego da Internet para o Application Load Balancer. O Amazon Route 53 é um web service DNS altamente disponível e dimensionável.

**Detalhes do HA**
+ Bancos de dados: o atributo Multi-AZ do Amazon RDS opera dois bancos de dados em várias zonas de disponibilidade com replicação síncrona. Isso cria um ambiente altamente disponível com failover automático. O Amazon RDS tem detecção de eventos de failover e inicia um failover automático quando esses eventos ocorrem. Você também pode iniciar o failover manual por meio da API do Amazon RDS. Para obter uma explicação detalhada, consulte a postagem do blog [Amazon RDS Under The Hood: Multi-AZ](https://aws.amazon.com/blogs/database/amazon-rds-under-the-hood-multi-az/). O failover é contínuo e o aplicativo se reconecta automaticamente ao banco de dados quando isso acontece. No entanto, qualquer trabalho do agendador de processos durante o failover gera erros e precisa ser reenviado.
+ PeopleSoft servidores de aplicativos: os servidores de aplicativos estão espalhados por várias zonas de disponibilidade e têm um grupo de Auto Scaling definido para eles. Se uma instância falhar, o grupo do Auto Scaling a substituirá imediatamente por uma instância íntegra que é clonada da AMI do modelo do servidor de aplicativos. Especificamente, o *jolt pooling* está ativado. Portanto, quando uma instância do servidor de aplicativos fica inativa, as sessões são transferidas automaticamente para outro servidor de aplicativos, e o grupo do Auto Scaling automaticamente cria outra instância, abre o servidor do aplicativo e o registra na montagem do Amazon EFS. O servidor de aplicativos recém-criado é adicionado automaticamente aos servidores web usando o `PSSTRSETUP.SH` script nos servidores web. Isso garante que o servidor de aplicativos esteja sempre altamente disponível e se recupere rapidamente de falhas.
+ Agendadores de processos: os servidores dos agendadores de processos estão espalhados por várias zonas de disponibilidade e têm um grupo do Auto Scaling definido para eles. Se uma instância falhar, o grupo do Auto Scaling a substituirá imediatamente por uma instância íntegra que é clonada da AMI do modelo do servidor de processos. Especificamente, quando uma instância do agendador de processos fica inativa, o grupo do Auto Scaling ativa automaticamente outra instância e ativa o agendador de processos. Todos os trabalhos que estavam em execução quando a instância falhou devem ser reenviados. Isso garante que o agendador de processos esteja sempre altamente disponível e se recupere rapidamente de falhas.
+ Servidores Elasticsearch: os servidores Elasticsearch têm um grupo do Auto Scaling definido para eles. Se uma instância falhar, o grupo do Auto Scaling a substituirá imediatamente por uma instância íntegra que é clonada da AMI do modelo do servidor Elasticsearch. Especificamente, quando uma instância do Elasticsearch fica inativa, o Application Load Balancer que atende às solicitações detecta a falha e para de enviar tráfego para ela. O grupo do Auto Scaling ativa automaticamente outra instância e ativa a instância do Elasticsearch. Quando a instância do Elasticsearch é reativada, o Application Load Balancer detecta que ela está íntegra e começa a enviar solicitações para ela novamente. Isso garante que o servidor Elasticsearch esteja sempre altamente disponível e se recupere rapidamente de falhas.
+ Servidores web: os servidores web têm um grupo do Auto Scaling definido para eles. Se uma instância falhar, o grupo do Auto Scaling a substituirá imediatamente por uma instância íntegra que é clonada da AMI do modelo de servidor web. Especificamente, quando uma instância do servidor web fica inativa, o Application Load Balancer que atende às solicitações detecta a falha e para de enviar tráfego para ela. O grupo do Auto Scaling ativa automaticamente outra instância e ativa a instância do servidor web. Quando a instância do web server é reativada, o Application Load Balancer detecta que ela está íntegra e começa a enviar solicitações para ela novamente. Isso garante que o servidor web esteja sempre altamente disponível e se recupere rapidamente de falhas.

## Ferramentas
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-tools"></a>

**Serviços da AWS**
+ O [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) distribui o tráfego de entrada do aplicativo por vários destinos, como instâncias EC2, em várias Zonas de disponibilidade.
+ O [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) oferece volumes de armazenamento ao nível do bloco para usar com instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
+ O [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) oferece capacidade computacional escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ O [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) ajuda você a criar e configurar sistemas de arquivos compartilhados na Nuvem AWS.
+ O [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ajuda você a configurar, operar e escalar um banco de dados relacional na Nuvem AWS.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é um serviço web de DNS altamente disponível e escalável.

## Práticas recomendadas
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-best-practices"></a>

**Melhores práticas operacionais**
+ Quando você executa PeopleSoft na AWS, use o Route 53 para rotear o tráfego da Internet e localmente. Use a [opção de failover](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html) para redirecionar o tráfego para o site de recuperação de desastres (DR) se a instância de banco de dados primária não estiver disponível.
+ Sempre use um Application Load Balancer na frente do PeopleSoft ambiente. Isso garante que a carga do tráfego seja balanceada para os servidores da web de forma segura.
+ Nas configurações do grupo-alvo do Application Load Balancer, verifique se a [aderência está ativada com um cookie gerado](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html) pelo balanceador de carga.
**nota**  
Talvez seja necessário usar um cookie baseado em aplicação se você usar uma autenticação única (SSO) externa. Isso garante que as conexões sejam consistentes entre os servidores web e os servidores de aplicativos.
+ Para um aplicativo PeopleSoft de produção, o tempo limite de inatividade do Application Load Balancer deve corresponder ao que está definido no perfil da web que você usa. Isso evita que as sessões do usuário expirem na camada do balanceador de carga.
+ Para um aplicativo PeopleSoft de produção, defina a [contagem de reciclagem](https://docs.oracle.com/cd/F28299_01/pt857pbr3/eng/pt/tsvt/concept_PSAPPSRVOptions-c07f06.html?pli=ul_d96e90_tsvt) do servidor de aplicativos para um valor que minimize os vazamentos de memória.
+ Se você estiver usando um banco de dados do Amazon RDS para seu aplicativo de PeopleSoft produção, conforme descrito neste padrão, execute-o no [formato Multi-AZ para obter alta disponibilidade](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html).
+ Se seu banco de dados estiver sendo executado em uma instância do EC2 para seu aplicativo PeopleSoft de produção, certifique-se de que um [banco de dados em espera esteja sendo executado em outra zona de disponibilidade](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/ec2-oracle.html#ec2-oracle-ha) para alta disponibilidade.
+ Para DR, certifique-se de que seu banco de dados Amazon RDS ou instância do EC2 tenha um modo de espera configurado em uma região da AWS separada do banco de dados de produção. Isso garante que, em caso de desastre na região, você possa mudar o aplicativo para outra região.
+ Para DR, usar o [Amazon Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) para configurar componentes no nível do aplicativo em uma região separada dos componentes de produção. Isso garante que, em caso de desastre na região, você possa mudar o aplicativo para outra região.
+ Use o Amazon EFS (para I/O requisitos moderados) ou o [Amazon FSx](https://aws.amazon.com/fsx/) (para I/O requisitos altos) para armazenar seus PeopleSoft relatórios, anexos e arquivos de dados. Isso garante que o conteúdo seja armazenado em um local central e seja acessado de qualquer lugar dentro da infraestrutura.
+ Use a [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) (básica e detalhada) para monitorar os recursos da Nuvem AWS que seu PeopleSoft aplicativo está usando quase em tempo real. Isso garante que você receba alertas sobre problemas instantaneamente e possa resolvê-los rapidamente antes que afetem a disponibilidade do ambiente.
+ Se você estiver usando um banco de dados do Amazon RDS como banco de dados, use o PeopleSoft [Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html). Esse recurso fornece acesso a mais de 50 métricas, incluindo CPU, memória e sistema de arquivosI/O, and disk I/O.
+ Use CloudTrail a [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) para monitorar chamadas de API nos recursos da AWS que seu PeopleSoft aplicativo está usando. Isso ajuda você a realizar análises de segurança, rastreamento de alterações de recursos e auditoria de conformidade.

**Práticas recomendadas de segurança**
+ [Para proteger seu PeopleSoft aplicativo contra explorações comuns, como injeção de SQL ou cross-site scripting (XSS), use o AWS WAF.](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) Considere usar o [AWS Shield Avançado](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html) para serviços personalizados de detecção e mitigação.
+ Adicione uma regra ao Application Load Balancer para redirecionar automaticamente o tráfego de HTTP para HTTPS e ajudar a proteger seu aplicativo. PeopleSoft 
+ Configure um grupo de segurança separado para o Application Load Balancer. Esse grupo de segurança deve permitir somente tráfego de HTTPS/HTTP entrada e nenhum tráfego de saída. Isso garante que somente o tráfego pretendido seja permitido e ajuda a proteger seu aplicativo.
+ Use sub-redes privadas para os servidores de aplicativos, servidores web e banco de dados, e use [gateways NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) para tráfego de saída da Internet. Isso garante que os servidores que oferecem suporte ao aplicativo não possam ser acessados publicamente, ao mesmo tempo em que fornece acesso público somente aos servidores que precisam dele.
+ Use diferentes VPCs para executar seus ambientes PeopleSoft de produção e não produção. Use o [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/), o [emparelhamento de VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) ACLs, a [rede](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) e [os grupos de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) para controlar o fluxo de tráfego entre as [VPCs](https://aws.amazon.com/vpc/) e, se necessário, seu datacenter local.
+ Seguir o princípio do privilégio mínimo Conceda acesso aos recursos da AWS usados pelo PeopleSoft aplicativo somente para usuários que realmente precisam deles. Conceder somente os privilégios mínimos necessários para executar uma tarefa. Para obter mais informações, consulte o [pilar Seguranç](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_least_privileges.html) do AWS Well-Architected Framework.
+ Sempre que possível, use o [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) para acessar as instâncias do EC2 que o PeopleSoft aplicativo usa.

**Práticas recomendadas de confiabilidade**
+ Ao usar um Application Load Balancer, registre um único destino para cada zona de disponibilidade ativada. Isso torna o balanceador de carga mais eficaz.
+ Recomendamos que você tenha três endereços distintos URLs para cada ambiente de PeopleSoft produção: um URL para acessar o aplicativo, um para servir ao agente de integração e outro para visualizar relatórios. Se possível, cada URL deve ter seus próprios servidores web e servidores de aplicativos dedicados. Esse design ajuda a tornar seu PeopleSoft aplicativo mais seguro, pois cada URL tem uma funcionalidade distinta e acesso controlado. Também minimiza o escopo do impacto se os serviços subjacentes falharem.
+ Recomendamos que você configure [verificações de integridade nos grupos-alvo do balanceador de carga](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) do seu PeopleSoft aplicativo. As verificações de integridade devem ser realizadas nos servidores web em vez das instâncias do EC2 que executam esses servidores. Isso garante que, se o servidor web falhar ou a instância do EC2 que hospeda o servidor web cair, o Application Load Balancer reflita essas informações com precisão.
+ Para um aplicativo PeopleSoft de produção, recomendamos que você distribua os servidores web em pelo menos três zonas de disponibilidade. Isso garante que o PeopleSoft aplicativo esteja sempre altamente disponível, mesmo que uma das zonas de disponibilidade fique inativa.
+ Para um aplicativo PeopleSoft de produção, habilite jolt pooling (). `joltPooling=true` Isso garante que seu aplicativo passe para outro servidor de aplicativos se um servidor estiver inativo para fins de correção ou devido a uma falha na VM.
+ Para um aplicativo PeopleSoft de produção, `DynamicConfigReload ` defina como 1. Essa configuração é suportada na PeopleTools versão 8.52 e posterior. Ele adiciona novos servidores de aplicativos ao servidor web dinamicamente, sem reiniciar os servidores.
+ Para minimizar o tempo de inatividade ao aplicar PeopleTools patches, use o método de blue/green implantação para as configurações de inicialização do grupo Auto Scaling para os servidores web e de aplicativos. Para obter mais informações, consulte a [visão geral das opções de implantação no whitepaper da AWS](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/bluegreen-deployments.html).
+ Use o [AWS Backup para fazer backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) do seu PeopleSoft aplicativo na AWS. O AWS Backup é um serviço econômico, totalmente gerenciado e baseado em políticas que simplifica a proteção de dados em grande escala.

**Práticas recomendadas de desempenho**
+ Encerre o SSL no Application Load Balancer para obter o desempenho ideal do ambiente, PeopleSoft a menos que sua empresa exija tráfego criptografado em todo o ambiente.
+ Crie [endpoints VPC de interface para](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) serviços da AWS, como o [Amazon Simple Notification Service (Amazon SNS) [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html), para](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) que o tráfego seja sempre interno. Isso é econômico e ajuda a manter seu aplicativo seguro.

**Melhores práticas de otimização de custos**
+ Marque todos os recursos usados pelo seu PeopleSoft ambiente e ative as [tags de alocação de custos](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html). Essas tags ajudam você a visualizar e gerenciar seus custos de recursos.
+ Para um aplicativo PeopleSoft de produção, configure grupos de Auto Scaling para os servidores web e os servidores de aplicativos. Isso mantém um número mínimo de servidores web e de aplicativos para dar suporte ao seu aplicativo. Você pode usar [as políticas de grupo do Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html) para aumentar e reduzir os servidores conforme necessário.
+ Use [alarmes de cobrança](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html) para receber alertas quando os custos excederem um limite de orçamento especificado por você.

**Melhores práticas de sustentabilidade**
+ Use a [infraestrutura como código](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) para manter seus PeopleSoft ambientes. Isso ajuda você a criar ambientes consistentes e manter o controle de mudanças.

## Épicos
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-epics"></a>

### Migre seu PeopleSoft banco de dados para o Amazon RDS
<a name="migrate-your-peoplesoft-database-to-amazon-rds"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um grupo de sub-redes de banco de dados. | No [console do Amazon RDS](https://console.aws.amazon.com/rds/), no painel de navegação, escolha **Grupos de sub-redes** e, em seguida, crie um grupo de sub-redes de banco de dados do Amazon RDS com sub-redes em várias zonas de disponibilidade. Isso é necessário para o banco de dados do Amazon RDS ser executado em uma configuração Multi-AZ. | Administrador de nuvem | 
| Criar o banco de dados do Amazon RDS | Crie um banco de dados do Amazon RDS em uma zona de disponibilidade da região da AWS que você selecionou para o ambiente de PeopleSoft HA. Ao criar o banco de dados do Amazon RDS, certifique-se de selecionar a opção Multi-AZ (**Criar uma instância em espera**) e o grupo de sub-rede do banco de dados que você criou na etapa anterior. Para obter mais informações, consulte a [documentação do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html). | Administrador de nuvem, administrador de banco de dados Oracle | 
| Migre seu PeopleSoft banco de dados para o Amazon RDS. | Migre seu PeopleSoft banco de dados existente para o banco de dados do Amazon RDS usando o AWS Database Migration Service (AWS DMS). Para obter mais informações sobre , consulte [documentação de AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) o post do blog da AWS [Migrar bancos de dados do Oracle com tempo de inatividade quase zero usando o DMS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/). | Administrador de nuvem, PeopleSoft DBA | 

### Configure o sistema de arquivos do Amazon EFS
<a name="set-up-your-amazon-efs-file-system"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um sistema de arquivos. | No [console do Amazon EFS](https://console.aws.amazon.com/efs/), crie um sistema de arquivos e monte destinos para cada zona de disponibilidade. Para obter instruções, consulte a [Documentação do Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html#creating-using-fs-part1-console). Quando o sistema de arquivos tiver sido criado, anote o nome DNS. Você usará essas informações ao montar o sistema de arquivos. | Administrador de nuvem | 

### Configure seu PeopleSoft aplicativo e sistema de arquivos
<a name="set-up-your-peoplesoft-application-and-file-system"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie uma instância do EC2. | Execute uma instância do EC2 para seu PeopleSoft aplicativo. Para obter instruções, consulte a [Documentação do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html#liw-quickly-launch-instance).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem, PeopleSoft administrador | 
| Instale PeopleSoft na instância. | Instale seu PeopleSoft aplicativo e PeopleTools na instância do EC2 que você criou. Para obter instruções, consulte a [documentação do Oracle](https://docs.oracle.com). | Administrador de nuvem, PeopleSoft administrador | 
| Criar o servidor de aplicativos. | Crie o servidor do aplicativo para o modelo AMI e certifique-se de que ele se conecte com sucesso ao banco de dados do Amazon RDS. | Administrador de nuvem, PeopleSoft administrador | 
| Monte o sistema de arquivos do Amazon EFS. | Faça login na instância do EC2 como usuário raiz e execute os seguintes comandos para montar o sistema de arquivos do Amazon EFS em uma pasta chamada `PSFTMNT` no servidor.<pre>sudo su –<br />mkdir /psftmnt<br />cat /etc/fstab</pre>Adicione a linha a seguir ao arquivo `/etc/fstab`. Use o nome DNS que você anotou ao criar o sistema de arquivos.<pre>fs-09e064308f1145388.efs.us-east-1.amazonaws.com:/ /psftmnt nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0<br />mount -a</pre> | Administrador de nuvem, PeopleSoft administrador | 
| Verificar permissões | Certifique-se de que a `PSFTMNT` pasta tenha as permissões adequadas para que o PeopleSoft usuário possa acessá-la adequadamente. | Administrador de nuvem, PeopleSoft administrador | 
| Criar instâncias adicionais. | Repita as etapas anteriores neste épico para criar instâncias de modelo para o agendador de processos, o servidor web e o servidor Elasticsearch. Nomeie essas instâncias `PRCS_TEMPLATE``WEB_TEMPLATE`, `SRCH_TEMPLATE` e. Para o servidor web, `joltPooling=true`**** defina `DynamicConfigReload=1` e. | Administrador de nuvem, PeopleSoft administrador | 

### Crie scripts para configurar servidores
<a name="create-scripts-to-set-up-servers"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um script para instalar o servidor do aplicativo. | Na `APP_TEMPLATE` instância do Amazon EC2, como PeopleSoft usuário, crie o seguinte script. Nomeie `appstart.sh` e coloque no `PS_HOME` diretório. Você usará esse script para abrir o servidor do aplicativo e também registrar o nome do servidor na montagem do Amazon EFS.<pre>#!/bin/ksh<br />. /usr/homes/hcmdemo/.profile.<br />psadmin -c configure -d HCMDEMO<br />psadmin -c parallelboot -d HCMDEMO<br />touch /psftmnt/`echo $HOSTNAME`</pre> | PeopleSoft administrador | 
| Crie um script para instalar o servidor do agendador de processos. | Na `PRCS_TEMPLATE` instância do Amazon EC2, como PeopleSoft usuário, crie o seguinte script. Nomeie `prcsstart.sh` e coloque no `PS_HOME` diretório. Você usará esse script para abrir o servidor do agendador de processos.<pre>#!/bin/ksh<br />. /usr/homes/hcmdemo/. profile<br />/* The following line ensures that the process scheduler always has a unique name during replacement or scaling activity. */ <br />sed -i "s/.*PrcsServerName.*/`hostname -I | awk -F. '{print "PrcsServerName=PSUNX"$3$4}'`/" $HOME/appserv/prcs/*/psprcs.cfg<br />psadmin -p configure -d HCMDEMO<br />psadmin -p start -d HCMDEMO</pre> | PeopleSoft administrador | 
| Crie um script para instalar o servidor Elasticsearch. | Na `SRCH_TEMPLATE` instância do Amazon EC2, como usuário do Elasticsearch, crie o seguinte script. Nomeie `srchstart.sh` e coloque no `HOME` diretório.<pre>#!/bin/ksh<br />/* The following line ensures that the correct IP is indicated in the elasticsearch.yaml file. */<br />sed -i "s/.*network.host.*/`hostname  -I | awk '{print "host:"$0}'`/" $ES_HOME_DIR/config/elasticsearch.yaml<br />nohup $ES_HOME_DIR/bin/elasticsearch &</pre> | PeopleSoft administrador | 
| Criar um script para instalar o servidor web. | Na `WEB_TEMPLATE` instância do Amazon EC2, como usuário do servidor web, crie os seguintes scripts no `HOME` diretório.`renip.sh`: esse script garante que o servidor web tenha o IP correto quando clonado da AMI.<pre>#!/bin/ksh<br />hn=`hostname`<br />/* On the following line, change the IP with the hostname with the hostname of the web template. */<br />for text_file in `find  *  -type f -exec grep -l '<hostname-of-the-web-template>' {} \;`<br />do<br />sed -e 's/<hostname-of-the-web-template>/'$hn'/g' $text_file > temp<br />mv -f temp $text_file<br />done</pre>`psstrsetup.sh`: esse script garante que o servidor web use o servidor de aplicativos correto IPs que está sendo executado no momento. Ele tenta se conectar a cada servidor de aplicativos na porta de choque e o adiciona ao arquivo de configuração.<pre>#!/bin/ksh<br />c2=""<br />for ctr in `ls -1 /psftmnt/*.internal`<br />do<br />c1=`echo $ctr | awk -F "/" '{print $3}'`<br />/* In the following lines, 9000 is the jolt port. Change it if necessary. */<br />if nc -z $c1 9000 2> /dev/null; then<br />if [[ $c2 = "" ]]; then<br />c2="psserver="`echo $c1`":9000"<br />else<br />c2=`echo $c2`","`echo $c1`":9000"<br />fi<br />fi<br />done</pre>`webstart.sh`: esse script executa os dois scripts anteriores e inicia os servidores web.<pre>#!/bin/ksh<br />/* Change the path in the following if necessary. */<br />cd  /usr/homes/hcmdemo <br />./renip.sh<br />./psstrsetup.sh<br />webserv/peoplesoft/bin/startPIA.sh</pre> | PeopleSoft administrador | 
| Adicione uma entrada crontab. | **Na `WEB_TEMPLATE` instância do Amazon EC2, como usuário do servidor web, adicione a seguinte linha ao crontab.** Mude o tempo e o caminho para refletir os valores de que você precisa. Essa entrada garante que o servidor web sempre tenha as entradas corretas do servidor de aplicativos no `configuration.properties` arquivo.<pre>* * * * * /usr/homes/hcmdemo/psstrsetup.sh</pre> | PeopleSoft administrador | 

### Crie modelos AMIs de grupos com Auto Scaling
<a name="create-amis-and-auto-scaling-group-templates"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma AMI para o modelo do servidor de aplicativos. | No console do Amazon EC2, crie uma imagem AMI da instância do Amazon `APP_TEMPLATE` EC2. Dê um nome à AMI`PSAPPSRV-SCG-VER1`. Para obter instruções, consulte a [Documentação do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html). | Administrador de nuvem, PeopleSoft administrador | 
| Crie AMIs para os outros servidores. | Repita a etapa anterior para criar AMIs para o agendador de processos, o servidor Elasticsearch e o servidor web. | Administrador de nuvem, PeopleSoft administrador | 
| Criar um modelo de execução para um grupo do Auto Scaling do servidor do aplicativo | Criar um modelo de execução para um grupo do Auto Scaling do servidor do aplicativo Nomear o modelo `PSAPPSRV_TEMPLATE.` No modelo, escolha a AMI que você criou para a `APP_TEMPLATE` instância. Para obter instruções, consulte a [Documentação do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-from-instance).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem, PeopleSoft administrador | 
| Criar um modelo de execução para o grupo do Auto Scaling do servidor do agendador de processos. | Repetir a etapa anterior para criar um modelo de execução para o grupo do Auto Scaling do servidor do agendador de processos. Nomear o modelo `PSPRCS_TEMPLATE`. No modelo, escolha a AMI que você criou para o agendador de processos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem, PeopleSoft administrador | 
| Criar um modelo de execução para o grupo do Auto Scaling do servidor Elasticsearch. | Repetir as etapas anteriores para criar um modelo de execução para o grupo do Auto Scaling do servidor Elasticsearch. Nomear o modelo `SRCH_TEMPLATE`. No modelo, escolha a AMI que você criou para o servidor de pesquisa.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem, PeopleSoft administrador | 
| Criar um modelo de execução para um grupo do Auto Scaling do servidor web | Repetir as etapas anteriores para criar um modelo de execução para o grupo do Auto Scaling do servidor web. Nomear o modelo `WEB_TEMPLATE`. No modelo, escolha a AMI que você criou para o servidor web.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem, PeopleSoft administrador | 

### Criar grupos do Auto Scaling
<a name="create-auto-scaling-groups"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um grupo do Auto Scaling para o servidor de aplicativos. | No console do Amazon EC2, crie um grupo do Auto Scaling chamado `PSAPPSRV_ASG` para o servidor do aplicativo usando o modelo. `PSAPPSRV_TEMPLATE` Para obter instruções, consulte a [Documentação do Amazon EC2](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem, PeopleSoft administrador | 
| Criar um grupo do Auto Scaling para os outros servidores. | Repita a etapa anterior para criar grupos do Auto Scaling para o agendador de processos, o servidor Elasticsearch e o servidor web. | Administrador de nuvem, PeopleSoft administrador | 

### Criar e configurar grupos de destino
<a name="create-and-configure-target-groups"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um grupo de destino para o servidor web. | No console do Amazon EC2, crie um grupo de destino para o servidor web. Para obter instruções, consulte a [documentação do Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html). Configure a porta como a porta em que o servidor web está realizando a recepção. | Administrador de nuvem | 
| Configurar verificações de integridade | Confirme se as verificação de integridade têm os valores corretos para refletir suas necessidades comerciais. Para obter mais informações, consulte a [documentação do Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html). | Administrador de nuvem | 
| Criar um grupo de destino para o servidor Elasticsearch. | Repita as etapas anteriores para criar um grupo-alvo chamado `PSFTSRCH` para o servidor Elasticsearch e defina a porta correta do Elasticsearch. | Administrador de nuvem | 
| Adicionar grupos de destino aos grupos do Auto Scaling | Abra o grupo do Auto Scaling do servidor web chamado `PSPIA_ASG` criado por você anteriormente. Na guia **Load balancing**, escolha **Editar** e adicione o grupo de `PSFTWEB` destino ao grupo do Auto Scaling.Repita essa etapa para que o grupo do Auto Scaling do Elasticsearch `PSSRCH_ASG` para adicionar o grupo de destino`PSFTSRCH` que você criou anteriormente. | Administrador de nuvem | 
| Defina a aderência da sessão. | No grupo-alvo`PSFTWEB`, escolha a guia **Atributos**, escolha **Editar** e defina a aderência da sessão. Para o tipo de aderência, escolha **Cookie gerado pelo balanceador de carga** e defina a duração como 1. Para mais informações, consulte a [documentação do Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html).Repita as etapas para o grupo de destino `PSFTSRCH`. | Administrador de nuvem | 

### Criar e configurar Application Load Balancers
<a name="create-and-configure-application-load-balancers"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um balanceador de carga para os servidores web. | Crie um Application Load Balancer chamado `PSFTLB` para balancear a carga do tráfego para os servidores web. Para obter instruções, consulte a [documentação do Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html#configure-load-balancer).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem | 
| Criar um balanceador de carga para os servidores Elasticsearch. | Crie um Application Load Balancer chamado `PSFTSCH` para balancear a carga do tráfego para os servidores Elasticsearch.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrador de nuvem | 
| Configure o Route 53 | No [console do Amazon Route 53](https://console.aws.amazon.com/route53/), crie um registro na zona hospedada que atenderá o PeopleSoft aplicativo. Para obter instruções, consulte a [Documentação do Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html). Isso garante que todo o tráfego passe pelo balanceador de `PSFTLB` carga. | Administrador de nuvem | 

## Recursos relacionados
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-resources"></a>
+ [ PeopleSoft Site da Oracle](https://www.oracle.com/applications/peoplesoft/)
+ [Documentação da AWS](https://docs.aws.amazon.com/)

# Configure a recuperação de desastres para o Oracle JD Edwards com o EnterpriseOne AWS Elastic Disaster Recovery
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery"></a>

*Thanigaivel Thirumalai, Amazon Web Services*

## Resumo
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-summary"></a>

Desastres desencadeados por catástrofes naturais, falhas de aplicativos ou interrupção de serviços prejudicam a receita e causam tempo de inatividade para aplicativos corporativos. Para reduzir as repercussões de tais eventos, o planejamento da recuperação de desastres (DR) é fundamental para empresas que adotam os sistemas de planejamento de recursos EnterpriseOne corporativos (ERP) da JD Edwards e outros softwares de missão crítica e de negócios. 

Esse padrão explica como as empresas podem usar o AWS Elastic Disaster Recovery como uma opção de DR para seus aplicativos JD Edwards EnterpriseOne . Também descreve as etapas para usar o failover e o failback do Elastic Disaster Recovery para criar uma estratégia de DR entre regiões para bancos de dados hospedados em uma instância do Amazon Elastic Compute Cloud (Amazon EC2) na Nuvem AWS.

**nota**  
Esse padrão exige que as regiões primária e secundária da implementação de DR entre regiões sejam hospedadas na AWS.

[O Oracle JD Edwards EnterpriseOne](https://www.oracle.com/applications/jd-edwards-enterpriseone/) é uma solução de software ERP integrada para empresas de médio a grande porte em uma ampla variedade de setores.

O AWS Elastic Disaster Recovery minimiza o tempo de inatividade e a perda de dados com a recuperação rápida e confiável de aplicativos locais e baseados na nuvem usando armazenamento acessível, computação e recuperação mínimas. point-in-time

A AWS fornece [quatro padrões principais de arquitetura de DR](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html). Este documento se concentra na instalação, configuração e otimização usando a [estratégia de piloto leve](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html). Essa estratégia ajuda você a criar um ambiente de DR de baixo custo em que provisiona inicialmente um servidor de replicação para replicar dados do banco de dados de origem e provisiona o servidor de banco de dados real somente quando inicia uma simulação e uma recuperação de DR. Essa estratégia elimina as despesas de manutenção de um servidor de banco de dados na região de DR. Em vez disso, você paga por uma instância menor do EC2 que serve como servidor de replicação.

## Pré-requisitos e limitações
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um EnterpriseOne aplicativo JD Edwards executado no Oracle Database ou no Microsoft SQL Server com um banco de dados compatível em um estado de execução em uma instância EC2 gerenciada. Esse aplicativo deve incluir todos os componentes EnterpriseOne básicos do JD Edwards (Enterprise Server, HTML Server e Database Server) instalados em uma região da AWS.
+ Um perfil do (IAM) para AWS Identity and Access Management para configurar o serviço do Elastic Disaster Recovery.
+ A rede para executar o Elastic Disaster Recovery configurada de acordo com as [configurações de conectividade](https://docs.aws.amazon.com/drs/latest/userguide/Network-Requirements.html) necessárias.

**Limitações**
+ Você pode usar esse padrão para replicar todos os níveis, a menos que o banco de dados esteja hospedado no Amazon Relational Database Service (Amazon RDS). Nesse caso, recomendamos que você use a [funcionalidade de cópia entre regiões](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html) do Amazon RDS.
+ O Elastic Disaster Recovery não é compatível com o CloudEndure Disaster Recovery, mas você pode fazer o upgrade do CloudEndure Disaster Recovery. Para obter mais informações, consulte as [Perguntas frequentes](https://docs.aws.amazon.com/drs/latest/userguide/cedr-to-drs.html) na documentação do Elastic Disaster Recovery.
+ O Amazon Elastic Block Store (Amazon EBS) limita a taxa na qual você pode tirar snapshots. Você pode replicar um número máximo de 300 servidores em uma única conta da AWS usando o Elastic Disaster Recovery. Para replicar mais servidores, você pode usar várias contas da AWS ou várias regiões da AWS de destino. (Você precisará configurar o Elastic Disaster Recovery separadamente para cada conta e região.) Para obter mais informações, consulte [Práticas recomendadas](https://docs.aws.amazon.com/drs/latest/userguide/best_practices_drs.html) na documentação do Elastic Disaster Recovery.
+ As cargas de trabalho de origem (o EnterpriseOne aplicativo e o banco de dados do JD Edwards) devem ser hospedadas em instâncias do EC2. Esse padrão não é compatível com workloads on-premises ou em outros ambientes de nuvem.
+ Esse padrão se concentra nos componentes do JD Edwards EnterpriseOne . Um plano completo de DR e continuidade de negócios (BCP) deve incluir outros serviços essenciais, incluindo:
  + Rede (nuvem privada virtual, sub-redes e grupos de segurança)
  +  Active Directory
  + Amazon WorkSpaces
  + Elastic Load Balancing
  + Um serviço de banco de dados gerenciado, como Amazon Relational Database Service (Amazon RDS)

Para obter informações adicionais sobre pré-requisitos, configurações e limitações, consulte a [documentação do Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html).

**Versões do produto**
+ Oracle JD Edwards EnterpriseOne (versões compatíveis com Oracle e SQL Server com base nos requisitos técnicos mínimos da Oracle)

## Arquitetura
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-architecture"></a>

**Pilha de tecnologias de destino**
+ Uma única região e uma única nuvem privada virtual (VPC) para produção e não produção, e uma segunda região para DR
+ Zonas de disponibilidade únicas para garantir baixa latência entre servidores
+ Um Application Load Balancer que distribui o tráfego de rede para melhorar a escalabilidade e a disponibilidade de seus aplicativos em várias zonas de disponibilidade
+ Amazon Route 53 fornecerá a configuração do Sistema de Nomes de Domínio (DNS)
+ Amazon fornecerá WorkSpaces aos usuários uma experiência de desktop na nuvem
+ Use o Amazon Simple Storage Service (Amazon S3) para armazenar backups, arquivos e objetos
+ Amazon CloudWatch para registro, monitoramento e alarmes de aplicativos
+ Amazon Elastic Disaster Recovery para recuperação de desastres

**Arquitetura de destino**

O diagrama a seguir mostra a arquitetura de recuperação de desastres entre regiões para a JD Edwards EnterpriseOne usando o Elastic Disaster Recovery.

![\[Arquitetura para DR EnterpriseOne entre regiões do JD Edwards na AWS\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9b0de5f0-f211-4086-a044-321d081604f9/images/978b7219-e54e-4e31-b3ff-4885784e2971.png)


**Procedimento**

Aqui está uma análise de alto nível do processo. Consulte a seção *Épicos * para obter detalhes.
+ A replicação do Elastic Disaster Recovery começa com uma sincronização inicial. Durante a sincronização inicial, o AWS Replication Agent replica todos os dados dos discos de origem para o recurso apropriado na sub-rede da área de armazenamento.
+ A replicação contínua continua indefinidamente após a conclusão da sincronização inicial.
+ Você revisa os parâmetros de execução, que incluem configurações específicas do serviço e um modelo de execução do Amazon EC2, após a instalação do agente e o início da replicação. Quando o servidor de origem é indicado como pronto para recuperação, você pode iniciar as instâncias.
+ Quando o Elastic Disaster Recovery emite uma série de chamadas de API para iniciar a operação de lançamento, a instância de recuperação é iniciada imediatamente na AWS de acordo com suas configurações de execução. O serviço ativa automaticamente um servidor de conversão durante a inicialização.
+ A nova instância é ativada na AWS após a conclusão da conversão e está pronta para uso. O estado do servidor de origem no momento da execução é representado pelos volumes associados à instância executada. O processo de conversão envolve alterações nos drivers, na rede e na licença do sistema operacional para garantir que a instância seja inicializada de forma nativa na AWS.
+ Após o lançamento, os volumes recém-criados não são mais mantidos em sincronia com os servidores de origem. O AWS Replication Agent continua replicando rotineiramente as alterações feitas em seus servidores de origem para os volumes da área de armazenamento, mas as instâncias lançadas não refletem essas alterações.
+ Quando você inicia uma nova instância de simulação ou recuperação, os dados são sempre refletidos no estado mais recente que foi replicado do servidor de origem para a sub-rede da área de simulação.
+ Quando o servidor de origem é marcado como sendo preparado para recuperação, você pode iniciar instâncias.

**nota**  
O processo funciona nos dois sentidos: para failover de uma região da AWS primária para uma região de DR e para retornar ao site primário, quando ele for recuperado. Você pode se preparar para o failback revertendo a direção da replicação de dados da máquina de destino para a máquina de origem de uma forma totalmente orquestrada.

Os benefícios desse processo descritos nesse padrão incluem:
+ Flexibilidade: os servidores de replicação aumentam e reduzem de escala horizontalmente, com base no conjunto de dados e no tempo de replicação, para que você possa realizar testes de DR sem interromper os workload de origem ou a replicação.
+ Confiabilidade: a replicação é robusta, sem interrupções e contínua.
+ Automação: essa solução fornece um processo unificado e automatizado para teste, recuperação e failback.
+ Otimização de custos: você pode replicar somente os volumes necessários e pagar por eles, e pagar pelos recursos computacionais no local de DR somente quando esses recursos forem ativados. Você pode usar uma instância de replicação com custo otimizado (recomendamos que você use um tipo de instância otimizado para computação) para várias fontes ou uma única fonte com um grande volume do EBS.

**Automação e escala**

Quando você executa a recuperação de desastres em grande escala, os EnterpriseOne servidores JD Edwards terão dependências de outros servidores no ambiente. Por exemplo:
+ Os servidores de EnterpriseOne aplicativos JD Edwards que se conectam a um banco de dados EnterpriseOne compatível com o JD Edwards na inicialização têm dependências desse banco de dados.
+  EnterpriseOne Os servidores JD Edwards que exigem autenticação e precisam se conectar a um controlador de domínio na inicialização para iniciar os serviços têm dependências do controlador de domínio.

Por esse motivo, recomendamos que você automatize as tarefas de failover. Por exemplo, você pode usar o AWS Lambda ou o AWS Step Functions para automatizar os scripts de EnterpriseOne inicialização e as alterações do balanceador de carga do JD Edwards para automatizar o processo de failover. end-to-end Para obter mais informações, consulte a publicação [Criação de um plano de recuperação de desastres escalável com o AWS Elastic Disaster Recovery](https://aws.amazon.com/blogs/storage/creating-a-scalable-disaster-recovery-plan-with-aws-elastic-disaster-recovery/) no blog.

## Ferramentas
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-tools"></a>

**Serviços da AWS**
+ O [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) oferece volumes de armazenamento ao nível do bloco para usar com instâncias do EC2.
+ O [Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/products/compute/) oferece capacidade computacional escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ [O AWS Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) minimiza o tempo de inatividade e a perda de dados com a recuperação rápida e confiável de aplicativos locais e baseados na nuvem usando armazenamento acessível, computação e recuperação mínimas. point-in-time
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://aws.amazon.com/vpc/) oferece controle total sobre seu ambiente de rede virtual, incluindo posicionamento de recursos, conectividade e segurança.

## Práticas recomendadas
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-best-practices"></a>

**Práticas recomendadas gerais**
+ Tenha um plano escrito sobre o que fazer no caso de um evento real de recuperação.
+ Depois de configurar o Elastic Disaster Recovery corretamente, crie um CloudFormation modelo da AWS que possa criar a configuração sob demanda, caso seja necessário. Determine a ordem na qual os servidores e aplicativos devem ser iniciados e registre isso no plano de recuperação.
+ Faça uma simulação regular (aplicam-se as tarifas padrão do Amazon EC2).
+ Monitore a integridade da replicação contínua usando o console do Elastic Disaster Recovery ou programaticamente.
+ Proteja os point-in-time instantâneos e confirme antes de encerrar as instâncias.
+ Crie um perfil do IAM para a instalação do AWS Replication Agent.
+ Habilite a proteção contra encerramento para instâncias de recuperação em um cenário real de DR.
+ Não use a ação **Disconnect from AWS** (Desconectar da AWS) no console do Elastic Disaster Recovery para servidores para os quais você lançou instâncias de recuperação, mesmo no caso de um evento real de recuperação. Executar uma desconexão encerra todos os recursos de replicação relacionados a esses servidores de origem, incluindo seus pontos de recuperação point-in-time (PIT).
+ Altere a política do PIT para alterar o número de dias para retenção de instantâneos.
+ Edite o modelo de lançamento nas configurações de execução do Elastic Disaster Recovery para definir a sub-rede, o grupo de segurança e o tipo de instância corretos para seu servidor de destino.
+ Automatize o processo de end-to-end failover usando o Lambda ou o Step Functions para automatizar os scripts de inicialização e as alterações do balanceador de carga do JD Edwards EnterpriseOne .

** EnterpriseOne Otimização e considerações do JD Edwards**
+ Vá **PrintQueue**para o banco de dados.
+ Vá **MediaObjects**para o banco de dados.
+ Exclua os registros em log e a pasta temporária dos servidores lógicos e de lote.
+ Exclua a pasta temporária do Oracle WebLogic.
+ Crie scripts para inicialização após o failover.
+ Exclua o tempdb para o SQL Server.
+ Exclua o arquivo temporário do Oracle.

## Épicos
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-epics"></a>

### Execute tarefas e configurações iniciais
<a name="perform-initial-tasks-and-configuration"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure a rede de replicação.  | Implemente seu EnterpriseOne sistema JD Edwards na região principal da AWS e identifique a região da AWS para DR. Siga as etapas na seção [Requisitos de rede de replicação](https://docs.aws.amazon.com/drs/latest/userguide/preparing-environments.html) da documentação do Elastic Disaster Recovery para planejar e configurar sua rede de replicação e DR. | Administrador da AWS | 
| Determine o RPO e o RTO. | Identifique o objetivo de tempo de recuperação (RTO) e o objetivo de ponto de recuperação (RPO) para seus servidores de aplicativos e seu banco de dados. | Arquiteto de nuvem, arquiteto de DR | 
| Ative a replicação para o Amazon EFS. | Se aplicável, habilite a replicação da região primária da AWS para a região de DR para sistemas de arquivos compartilhados, como o Amazon Elastic File System (Amazon EFS), usando AWS DataSync, **rsync** ou outra ferramenta apropriada. | Administrador de nuvem | 
| Gerencie o DNS em caso de DR. | Identifique o processo para atualizar o Sistema de Nomes de Domínio (DNS) durante a simulação de DR ou uma DR real. | Administrador de nuvem | 
| Crie uma perfil do IAM para configuração. | Siga as instruções na seção [Elastic Disaster Recovery initialization and permissions](https://docs.aws.amazon.com/drs/latest/userguide/getting-started-initializing.html) (inicialização e permissões do Elastic Disaster Recovery) da documentação do Elastic Disaster Recovery para criar um perfil do IAM para inicializar e gerenciar o serviço da AWS. | Administrador de nuvem | 
| Configurar o emparelhamento de VPC. | Certifique-se de que a origem e o destino VPCs estejam emparelhados e acessíveis um ao outro. Para obter instruções de configuração, consulte a [documentação do Amazon VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). | Administrador da AWS | 

### Defina as configurações de replicação do Elastic Disaster Recovery
<a name="configure-elastic-disaster-recovery-replication-settings"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicializar o Elastic Disaster Recovery. | Abra o [console do Elastic Disaster Recovery](https://console.aws.amazon.com/drs/home), selecione a região de destino da AWS (onde você replicará dados e iniciará instâncias de recuperação) e, em seguida, selecione **Definir configurações de replicação padrão**. | Administrador da AWS | 
| Configure os servidores de replicação. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | Administrador da AWS | 
| Configure volumes e grupos de segurança. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | Administrador da AWS | 
| Defina configurações adicionais. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | Administrador da AWS | 

### Instale o AWS Replication Agent
<a name="install-the-aws-replication-agent"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um perfil do IAM. | Crie um perfil do IAM que contenha a política `AWSElasticDisasterRecoveryAgentInstallationPolicy`. Na seção **Select AWS access type** (Selecionar tipo de acesso da AWS), habilite o acesso programático. Anote o ID de chave de acesso e a chave de acesso secreta. Você precisará dessas informações durante a instalação do AWS Replication Agent. | Administrador da AWS | 
| Verifique os requisitos. | Verifique e preencha os [pré-requisitos](https://docs.aws.amazon.com/drs/latest/userguide/installation-requiremets.html) na documentação do Elastic Disaster Recovery para instalar o AWS Replication Agent. | Administrador da AWS | 
| Instale o AWS Replication Agent. | Siga as [instruções de instalação](https://docs.aws.amazon.com/drs/latest/userguide/agent-installation-instructions.html) do seu sistema operacional e instale o AWS Replication Agent.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Repita essas etapas para o servidor restante. | Administrador da AWS | 
| Monitore a replicação. | Retorne ao painel **Source servers** (Servidores de origem) do Elastic Disaster Recovery para monitorar o status da replicação. A sincronização inicial levará algum tempo, dependendo do tamanho da transferência de dados.Quando o servidor de origem estiver totalmente sincronizado, o status do servidor será atualizado para **Ready** (Pronto). Isso significa que um servidor de replicação foi criado na área de armazenamento e os volumes do EBS foram replicados do servidor de origem para a área de armazenamento. | Administrador da AWS | 

### Definir as configurações de lançamento
<a name="configure-launch-settings"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Edite as configurações de lançamento. | Para atualizar as configurações de inicialização das instâncias de simulação e recuperação, no [console do Elastic Disaster Recovery](https://console.aws.amazon.com/drs/home), selecione o servidor de origem e, em seguida, selecione **Actions** (Ações), **Edit launch settings** (Editar configurações de lançamento). Ou você pode escolher suas máquinas de origem de replicação na página **Source servers** (Servidores de origem) e, em seguida, escolher a guia **Launch Settings** (Configurações de inicialização). Essa guia tem duas seções: **General launch settings** (Configurações gerais de lançamento) e **EC2 launch template** (modelo de lançamento do EC2). | Administrador da AWS | 
| Defina as configurações gerais de lançamento. | Revise as configurações gerais de inicialização de acordo com seus requisitos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Para obter mais informações, consulte [Configurações gerais de lançamento](https://docs.aws.amazon.com/drs/latest/userguide/launch-general-settings.html) na documentação do Elastic Disaster Recovery. | Administrador da AWS | 
| Configure o modelo de execução do Amazon EC2. | O Elastic Disaster Recovery usa modelos de lançamento do Amazon EC2 para iniciar instâncias de simulação e recuperação para cada servidor de origem. O modelo de lançamento é criado automaticamente para cada servidor de origem que você adiciona ao Elastic Disaster Recovery depois de instalar o AWS Replication Agent.Você deve definir o modelo de execução do Amazon EC2 como padrão se quiser usá-lo com o Elastic Disaster Recovery.Para obter mais informações, consulte [Modelo de lançamento do EC2](https://docs.aws.amazon.com/drs/latest/userguide/ec2-launch.html) na documentação do Elastic Disaster Recovery. | Administrador da AWS | 

### Inicie a simulação de recuperação de desastres e o failover
<a name="initiate-dr-drill-and-failover"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Iniciar simulação | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Para obter mais informações, consulte [Preparação para um failover](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing.html) na documentação do Elastic Disaster Recovery. | Administrador da AWS | 
| Validar a simulação. | Na etapa anterior, você lançou novas instâncias de destino na região de DR. As instâncias de destino são réplicas dos servidores de origem com base no instantâneo obtido quando você iniciou o lançamento.Neste procedimento, você se conecta às suas máquinas de destino do Amazon EC2 para confirmar se elas estão funcionando conforme o esperado.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) |  | 
| Iniciar um failover. | Um failover é o redirecionamento do tráfego de um sistema primário para um sistema secundário. O Elastic Disaster Recovery ajuda você a realizar um failover lançando instâncias de recuperação na AWS. Quando as instâncias de recuperação são iniciadas, você redireciona o tráfego dos seus sistemas primários para essas instâncias.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Para obter mais informações, consulte [Execução de um failover](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing-failover.html) na documentação do Elastic Disaster Recovery. | Administrador da AWS | 
| Inicie um failback. | O processo para iniciar um failback é semelhante ao processo para iniciar o failover.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Para obter mais informações, consulte [Execução de um failback](https://docs.aws.amazon.com/drs/latest/userguide/failback-performing-main.html) na documentação do Elastic Disaster Recovery. | Administrador da AWS | 
| Inicie os componentes do JD Edwards. EnterpriseOne  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Você precisará incorporar as alterações no Route 53 e no Application Load Balancer para que o link do JD Edwards funcione EnterpriseOne .Você pode automatizar essas etapas usando Lambda, Step Functions e Systems Manager (Run Command).O Elastic Disaster Recovery executa a replicação em nível de bloco dos volumes EBS da instância do EC2 de origem que hospedam o sistema operacional e os sistemas de arquivos. Os sistemas de arquivos compartilhados que foram criados usando o Amazon EFS não fazem parte dessa replicação. Você pode replicar sistemas de arquivos compartilhados para a região de DR usando a AWS DataSync, conforme observado no primeiro épico, e depois montar esses sistemas de arquivos replicados no sistema de DR. | JD Edwards EnterpriseOne CNC | 

## Solução de problemas
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| O status de replicação de dados do servidor de origem está **Paralisado** e a replicação está atrasada. Se você verificar os detalhes, o status da replicação de dados exibirá **Agent not seen** (Agente indisponível). | Verifique se o servidor de origem paralisado está em execução.Se o servidor de origem ficar inativo, o servidor de replicação será encerrado automaticamente.Para obter mais informações sobre problemas de atraso, consulte [Problemas de atraso de replicação](https://docs.aws.amazon.com/drs/latest/userguide/Other-Troubleshooting-Topics.html#Replication-Lag-Issues) na documentação do Elastic Disaster Recovery. | 
| A instalação do AWS Replication Agent na instância do EC2 de origem falha no RHEL 8.2 após a digitalização dos discos. `aws_replication_agent_installer.log` revela que faltam cabeçalhos do kernel. | Antes de instalar o AWS Replication Agent no RHEL 8, CentOS 8 ou Oracle Linux 8, execute:<pre>sudo yum install elfutils-libelf-devel</pre>Para obter mais informações, consulte os [requisitos de instalação do Linux](https://docs.aws.amazon.com/mgn/latest/ug/installation-requirements.html#linux-requirements) na documentação do Elastic Disaster Recovery. | 
| No console do Elastic Disaster Recovery, você vê o servidor de origem como **Ready** (Pronto), com um atraso e o status de replicação de dados como **Stalled** (Parado).Dependendo de quanto tempo o AWS Replication Agent estiver indisponível, o status pode indicar um alto atraso, mas o problema continua o mesmo. | Use um comando do sistema operacional para confirmar se o AWS Replication Agent está sendo executado na instância do EC2 de origem ou confirme se a instância está em execução.Depois de corrigir qualquer problema, o Elastic Disaster Recovery reiniciará o escaneamento. Espere até que todos os dados tenham sido sincronizados e o status da replicação seja **Healthy** (Saudável) antes de iniciar um simulação de recuperação de desastres. | 
| Replicação inicial com alto atraso. No console do Elastic Disaster Recovery, você pode ver que o status de sincronização inicial é extremamente lento para um servidor de origem. | Verifique os problemas de atraso de replicação documentados na seção [Replication lag issues](https://docs.aws.amazon.com/drs/latest/userguide/Other-Troubleshooting-Topics.html#Replication-Lag-Issues) (Problemas de atraso de replicação) na documentação do Elastic Disaster Recovery.O servidor de replicação pode não conseguir lidar com a carga devido às operações computacionais intrínsecas. Nesse caso, tente atualizar o tipo de instância depois de consultar a [equipe do Suporte técnico da AWS](https://support.console.aws.amazon.com/support/). | 

## Recursos relacionados
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-resources"></a>
+ [Guia do usuário do AWS Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html)
+ [Criação de um plano escalável de recuperação de desastres com o AWS Elastic Disaster Recovery](https://aws.amazon.com/blogs/storage/creating-a-scalable-disaster-recovery-plan-with-aws-elastic-disaster-recovery/) (publicação no blog da AWS)
+ [AWS Elastic Disaster Recovery – Uma introdução técnica](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/11123/aws-elastic-disaster-recovery-a-technical-introduction) (curso AWS Skill Builder; requer login)
+ [Guia de início rápido do AWS Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/quick-start-guide-gs.html)

# Configure a detecção de CloudFormation desvios em uma organização multirregional e com várias contas
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization"></a>

*Ram Kandaswamy, Amazon Web Services*

## Resumo
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-summary"></a>

Os usuários do Amazon Web Services (AWS) geralmente procuram uma maneira eficiente de detectar incompatibilidades na configuração de recursos, incluindo a variação nas AWS CloudFormation pilhas, e corrigi-las o mais rápido possível. Esse é especialmente o caso quando AWS Control Tower é usado.

Esse padrão fornece uma solução prescritiva que resolve o problema de forma eficiente usando alterações consolidadas na configuração de recursos e agindo de acordo com essas alterações para gerar resultados. A solução foi projetada para cenários em que há várias CloudFormation pilhas criadas em mais de uma Região da AWS, ou em mais de uma conta, ou uma combinação de ambas. Os objetivos da solução são os seguintes:
+ Simplifique o processo de detecção de desvios
+ Configurar notificação e alerta
+ Configurar relatórios consolidados

## Pré-requisitos e limitações
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-prereqs"></a>

**Pré-requisitos **
+ AWS Config ativado em todas as regiões e contas que devem ser monitoradas

**Limitações**
+ O relatório gerado é compatível apenas com os formatos de saída de valores separados por vírgula (CSV) e JSON.

## Arquitetura
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-architecture"></a>

O diagrama a seguir mostra a AWS Organizations configuração com várias contas. AWS Config as regras se comunicam entre as contas.  

![\[Processo em cinco etapas para monitorar pilhas em duas contas do AWS Organizations.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/735d0987-b953-47f8-a9bc-b02a88957ee5/images/340cee9a-5a4e-49ea-bd73-d37dcea5e098.png)


 O fluxo de trabalho inclui as seguintes etapas:

1. A AWS Config regra detecta desvios.

1. Os resultados da detecção de desvios encontrados em outras contas são enviados para a conta gerencial.

1. A CloudWatch regra da Amazon chama uma AWS Lambda função.

1. A função Lambda consulta a AWS Config regra para obter resultados agregados.

1. A função do Lambda notifica o Amazon Simple Notification Service (Amazon SNS), que envia um e-mail informando sobre o desvio.

**Automação e escala**

A solução apresentada aqui pode ser dimensionada para regiões e contas adicionais.

## Ferramentas
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-tools"></a>

**Serviços da AWS**
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)fornece uma visão detalhada da configuração dos AWS recursos em seu Conta da AWS. Isso inclui como os recursos estão relacionados um com o outro e como eles foram configurados no passado, de modo que você possa ver como os relacionamentos e as configurações foram alterados ao longo do tempo.
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

## Épicos
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-epics"></a>

### Automatize a detecção de desvios para CloudFormation
<a name="automate-drift-detection-for-cfn"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o agregador. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.html) | Arquiteto de nuvem | 
| Crie uma regra AWS gerenciada. | Adicione a regra `cloudformation-stack-drift-detection-check` AWS**** gerenciada. A regra precisa de um valor de parâmetro: `cloudformationArn`. Insira o nome do recurso da Amazon (ARN) do perfil do IAM que tem permissões para detectar desvio de pilha. A função deve ter uma política de confiança que AWS Config permita assumir a função. | Arquiteto de nuvem | 
| Crie a seção de consulta avançada do agregador. | Para buscar pilhas derivadas de várias fontes, crie a seguinte consulta:<pre>SELECT resourceId, configuration.driftInformation.stackDriftStatus WHERE resourceType = 'AWS::CloudFormation::Stack'  AND configuration.driftInformation.stackDriftStatus IN ('DRIFTED')</pre> | Arquiteto de nuvem, desenvolvedor | 
| Automatize a execução da consulta e publique. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.html) | Arquiteto de nuvem, desenvolvedor | 
| Crie uma CloudWatch regra. | Crie uma CloudWatch regra baseada em agendamento para chamar a função Lambda, que é responsável pelos alertas. | Arquiteto de nuvem | 

## Recursos relacionados
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-resources"></a>

**Recursos**
+ [O que é AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+ [Agregação de dados de várias regiões e várias contas](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html)
+ [Detectar alterações de configuração não gerenciadas em pilhas e recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html)
+ [IAM: passe uma função do IAM para uma função específica AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam-passrole-service.html)
+ [O que é o Amazon SNS?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)

## Mais informações
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-additional"></a>

**Considerações**

Recomendamos usar a solução apresentada nesse padrão em vez de usar soluções personalizadas que envolvam chamadas de API em intervalos específicos para iniciar a detecção de desvios em cada pilha ou conjunto de CloudFormation pilhas. As soluções personalizadas que usam chamadas de API em intervalos específicos podem gerar um grande número de chamadas e afetar a performance. Devido ao número de chamadas de API, pode ocorrer controle de utilização. Outro problema potencial é um atraso na detecção se as alterações de recursos forem identificadas com base somente no cronograma.

Como os conjuntos de pilhas são constituídos por pilhas, você pode usar esta solução. Os detalhes da instância de pilhas também estão disponíveis como parte da solução.

## Anexos
<a name="attachments-735d0987-b953-47f8-a9bc-b02a88957ee5"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/735d0987-b953-47f8-a9bc-b02a88957ee5/attachments/attachment.zip)

# Importe com sucesso um bucket do S3 como uma pilha da AWS CloudFormation
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack"></a>

*Ram Kandaswamy, Amazon Web Services*

## Resumo
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-summary"></a>

Se você usa recursos da Amazon Web Services (AWS), como buckets do Amazon Simple Storage Service (Amazon S3), e quer usar uma abordagem de infraestrutura como código (IaC), você pode importar seus recursos para a CloudFormation AWS e gerenciá-los como uma pilha.

Esse padrão fornece etapas para importar com sucesso um bucket do S3 como uma CloudFormation pilha da AWS. Ao usar essa abordagem padrão, você pode evitar possíveis erros que possam ocorrer se você importar seu bucket do S3 em uma única ação.

## Pré-requisitos e limitações
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um bucket S3 existente e uma política de bucket S3. Para obter mais informações sobre isso, consulte [Qual política de bucket do S3 devo usar para cumprir a regra s3- do AWS Config bucket-ssl-requests-only no Centro de Conhecimento](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-policy-for-config-rule/) da AWS.
+ Uma chave do AWS Key Management Service (AWS KMS) existente e seu alias. Para obter mais informações sobre isso, consulte [Trabalho com aliases](https://docs.aws.amazon.com/kms/latest/developerguide/programming-aliases.html) na documentação do AWS KMS.
+ O CloudFormation modelo de amostra `CloudFormation-template-S3-bucket` da AWS (anexado), baixado para seu computador local.

## Arquitetura
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-architecture"></a>

![\[Fluxo de trabalho para usar o CloudFormation modelo para criar uma CloudFormation pilha para importar um bucket S3.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/aea7f6fe-8e67-46c4-8b90-1ab06b879111/images/ee143374-a0a4-42d9-b7ca-16593a597a84.png)


 

O diagrama mostra o seguinte fluxo de trabalho:

1. O usuário cria um modelo da AWS em formato JSON ou YAML. CloudFormation 

1. O modelo cria uma CloudFormation pilha da AWS para importar o bucket do S3.

1. O AWS CloudFormation stack gerencia o bucket S3 que você especificou no modelo.

**Pilha de tecnologia**
+ AWS CloudFormation
+ AWS Identity and Access Management (IAM)
+ AWS KMS
+ Amazon S3

 

**Ferramentas**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — CloudFormation A AWS ajuda você a criar e provisionar implantações de infraestrutura da AWS de forma previsível e repetida.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html): o IAM é um serviço web para controlar, com segurança, o acesso a serviços da AWS.
+ [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html): o AWS Key Management Service (AWS KMS) é um serviço de criptografia e gerenciamento de chave com escalabilidade para a nuvem.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html): o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet.

## Épicos
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-epics"></a>

### Importe um bucket S3 com criptografia AWS KMS key baseada como uma pilha da AWS CloudFormation
<a name="import-an-s3-bucket-with-kms-key-long--based-encryption-as-an-aws-cloudformation-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um modelo para a importação do bucket do S3 e da chave do KMS. | No seu computador local, crie um modelo para importar o bucket do S3 e a chave do KMS usando o seguinte modelo de amostra:<pre>AWSTemplateFormatVersion: 2010-09-09<br /><br />Parameters:<br /><br />  bucketName:<br /><br />    Type: String<br /><br />Resources:<br /><br />  S3Bucket:<br /><br />    Type: 'AWS::S3::Bucket'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties:<br /><br />      BucketName: !Ref bucketName<br /><br />      BucketEncryption:<br /><br />        ServerSideEncryptionConfiguration:<br /><br />          - ServerSideEncryptionByDefault:<br /><br />              SSEAlgorithm: 'aws:kms'<br /><br />              KMSMasterKeyID: !GetAtt <br /><br />                - KMSS3Encryption<br /><br />                - Arn<br /><br />  KMSS3Encryption:<br /><br />    Type: 'AWS::KMS::Key'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties:<br /><br />      Enabled: true<br /><br />      KeyPolicy: !Sub |-<br /><br />        {<br /><br />            "Id": "key-consolepolicy-3",<br /><br />            "Version": "2012-10-17",		 	 	 <br /><br />            "Statement": [<br /><br />                {<br /><br />                    "Sid": "Enable IAM User Permissions",<br /><br />                    "Effect": "Allow",<br /><br />                    "Principal": {<br /><br />                        "AWS": ["arn:aws:iam::${AWS::AccountId}:root"]<br /><br />                    },<br /><br />                    "Action": "kms:*",<br /><br />                    "Resource": "*"<br /><br />                }<br /><br />                }<br /><br />            ]<br /><br />        }<br /><br />      EnableKeyRotation: true</pre> | AWS DevOps | 
| Crie a pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html) | AWS DevOps | 
| Crie o alias da chave KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>KMSS3EncryptionAlias:<br /><br />    Type: 'AWS::KMS::Alias'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties: <br /><br />    AliasName: alias/S3BucketKey<br /><br />    TargetKeyId: !Ref KMSS3Encryption</pre>Para obter mais informações sobre isso, consulte [as atualizações do AWS CloudFormation Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) na CloudFormation documentação da AWS.  | AWS DevOps | 
| Atualize a pilha para incluir a política de bucket do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>S3BucketPolicy:<br /><br />  Type: 'AWS::S3::BucketPolicy'<br /><br />  Properties:<br /><br />    Bucket: !Ref S3Bucket<br /><br />    PolicyDocument: !Sub |-<br /><br />      {<br /><br />                  "Version": "2008-10-17",		 	 	 <br /><br />                  "Id": "restricthttp",<br /><br />                  "Statement": [<br /><br />                      {<br /><br />                          "Sid": "denyhttp",<br /><br />                          "Effect": "Deny",<br /><br />                          "Principal": {<br /><br />                              "AWS": "*"<br /><br />                          },<br /><br />                          "Action": "s3:*",<br /><br />                          "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"],<br /><br />                          "Condition": {<br /><br />                              "Bool": {<br /><br />                                  "aws:SecureTransport": "false"<br /><br />                              }<br /><br />                          }<br /><br />                      }<br /><br />                  ]<br /><br />              }</pre>Esta política de bucket do S3 conta com uma instrução de negação que restringe chamadas de API que não sejam seguras.  | AWS DevOps | 
| Atualize a política de chaves. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)Para obter mais informações, consulte [Key policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) na documentação do AWS KM. | Administrador da AWS | 
| Adicione tags em nível de recurso. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>Tags:<br /><br />  - Key: createdBy<br /><br />    Value: Cloudformation</pre> | AWS DevOps | 

## Recursos relacionados
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-resources"></a>
+ [Trazendo recursos existentes para o CloudFormation gerenciamento da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html)
+ [AWS re:Invent 2017: aprofundamento na AWS CloudFormation](https://www.youtube.com/watch?v=01hy48R9Kr8) (vídeo)

## Anexos
<a name="attachments-aea7f6fe-8e67-46c4-8b90-1ab06b879111"></a>

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo:[ attachment.zip](samples/p-attach/aea7f6fe-8e67-46c4-8b90-1ab06b879111/attachments/attachment.zip)

# Sincronize dados entre sistemas de arquivos Amazon EFS em diferentes regiões da AWS usando a AWS DataSync
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync"></a>

*Sarat Chandra Pothula e Aditya Ambati, Amazon Web Services*

## Resumo
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-summary"></a>

Esta solução fornece uma estrutura robusta para a sincronização eficiente e segura de dados entre instâncias do Amazon Elastic File System (Amazon EFS) em diferentes regiões da AWS. Esta abordagem é escalável e oferece replicação de dados entre regiões com controle total. Com esta solução, é possível fortalecer suas estratégias de redundância de dados e recuperação de desastres.

Ao usar o AWS Cloud Development Kit (AWS CDK), este padrão adota a abordagem de infraestrutura como código (IaC) para implantar os recursos da solução. O aplicativo AWS CDK implanta os recursos essenciais da AWS, DataSync Amazon EFS, Amazon Virtual Private Cloud (Amazon VPC) e Amazon Elastic Compute Cloud (Amazon). EC2 Esta IaC fornece um processo de implantação repetível e controlado por versão, totalmente alinhado às práticas recomendadas da AWS.

## Pré-requisitos e limitações
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ AWS Command Line Interface (AWS CLI), versão 2.9.11 ou versões posteriores, [instalada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) e [configurada](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ AWS CDK, versão 2.114.1 ou versões posteriores, [instalado](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install) e [inicializado](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap)
+ NodeJS, versão 20.8.0 ou versões posteriores, [instalado](https://nodejs.org/en/download)

**Limitações**
+ A solução herda limitações do DataSync Amazon EFS, como taxas de transferência de dados, limitações de tamanho e disponibilidade regional. Para obter mais informações, consulte Cotas [da AWS e DataSync cotas](https://docs.aws.amazon.com/datasync/latest/userguide/datasync-limits.html) do [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/limits.html).
+ Essa solução é compatível somente com o Amazon EFS. DataSync oferece suporte a [outros serviços da AWS](https://docs.aws.amazon.com/datasync/latest/userguide/working-with-locations.html), como Amazon Simple Storage Service (Amazon S3) e FSx Amazon for Lustre. No entanto, a solução precisa ser adaptada para permitir a sincronização de dados com outros serviços da AWS.

## Arquitetura
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-architecture"></a>

![\[Diagrama da arquitetura para replicar dados para um sistema de arquivos do EFS em outra região.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e28ba6c2-ab8b-4812-932e-f038106d5496/images/18b35ae9-a22e-43e7-b7a3-30e40321c44e.png)


Esta solução implanta as seguintes pilhas do AWS CDK:
+ **Pilha da Amazon VPC**: esta pilha configura os recursos da nuvem privada virtual (VPC), incluindo sub-redes, um gateway da internet e um gateway NAT, tanto na região da AWS principal quanto na secundária.
+ **Pilha Amazon EFS** — Essa pilha implanta sistemas de arquivos Amazon EFS nas regiões primária e secundária e os conecta às suas respectivas regiões. VPCs
+ **Amazon EC2 stack** — Essa pilha inicia EC2 instâncias nas regiões primária e secundária. Essas instâncias são configuradas para montar o sistema de arquivos do Amazon EFS, garantindo acesso ao armazenamento compartilhado.
+ **DataSync pilha de localização** — Essa pilha usa uma construção personalizada chamada `DataSyncLocationConstruct` para criar recursos de DataSync localização nas regiões primária e secundária. Esses recursos definem os endpoints para a sincronização de dados.
+ **DataSync pilha de tarefas** — Essa pilha usa uma construção personalizada chamada `DataSyncTaskConstruct` para criar uma DataSync tarefa na região primária. Essa tarefa está configurada para sincronizar dados entre as regiões primária e secundária usando os locais de DataSync origem e destino.

## Ferramentas
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-tools"></a>

**Serviços da AWS**
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+  DataSyncA [AWS](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html) é um serviço on-line de transferência e descoberta de dados que ajuda você a mover arquivos ou dados de objetos de, para e entre os serviços de armazenamento da AWS.
+ [A Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fornece capacidade de computação escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) ajuda você a criar e configurar sistemas de arquivos compartilhados na Nuvem AWS.
+ A [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS.

**Repositório de código**

O código desse padrão está disponível no repositório do GitHub [Amazon EFS Cross-Region DataSync Project](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main).

## Práticas recomendadas
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-best-practices"></a>

Siga as melhores práticas descritas em [Melhores práticas para usar o AWS CDK TypeScript para criar projetos de IaC](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html).

## Épicos
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-epics"></a>

### Implantação da aplicação do AWS CDK
<a name="deploy-the-aws-cdk-app"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clone o repositório do projeto. | Insira o comando a seguir para clonar o repositório do [Amazon EFS Cross-Region DataSync Project](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main).<pre>git clone https://github.com/aws-samples/aws-efs-crossregion-datasync.git</pre> | AWS DevOps | 
| Instale as dependências do npm. | Insira o comando da a seguir.<pre>npm ci</pre> | AWS DevOps | 
| Escolha as regiões primária e secundária. | Acesse o repositório clonado e navegue até o diretório `src/infa`. No arquivo `Launcher.ts`, atualize os valores de `PRIMARY_AWS_REGION` e `SECONDARY_AWS_REGION`. Use os [códigos das regiões](https://docs.aws.amazon.com/general/latest/gr/datasync.html#datasync-region) correspondentes.<pre>const primaryRegion = { account: account, region: '<PRIMARY_AWS_REGION>' };<br />const secondaryRegion = { account: account, region: '<SECONDARY_AWS_REGION>' };</pre> | AWS DevOps | 
| Inicialize o ambiente do . | Digite o comando apresentado a seguir para inicializar a conta da AWS e a região da AWS que você deseja usar.<pre>cdk bootstrap <aws_account>/<aws_region></pre>Para obter mais informações, consulte [Inicialização](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) na documentação do AWS CDK. | AWS DevOps | 
| Liste as pilhas do AWS CDK. | Digite o comando apresentado a seguir para visualizar a lista de pilhas do AWS CDK na aplicação.<pre>cdk ls</pre> | AWS DevOps | 
| Sintetize as pilhas do AWS CDK. | Insira o comando a seguir para produzir um CloudFormation modelo da AWS para cada pilha definida no aplicativo AWS CDK.<pre>cdk synth</pre> | AWS DevOps | 
| Implante a aplicação do AWS CDK. | Digite o comando apresentado a seguir para implantar todas as pilhas na conta da AWS, sem precisar de aprovação manual para quaisquer alterações.<pre>cdk deploy --all --require-approval never</pre> | AWS DevOps | 

### Validação da implantação
<a name="validate-the-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Faça login na EC2 instância na região principal. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| Criar um arquivo temporário. | Digite o comando apresentado a seguir para criar um arquivo temporário no caminho de montagem do Amazon EFS.<pre>sudo dd if=/dev/zero \<br />of=tmptst.dat \<br />bs=1G \<br />seek=5 \<br />count=0<br /><br />ls -lrt tmptst.dat</pre> | AWS DevOps | 
| Inicie a DataSync tarefa. | Insira o comando a seguir para replicar o arquivo temporário da região primária para a região secundária, onde `<ARN-task>` está o Amazon Resource Name (ARN) da DataSync sua tarefa.<pre>aws datasync start-task-execution \<br />    --task-arn <ARN-task></pre>Este comando fornece o ARN da execução da tarefa no formato abaixo.`arn:aws:datasync:<region>:<account-ID>:task/task-execution/<exec-ID>` | AWS DevOps | 
| Verifique o status da transferência de dados. | Digite o comando a seguir para descrever a tarefa de DataSync execução, onde `<ARN-task-execution>` está o ARN da execução da tarefa.<pre>aws datasync describe-task-execution \<br />    --task-execution-arn <ARN-task-execution></pre>A DataSync tarefa é concluída quando`PrepareStatus`,`TransferStatus`, e `VerifyStatus` todas têm o valor`SUCCESS`. | AWS DevOps | 
| Faça login na EC2 instância na região secundária. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| Valide a replicação. | Insira o comando apresentado a seguir para confirmar que o arquivo temporário está presente no sistema de arquivos do Amazon EFS.<pre>ls -lrt<br />tmptst.dat</pre> | AWS DevOps | 

## Recursos relacionados
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-resources"></a>

**Documentação da AWS**
+ [Referência da API do AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/python/modules.html)
+ [Configurando DataSync transferências da AWS com o Amazon EFS](https://docs.aws.amazon.com/datasync/latest/userguide/create-efs-location.html)
+ [Solução de problemas com DataSync transferências da AWS](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync-locations-tasks.html)

**Outros recursos da AWS**
+ [AWS DataSync FAQs](https://aws.amazon.com/datasync/faqs/)

# Teste a AWS infraestrutura usando LocalStack e Terraform Tests
<a name="test-aws-infra-localstack-terraform"></a>

*Ivan Girardi e Ioannis Kalyvas, Amazon Web Services*

## Resumo
<a name="test-aws-infra-localstack-terraform-summary"></a>

Esse padrão ajuda você a testar localmente a infraestrutura como código (IaC) AWS no Terraform sem a necessidade de provisionar a infraestrutura em seu AWS ambiente. Ele integra a [estrutura do Terraform Tests](https://developer.hashicorp.com/terraform/language/tests) com. [LocalStack](https://github.com/localstack/localstack) O contêiner LocalStack Docker fornece um ambiente de desenvolvimento local que emula vários. Serviços da AWS Isso permite testar e iterar implantações de infraestrutura sem gerar custos na Nuvem AWS.

Essa solução oferece os seguintes benefícios:
+ **Otimização de custos** — a execução de testes LocalStack elimina a necessidade de uso Serviços da AWS. Isso evita que você incorra em custos associados à criação, operação e modificação desses AWS recursos.
+ **Velocidade e eficiência** — Testar localmente também é normalmente mais rápido do que implantar os AWS recursos. Esse ciclo de feedback rápido acelera o desenvolvimento e a depuração. Como LocalStack é executado localmente, você pode desenvolver e testar seus arquivos de configuração do Terraform sem uma conexão com a Internet. Você pode depurar arquivos de configuração do Terraform localmente e receber feedback imediato, o que agiliza o processo de desenvolvimento.
+ **Consistência e reprodutibilidade** — LocalStack fornece um ambiente consistente para testes. Essa consistência ajuda a garantir que os testes produzam os mesmos resultados, independentemente de AWS alterações externas ou problemas de rede.
+ **Isolamento** — Testar com LocalStack evita que você acidentalmente afete AWS recursos ativos ou ambientes de produção. Esse isolamento permite que você teste e experimente diversas configurações com segurança.
+ **Automação**: a integração com um pipeline de integração e de entrega contínua (CI/CD) possibilita o teste automático de [arquivos de configuração](https://developer.hashicorp.com/terraform/language/files) do Terraform. O pipeline realiza testes rigorosos na IaC antes da implantação.
+ **Flexibilidade** — você pode simular configurações diferentes Regiões da AWS e de serviço para se adequar melhor aos seus ambientes de produção. Contas da AWS

## Pré-requisitos e limitações
<a name="test-aws-infra-localstack-terraform-prereqs"></a>

**Pré-requisitos **
+ [Instalar o Docker](https://docs.docker.com/get-started/get-docker/)
+ [Habilite o acesso](https://docs.docker.com/reference/cli/dockerd/#daemon-socket-option) ao soquete padrão do Docker (`/var/run/docker.sock`). Para obter mais informações, consulte a [documentação do LocalStack ](https://docs.localstack.cloud/user-guide/aws/lambda/#migrating-to-lambda-v2).
+ [Instale](https://docs.docker.com/compose/install/) com o Docker Compose
+ [Instale](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) o Terraform na versão 1.6.0 ou em versões posteriores
+ [Instale](https://developer.hashicorp.com/terraform/cli) a CLI do Terraform
+ [Configurar](https://hashicorp.github.io/terraform-provider-aws/) o Terraform Provider AWS 
+ (Opcional) [Instale](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) o AWS Command Line Interface (AWS CLI). Para ver um exemplo de como usar o AWS CLI with LocalStack, consulte o repositório GitHub [Test AWS infrastructure using LocalStack and Terraform Tests](https://github.com/aws-samples/localstack-terraform-test).

**Limitações**
+ Esse padrão fornece exemplos explícitos para testar os recursos do Amazon Simple Storage Service (Amazon S3),, AWS Lambda e AWS Step Functions do Amazon DynamoDB. No entanto, você pode estender essa solução para incluir AWS recursos adicionais.
+ Esse padrão fornece instruções para executar testes do Terraform localmente, mas você pode integrar os testes em qualquer CI/CD pipeline.
+ Esse padrão fornece instruções para usar a imagem LocalStack da comunidade. Se você estiver usando a imagem LocalStack Pro, consulte a [documentação do LocalStack Pro](https://hub.docker.com/r/localstack/localstack-pro).
+ LocalStack fornece serviços de emulação para diferentes. AWS APIs Para obter uma lista completa, consulte [AWS Service Feature Coverage](https://docs.localstack.cloud/user-guide/aws/feature-coverage/). Alguns recursos avançados podem exigir uma assinatura do LocalStack Pro.

## Arquitetura
<a name="test-aws-infra-localstack-terraform-architecture"></a>

O diagrama apresentado a seguir ilustra a arquitetura para esta solução. Os componentes principais são um repositório de código-fonte, um CI/CD pipeline e um contêiner LocalStack Docker. O LocalStack Docker Container hospeda o seguinte Serviços da AWS localmente:
+ Um bucket do Amazon S3 para armazenar arquivos
+ Amazon CloudWatch para monitoramento e registro
+ Uma AWS Lambda função para executar código sem servidor
+ Uma máquina de AWS Step Functions estado para orquestrar fluxos de trabalho em várias etapas
+ Uma tabela do Amazon DynamoDB para armazenar dados NoSQL

![\[Um CI/CD pipeline cria e testa o contêiner LocalStack Docker e os recursos da AWS.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/34bfbdbf-14e7-42a0-9022-c85a9c30cdcd/images/dc61fac9-b92c-4841-9132-ff8bb865eed9.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Você adiciona e confirma um arquivo de configuração do Terraform no repositório de código-fonte.

1. O CI/CD pipeline detecta as alterações e inicia um processo de construção para análise estática do código do Terraform. O pipeline cria e executa o contêiner LocalStack Docker. Depois disso, o pipeline dá início à execução dos testes.

1. O pipeline carrega um objeto em um bucket do Amazon S3 que está hospedado no contêiner LocalStack do Docker.

1. O upload do objeto invoca uma função. AWS Lambda 

1. A função Lambda armazena a notificação de eventos do Amazon S3 em um log. CloudWatch 

1. A função Lambda inicia uma máquina de AWS Step Functions estado.

1. A máquina de estado grava o nome do objeto do Amazon S3 em uma tabela do DynamoDB.

1. O processo de teste no CI/CD pipeline verifica se o nome do objeto carregado corresponde à entrada na tabela do DynamoDB. Também verifica se o bucket do S3 foi implantado com o nome especificado e se a AWS Lambda função foi implantada com sucesso.

## Ferramentas
<a name="test-aws-infra-localstack-terraform-tools"></a>

**Serviços da AWS**
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)é um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.

**Outras ferramentas**
+ O [Docker](https://www.docker.com/) é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres.
+ O [Docker Compose](https://docs.docker.com/compose/) é uma ferramenta para definir e executar aplicações com diversos contêineres.
+ [LocalStack](https://localstack.cloud)é um emulador de serviços em nuvem executado em um único contêiner. Ao usar LocalStack, você pode executar cargas de trabalho em sua máquina local que usam Serviços da AWS, sem se conectar ao Nuvem AWS.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de IaC HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ O [Terraform Tests](https://developer.hashicorp.com/terraform/language/tests) auxilia na validação das atualizações na configuração de módulos do Terraform por meio de testes semelhantes a testes de integração ou a testes de unidade.

**Repositório de código**

O código desse padrão está disponível na [AWS infraestrutura de GitHub teste usando LocalStack o repositório Terraform Tests](https://github.com/aws-samples/localstack-terraform-test).

## Práticas recomendadas
<a name="test-aws-infra-localstack-terraform-best-practices"></a>
+ Essa solução testa a AWS infraestrutura especificada nos arquivos de configuração do Terraform e não implanta esses recursos no Nuvem AWS. Se você deseja implantar os recursos, siga o [princípio de privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) (documentação do IAM) e [configure corretamente o backend do Terraform](https://developer.hashicorp.com/terraform/language/backend) (documentação do Terraform).
+ Ao fazer a integração LocalStack em um CI/CD pipeline, recomendamos que você não execute o contêiner do LocalStack Docker no modo privilegiado. Para obter mais informações, consulte [Privilégio de tempo de execução e recursos do Linux](https://docs.docker.com/engine/containers/run/#runtime-privilege-and-linux-capabilities) (documentação do Docker) e [Segurança para executores autogerenciados](https://docs.gitlab.com/runner/security/) (documentação). GitLab 

## Épicos
<a name="test-aws-infra-localstack-terraform-epics"></a>

### Implante a solução
<a name="deploy-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Em um shell bash, insira o comando a seguir. Isso clona a [AWS infraestrutura de teste usando LocalStack o repositório Terraform Tests](https://github.com/aws-samples/localstack-terraform-test) de: GitHub<pre>git clone https://github.com/aws-samples/localstack-terraform-test.git</pre> | DevOps engenheiro | 
| Execute o LocalStack contêiner. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | DevOps engenheiro | 
| Inicializar o Terraform. | Insira o seguinte comando para inicializar o Terraform:<pre>terraform init</pre> | DevOps engenheiro | 
| Execute o Terraform Tests. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | DevOps engenheiro | 
| Limpe recursos. | Digite o seguinte comando para destruir o LocalStack contêiner:<pre>docker-compose down</pre> | DevOps engenheiro | 

## Solução de problemas
<a name="test-aws-infra-localstack-terraform-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Resultado `Error: reading DynamoDB Table Item (Files\|README.md): empty` retornado durante a execução do comando `terraform test`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | 

## Recursos relacionados
<a name="test-aws-infra-localstack-terraform-resources"></a>
+ [Introdução ao Terraform: orientação AWS CDK e orientação para AWS CloudFormation especialistas](https://docs.aws.amazon.com/prescriptive-guidance/latest/getting-started-terraform/introduction.html) (orientação AWS prescritiva)
+ [Melhores práticas para usar o Terraform AWS Provider](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/introduction.html) (orientação AWS prescritiva)
+ [Terraform CI/CD e testes AWS com o novo Terraform Test Framework](https://aws.amazon.com/blogs/devops/terraform-ci-cd-and-testing-on-aws-with-the-new-terraform-test-framework/) (AWS postagem no blog)
+ [Acelerando a entrega de software usando o LocalStack Cloud Emulator de AWS Marketplace](https://aws.amazon.com/blogs/awsmarketplace/accelerating-software-delivery-localstack-cloud-emulator-aws-marketplace/) (AWS postagem no blog)

## Mais informações
<a name="test-aws-infra-localstack-terraform-additional"></a>

**Integração com GitHub ações**

Você pode integrar LocalStack e realizar testes do Terraform em um CI/CD pipeline usando o GitHub Actions. Para obter mais informações, consulte a [documentação de GitHub ações](https://docs.github.com/en/actions). Veja a seguir um exemplo de arquivo de configuração de GitHub ações:

```
name: LocalStack Terraform Test

on:
  push:
    branches:
      - '**'

  workflow_dispatch: {}

jobs:
  localstack-terraform-test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4

    - name: Build and Start LocalStack Container
      run: |
        docker compose up -d

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3
      with:
        terraform_version: latest

    - name: Run Terraform Init and Validation
      run: |
        terraform init
        terraform validate
        terraform fmt --recursive --check
        terraform plan
        terraform show

    - name: Run Terraform Test
      run: |
        terraform test

    - name: Stop and Delete LocalStack Container
      if: always()
      run: docker compose down
```

# Atualize os clusters do SAP Pacemaker de para ENSA1 ENSA2
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2"></a>

*Gergely Cserdi e Balazs Sandor Skublics, Amazon Web Services*

## Resumo
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-summary"></a>

Esse padrão explica as etapas e as considerações para atualizar um cluster SAP Pacemaker baseado no Standalone Enqueue Server () para. ENSA1 ENSA2 As informações desse padrão se aplicam aos sistemas operacionais SUSE Linux Enterprise Server (SLES) e Red Hat Enterprise Linux (RHEL).

Os clusters Pacemaker no SAP NetWeaver 7.52 ou S/4HANA 1709 e versões anteriores são executados em uma ENSA1 arquitetura e são configurados especificamente para o. ENSA1 Se você executa suas cargas de trabalho do SAP na Amazon Web Services (AWS) e está interessado em migrar para lá ENSA2, talvez descubra que a documentação do SAP, SUSE e RHEL não fornece informações abrangentes. Esse padrão descreve as etapas técnicas necessárias para reconfigurar os parâmetros do SAP e os clusters do Pacemaker para o upgrade. ENSA1 ENSA2 Ele fornece exemplos de sistemas SUSE, mas o conceito é o mesmo para clusters RHEL.

**nota**  
ENSA1 e ENSA2 são conceitos que dizem respeito somente aos aplicativos SAP, portanto, as informações nesse padrão não se aplicam ao SAP HANA ou a outros tipos de clusters.

**nota**  
Tecnicamente, ENSA2 pode ser usado com ou sem o Enqueue Replicator 2. No entanto, a alta disponibilidade (HA) e a automação de failover (por meio de uma solução de cluster) exigem o Enqueue Replicator 2. Esse padrão usa o termo *ENSA2 clusters* para se referir a clusters com Standalone Enqueue Server 2 e Enqueue Replicator 2.

## Pré-requisitos e limitações
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-prereqs"></a>

**Pré-requisitos **
+ Um cluster funcional ENSA1 que usa Pacemaker e Corosync no SLES ou no RHEL.
+ Pelo menos duas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) em que as instâncias (ABAP) do SAP Central Services (ASCS/SCS) e do Enqueue Replication Server (ERS) estão em execução.
+ Conhecimento de gerenciamento de aplicativos e clusters SAP.
+ Acesso ao ambiente Linux como usuário raiz.

**Limitações**
+ ENSA1clusters baseados oferecem suporte somente a uma arquitetura de dois nós.
+ ENSA2clusters baseados não podem ser implantados em NetWeaver versões do SAP anteriores à 7.52.
+ EC2 instâncias em clusters devem estar em diferentes zonas de disponibilidade da AWS.

**Versões do produto**
+ SAP NetWeaver versão 7.52 ou posterior
+ A partir do S/4HANA 2020, somente clusters são suportados ENSA2 
+ Kernel 7.53 ou posterior, que suporta o Enqueue ENSA2 Replicator 2
+ SLES para aplicativos SAP versão 12 ou superior
+ RHEL para SAP com alta disponibilidade (HA) versão 7.9 ou superior

## Arquitetura
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-architecture"></a>

**Pilha de tecnologia de origem**
+ SAP NetWeaver 7.52 com SAP Kernel 7.53 ou posterior
+ Sistema operacional SLES ou RHEL

**Pilha de tecnologias de destino**
+ SAP NetWeaver 7.52 com SAP Kernel 7.53 ou posterior, incluindo S/4HANA 2020 com plataforma ABAP
+ Sistema operacional SLES ou RHEL

**Arquitetura de destino**

O diagrama a seguir mostra uma configuração de HA ASCS/SCS e instâncias ERS com base em um ENSA2 cluster.

![\[Arquitetura HA para instâncias ERS ASCS/SCS e ERS em um ENSA2 cluster\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/c32560de-901f-4796-a6b3-c08c109b22c8/images/19501713-0ddf-4242-9ea3-90478200a19e.png)


**Comparação de ENSA2 clusters ENSA1 e clusters**

O SAP foi apresentado ENSA2 como sucessor do. ENSA1 Um cluster ENSA1 baseado oferece suporte a uma arquitetura de dois nós em que a ASCS/SCS instância faz o failover para o ERS quando ocorre um erro. Essa limitação decorre de como a ASCS/SCS instância recupera as informações da tabela de bloqueio da memória compartilhada do nó ERS após o failover. ENSA2clusters baseados com o Enqueue Replicator 2 eliminam essa limitação, porque a ASCS/SCS instância pode coletar as informações de bloqueio da instância ERS pela rede. ENSA2clusters baseados podem ter mais de dois nós, porque a ASCS/SCS instância não precisa mais fazer failover para o nó ERS. (No entanto, em um ambiente de ENSA2 cluster de dois nós, a ASCS/SCS instância ainda fará o failover para o nó ERS porque não há outros nós no cluster para os quais fazer o failover.) ENSA2 é suportado a partir do SAP Kernel 7.50 com algumas limitações. Para a configuração de HA compatível com o Enqueue Replicator 2, o requisito mínimo é NetWeaver 7,52 (consulte a nota 2630416 do [SAP OSS](https://launchpad.support.sap.com/#/notes/2630416)). O S/4HANA 1809 vem com a ENSA2 arquitetura recomendada por padrão, enquanto o S/4HANA oferece suporte somente a partir da versão 2020. ENSA2 

**Automação e escala**

O cluster HA na arquitetura de destino faz com que o ASCS faça o failover para outros nós automaticamente.

**Cenários para migrar para clusters ENSA2 baseados**

Há dois cenários principais para a atualização para clusters ENSA2 baseados: 
+ Cenário 1: Você opta por fazer o upgrade para o SAP ou a conversão S/4HANA ENSA2 sem acompanhamento, supondo que sua versão do SAP e a versão do Kernel sejam compatíveis. ENSA2
+ Cenário 2: Você passa para ENSA2 como parte de uma atualização ou conversão (por exemplo, para S/4HANA 1809 ou posterior) usando SUM.

A seção [Épicos](#upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics) aborda as etapas desses dois cenários. O primeiro cenário exige que você configure manualmente os parâmetros relacionados ao SAP antes de alterar a configuração do cluster para ENSA2. No segundo cenário, os binários e os parâmetros relacionados ao SAP são implantados pelo SUM, e sua única tarefa restante é atualizar a configuração do cluster para HA. Ainda recomendamos que você valide os parâmetros do SAP depois de usar o SUM. Na maioria dos casos, a conversão S/4HANA é o principal motivo para uma atualização do cluster.

## Ferramentas
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-tools"></a>
+ Para gerenciadores de pacotes do sistema operacional, recomendamos as ferramentas Zypper (para SLES) ou YUM (para RHEL).
+ Para gerenciamento de clusters, recomendamos os shells **crm** (para SLES) ou **pcs** (para RHEL).
+ Ferramentas de gerenciamento de instâncias SAP, como SAPControl.
+ (Opcional) Ferramenta SUM para atualização de conversão S/4HANA.

## Práticas recomendadas
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-best-practices"></a>
+ Para obter as melhores práticas de uso de workloads SAP na AWS, consulte o [SAP Lens](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html) para o AWS Well-Architected Framework.
+ Considere o número de nós de cluster (pares ou ímpares) em sua arquitetura de ENSA2 vários nós.
+ Configure o ENSA2 cluster para o SLES 15 em alinhamento com o padrão de certificação SAP S/4-HA-CLU 1.0.
+ Sempre salve ou faça backup do estado atual do cluster e do aplicativo antes de fazer o upgrade para o. ENSA2

## Épicos
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics"></a>

### Configure os parâmetros do SAP manualmente para ENSA2 (somente cenário 1)
<a name="configure-sap-parameters-manually-for-ensa2-scenario-1-only"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure os parâmetros no perfil padrão. | Se você quiser fazer o upgrade para ENSA2 enquanto permanece na mesma versão do SAP ou se a versão de destino for padronizada ENSA1, defina os parâmetros no perfil padrão (arquivo DEFAULT.PFL) com os seguintes valores.<pre>enq/enable=TRUE<br />enq/serverhost=sapascsvirt<br />enq/serverinst=10        (instance number of ASCS/SCS instance)<br />enque/process_location=REMOTESA<br />enq/replicatorhost=sapersvirt<br />enq/replicatorinst=11    (instance number of ERS instance)<br />  </pre>onde `sapascsvirt` é o nome do host virtual das instâncias do ASCS e `sapersvirt` é o nome do host virtual das instâncias do ERS. Você pode alterá-los para se adequar ao seu ambiente de destino.Para usar essa opção de upgrade, sua versão do SAP e do Kernel devem suportar o Enqueue ENSA2 Replicator 2. | SAP | 
| Configure o perfil da ASCS/SCS instância. | Se você quiser fazer o upgrade para ENSA2 a mesma versão do SAP ou se a versão de destino for padronizada ENSA1, defina os seguintes parâmetros no perfil da ASCS/SCS instância. A seção do perfil em que ENSA1 está definido se parece com a seguinte.<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_EN = en.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_EN) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enserver$(FT_EXE) $(_EN) <br />Start_Program_01 = local $(_EN) pf=$(_PF)<br />  </pre>Para reconfigurar esta seção para ENSA2:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)Essa sessão do perfil ficaria com algo semelhante ao seguinte após suas alterações.<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_ENQ = enq.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_ENQ) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enq_server$(FT_EXE) $(_ENQ) <br />Start_Program_01 = local $(_ENQ) pf=$(_PF) <br />... <br />enq/server/replication/enable = TRUE <br />Autostart = 0</pre>A opção de reinicialização não deve estar habilitada em `_ENQ`. Se `RestartProgram_01` estiver definido para `_ENQ`, altere-o para `StartProgram_01`. Isso impede que o SAP reinicie o serviço ou interfira nos recursos gerenciados pelo cluster. | SAP | 
| Configure o perfil ERS. | Se você quiser fazer o upgrade para ENSA2 a mesma versão do SAP ou se a versão de destino for padronizada ENSA1, defina os seguintes parâmetros no perfil da instância ERS.Encontre a seção em que o replicador de enqueue está definido. Ele será similar ao seguinte.<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ER = er.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_03 = local rm -f $(_ER) <br />Execute_04 = local ln -s -f $(DIR_EXECUTABLE)/enrepserver$(FT_EXE) $(_ER) <br />Start_Program_00 = local $(_ER) pf=$(_PF) NR=$(SCSID)<br />  </pre>Para reconfigurar esta seção para o Enqueue Replicator 2:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)Essa sessão do perfil deve parecer com algo semelhante ao seguinte após as alterações.<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ENQR = enqr.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_01 = local rm -f $(_ENQR) <br />Execute_02 = local ln -s -f $(DIR_EXECUTABLE)/enq_replicator$(FT_EXE) $(_ENQR) <br />Start_Program_00 = local $(_ENQR) pf=$(_PF) NR=$(SCSID) <br />… <br />Autostart = 0</pre>A opção de reinicialização não deve estar habilitada em `_ENQR`. Se `RestartProgram_01` estiver definido para `_ENQR`, altere-o para `StartProgram_01`. Isso impede que o SAP reinicie o serviço ou interfira nos serviços gerenciados por cluster. | SAP | 
| Reinicie o SAP Start Services. | Depois de alterar os perfis descritos anteriormente neste épico, reinicie o SAP Start Services para ambos ASCS/SCS e o ERS.`sapcontrol -nr 10 -function RestartService SCT``sapcontrol -nr 11 -function RestartService SCT`onde `SCT` se refere ao ID do sistema SAP e supondo que 10 e 11 sejam os números de instância para instâncias ASCS/SCS e ERS, respectivamente. | SAP | 

### Reconfigure o cluster para ENSA2 (necessário para ambos os cenários)
<a name="reconfigure-the-cluster-for-ensa2-required-for-both-scenarios"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Verifique os números de versão nos agentes de recursos do SAP. | Quando você usa o SUM para atualizar o SAP para o S/4HANA 1809 ou superior, o SUM manipula as alterações de parâmetros nos perfis do SAP. Somente o cluster requer ajuste manual. No entanto, recomendamos que você verifique as configurações dos parâmetros antes de fazer qualquer alteração no cluster.Os exemplos apresentados neste épico assumem que você usa o sistema operacional SUSE. Se você estiver usando o RHEL, precisará usar ferramentas como o YUM e o shell **pcs** em vez do Zypper e do **crm**.Verifique os dois nós na arquitetura para confirmar se o pacote `resource-agents` corresponde à versão mínima recomendada pela SAP. Para SLES, consulte SAP OSS Note 2641019. Para RHEL, consulte SAP OSS Note 2641322. (O SAP Notes exige uma [conta de usuário do SAP ONE Support Launchpad](https://support.sap.com/en/my-support/knowledge-base.html).)<pre>sapers:sctadm 23> zypper search -s -i resource-agents<br />Loading repository data...<br />Reading installed packages...<br />S | Name | Type | Version | Arch | Repository<br />--+-----------------+---------+------------------------------------+--------+-----------------------------<br />i | resource-agents | package | 4.8.0+git30.d0077df0-150300.8.28.1 | x86_64 | SLE-Product-HA15-SP3-Updates</pre>Atualize a versão `resource-agents`, se necessário. | Administrador de sistemas AWS | 
| Faça backup da configuração do cluster. | Faça backup da configuração do cluster do CRM da seguinte maneira.`crm configure show > /tmp/cluster_config_backup.txt` | Administrador de sistemas AWS | 
| Definir o modo de manutenção. | Defina o cluster para o modo de manutenção.`crm configure property maintenance-mode="true"` | Administrador de sistemas AWS | 
| Verifique a configuração do cluster. | Verifique a configuração atual do cluster.`crm configure show`Aqui está um trecho da saída completa:<pre>node 1: sapascs<br />node 2: sapers<br />...<br />primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \ <br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10<br />primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000<br />...<br />colocation col_sap_SCT_no_both -5000: grp_SCT_ERS11 grp_SCT_ASCS10<br />location loc_sap_SCT_failover_to_ers rsc_sap_SCT_ASCS10 \<br />rule 2000: runs_ers_SCT eq 1<br />order ord_sap_SCT_first_start_ascs Optional: rsc_sap_SCT_ASCS10:start rsc_sap_SCT_ERS11:stop symmetrical=false<br />...</pre>onde `sapascsvirt` refere-se ao nome do host virtual para as instâncias ASCS, `sapersvirt` refere-se ao nome do host virtual para as instâncias ERS e `SCT` refere-se à ID do sistema SAP. | Administrador de sistemas AWS | 
| Remova a restrição de colocalização de failover. | No exemplo anterior, a restrição de localização `loc_sap_SCT_failover_to_ers` especifica que o ENSA1 recurso do ASCS deve sempre seguir a instância ERS após o failover. Com ENSA2, o ASCS deve ser capaz de realizar o failover livremente em qualquer nó participante, para que você possa remover essa restrição.`crm configure delete loc_sap_SCT_failover_to_ers` | Administrador de sistemas AWS | 
| Ajuste as primitivas. | Você também precisará fazer pequenas alterações nas SAPInstance primitivas ASCS e ERS.Aqui está um exemplo de uma SAPInstance primitiva ASCS configurada para. ENSA1<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10</pre>Para atualizar para ENSA2, altere essa configuração para a seguinte.<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=3000 </pre>Este é um exemplo de uma SAPInstance primitiva ERS configurada para ENSA1.<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000</pre>Para atualizar para ENSA2, altere essa configuração para a seguinte.<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true</pre>Você pode alterar as primitivas de várias maneiras. Por exemplo, você pode revisá-las em um editor como o vi, conforme exemplo a seguir.`crm configure edit rsc_sap_SCT_ERS11` | Administrador de sistemas AWS | 
| Desativar o modo de manutenção. | Desative o modo de manutenção no cluster.`crm configure property maintenance-mode="false"`Quando o cluster está fora do modo de manutenção, ele tenta colocar as instâncias ASCS e ERS on-line com as novas ENSA2 configurações. | Administrador de sistemas AWS | 

### (Opcional) Adicionar nós do cluster
<a name="optional-add-cluster-nodes"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Examine as melhores práticas. | Antes de adicionar mais nós, certifique-se de entender as práticas recomendadas, como usar um número par ou ímpar de nós. | Administrador de sistemas AWS | 
| Adicionar nós. | Adicionar mais nós envolve uma série de tarefas, como atualizar o sistema operacional, instalar pacotes de software que correspondam aos nós existentes e disponibilizar montagens. Você pode usar a opção **Preparar host adicional** no SAP Software Provisioning Manager (SWPM) para criar uma linha de base específica do SAP do host. Para obter mais informações, consulte os guias do SAP listados na próxima sessão. | Administrador de sistemas AWS | 

## Recursos relacionados
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-resources"></a>

**Referências SAP e SUSE**

Para acessar o SAP Notes, você deve ter uma conta de usuário do SAP ONE Support Launchpad. Para obter mais informações, consulte o [site do suporte do SAP](https://support.sap.com/en/my-support/knowledge-base.html).
+ [SAP Note 2501860 ‒ Documentação do SAP NetWeaver Application Server para ABAP 7.52](https://launchpad.support.sap.com/#/notes/2501860)
+ [SAP Note 2641019 ‒ Instalação ENSA2 e atualização de ENSA1 para ENSA2 no ambiente SUSE HA](https://launchpad.support.sap.com/#/notes/2641019)
+ [SAP Note 2641322 ‒ Instalação ENSA2 e atualização de ENSA1 para ENSA2 ao usar as soluções Red Hat HA para SAP](https://launchpad.support.sap.com/#/notes/2641322)
+ [Nota SAP 2711036 ‒ Uso do Standalone Enqueue Server 2 em um ambiente HA](https://launchpad.support.sap.com/#/notes/2711036)
+ [Standalone Enqueue Server 2](https://help.sap.com/docs/ABAP_PLATFORM/cff8531bc1d9416d91bb6781e628d4e0/902412f09e134f5bb875adb6db585c92.html) (documentação do SAP)
+ [SAP S/4 HANA ‒ Cluster de alta disponibilidade do Enqueue Replication 2 - Guia de configuração](https://documentation.suse.com/sbp/all/html/SAP_S4HA10_SetupGuide-SLE12/index.html) (documentação da SUSE)

**Referências da AWS**
+ [SAP HANA na AWS: guia de configuração de alta disponibilidade para SLES e RHEL](https://docs.aws.amazon.com/sap/latest/sap-hana/sap-hana-on-aws-ha-configuration.html)
+ [SAP Lens - AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html)

# Use zonas de disponibilidade consistentes VPCs em diferentes contas da AWS
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts"></a>

*Adam Spicer, Amazon Web Services*

## Resumo
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-summary"></a>

Na nuvem da Amazon Web Services (AWS), uma zona de disponibilidade tem um nome que pode variar entre suas contas da AWS e uma [ID de zona de disponibilidade (AZ ID) ](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)que identifica sua localização. Se você usa CloudFormation a AWS para criar nuvens privadas virtuais (VPCs), você deve especificar o nome ou ID da zona de disponibilidade ao criar as sub-redes. Se você criar VPCs em várias contas, o nome da zona de disponibilidade será aleatório, o que significa que as sub-redes usam zonas de disponibilidade diferentes em cada conta. 

Para usar a mesma zona de disponibilidade em todas as suas contas, você deve mapear o nome da zona de disponibilidade em cada conta para a mesma ID AZ. Por exemplo, o diagrama a seguir mostra que o ID AZ `use1-az6` é nomeado `us-east-1a` na conta A da AWS e `us-east-1c` na conta Z da AWS.

![\[A ID da zona de disponibilidade use1-az6 é chamada de us-east-1a na conta da AWS A e de us-east-1c na conta da AWS Z.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/23c8a37b-2408-4534-a1e0-bccfa4d7fbe3.png)


 

Esse padrão ajuda a garantir a consistência zonal fornecendo uma solução escalável e multicontas para usar as mesmas zonas de disponibilidade em suas sub-redes. A consistência zonal garante que seu tráfego de rede entre contas evite caminhos de rede entre zonas de disponibilidade, o que ajuda a reduzir os custos de transferência de dados e a diminuir a latência de rede entre suas cargas de trabalho.

Esse padrão é uma abordagem alternativa para a CloudFormation [AvailabilityZoneId propriedade](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-availabilityzoneid) da AWS.

## Pré-requisitos e limitações
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-prereqs"></a>

**Pré-requisitos **
+ Pelo menos duas contas ativas da AWS na mesma região da AWS.
+ Avalie quantas zonas de disponibilidade são necessárias para atender aos seus requisitos de VPC na região.
+ Identifique e registre a ID AZ para cada zona de disponibilidade que você precisa suportar. Para obter mais informações sobre isso, consulte [Zona de disponibilidade IDs para seus recursos da AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) na documentação do AWS Resource Access Manager.  
+ Uma lista ordenada e separada por vírgulas do seu AZ. IDs Por exemplo, a primeira zona de disponibilidade em sua lista é mapeada como `az1`, a segunda zona de disponibilidade é mapeada como `az2`, e essa estrutura de mapeamento continua até que sua lista separada por vírgulas esteja totalmente mapeada. Não há um número máximo de AZ IDs que possa ser mapeado. 
+ O `az-mapping.yaml` arquivo do repositório de [mapeamento da Zona de Disponibilidade de GitHub Várias Contas](https://github.com/aws-samples/multi-account-az-mapping/), copiado para sua máquina local

## Arquitetura
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-architecture"></a>

O diagrama a seguir mostra a arquitetura que é implantada em uma conta e que cria valores do AWS Systems Manager Parameter Store. Esses valores do Parameter Store são consumidos quando você cria uma VPC na conta.

![\[Fluxo de trabalho para criar valores do Systems Manager Parameter Store para cada ID de zona de disponibilidade (AZ) e armazenar o nome da AZ.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/f1168464-55f8-4efc-9b28-6a0cda668b9e.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. A solução desse padrão é implantada em todas as contas que exigem consistência zonal para uma VPC. 

1. A solução cria valores de armazenamento de parâmetros para cada ID de AZ e armazena o novo nome da zona de disponibilidade. 

1. O CloudFormation modelo da AWS usa o nome da zona de disponibilidade armazenado em cada valor do Parameter Store e isso garante a consistência zonal.

O diagrama a seguir mostra o fluxo de trabalho para criar uma VPC com a solução desse padrão.

 

![\[O fluxo de trabalho envia o CloudFormation modelo para criar uma VPC com o AZ correto. IDs\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/cd859430-ac25-479f-b56a-21da24cddf21.png)


 

O diagrama mostra o seguinte fluxo de trabalho:

1. Envie um modelo para criar uma VPC para a AWS. CloudFormation

1. A AWS CloudFormation resolve os valores do Parameter Store para cada zona de disponibilidade e retorna o nome da zona de disponibilidade para cada ID de AZ.

1. Uma VPC é criada com a AZ correta IDs necessária para a consistência zonal.

Depois de implantar a solução desse padrão, você poderá criar sub-redes que façam referência aos valores do Parameter Store. Se você usa a AWS CloudFormation, pode referenciar os valores dos parâmetros de mapeamento da zona de disponibilidade a partir do seguinte código de amostra formatado em YAML:

```
Resources:
    PrivateSubnet1AZ1: 
        Type: AWS::EC2::Subnet 
        Properties: 
            VpcId: !Ref VPC
            CidrBlock: !Ref PrivateSubnetAZ1CIDR
            AvailabilityZone: 
                !Join 
                    - ''
                    - - '{{resolve:ssm:/az-mapping/az1:1}}'
```

Esse código de exemplo está contido no `vpc-example.yaml ` arquivo do repositório de [mapeamento da Zona de Disponibilidade de GitHub Várias Contas](https://github.com/aws-samples/multi-account-az-mapping/). Ele mostra como criar uma VPC e sub-redes que se alinham aos valores do Parameter Store para obter consistência zonal.

**Pilha de tecnologia**
+ AWS CloudFormation
+ AWS Lambda
+ AWS Systems Manager Parameter Store

**Automação e escala**

Você pode implantar esse padrão em todas as suas contas da AWS usando a AWS CloudFormation StackSets ou a solução Customizations for AWS Control Tower. Para obter mais informações, consulte Como [trabalhar com a AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) na documentação do AWS Cloudformation e [Personalizações para o AWS Control Tower na Biblioteca de Soluções](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) da AWS. 

Depois de implantar o CloudFormation modelo da AWS, você pode atualizá-lo para usar os valores do Parameter Store e implantá-los VPCs em pipelines ou de acordo com seus requisitos. 

## Ferramentas
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-tools"></a>

**Serviços da AWS**
+  CloudFormationA [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) ajuda você a modelar e configurar seus recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida. Você pode usar um modelo para descrever seus recursos e as dependências deles, além de inicializá-los e configurá-los juntos como uma pilha, em vez de gerenciar recursos individualmente. Você pode gerenciar e provisionar pilhas em várias contas e regiões da AWS.
+ O [‭‬AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)‭ é um serviço de computação que permite a execução do código sem provisionar ou gerenciar servidores O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. Você paga apenas pelo tempo de computação consumido. Não haverá cobranças quando o código não estiver em execução.
+ [O AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) é um recurso do AWS Systems Manager. Oferece armazenamento hierárquico seguro para gerenciamento de dados de configuração e gerenciamento de segredos.

**Código **

O código desse padrão é fornecido no repositório de [mapeamento da Zona de Disponibilidade de GitHub Várias Contas](https://github.com/aws-samples/multi-account-az-mapping/).

## Épicos
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-epics"></a>

### Implante o arquivo az-mapping.yaml
<a name="deploy-the-az-mapping-yaml-file"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Determine as zonas de disponibilidade necessárias para a região. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.html) | Arquiteto de nuvem | 
| Implante o arquivo az-mapping.yaml | Use o `az-mapping.yaml` arquivo para criar uma CloudFormation pilha da AWS em todas as contas da AWS necessárias. No parâmetro `AZIds`, use a lista separada por vírgulas que você criou anteriormente. Recomendamos que você use a [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) ou a solução [Customizations for AWS Control Tower](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/). | Arquiteto de nuvem | 

### Implemente o VPCs em suas contas
<a name="deploy-the-vpcs-in-your-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Personalize os CloudFormation modelos da AWS. | Ao criar as sub-redes usando a AWS CloudFormation, personalize os modelos para usar os valores do Parameter Store que você criou anteriormente.Para ver um modelo de amostra, consulte o `vpc-example.yaml` arquivo no repositório de [mapeamento da Zona de Disponibilidade de GitHub Várias Contas](https://github.com/aws-samples/multi-account-az-mapping/). | Arquiteto de nuvem | 
| Implemente VPCs o. | Implante os CloudFormation modelos personalizados da AWS em suas contas. Cada VPC na região, então, tem consistência zonal nas zonas de disponibilidade usadas para as sub-redes | Arquiteto de nuvem | 

## Recursos relacionados
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-resources"></a>
+ [Zona de disponibilidade IDs para seus recursos da AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) (documentação do AWS Resource Access Manager)
+ [AWS::EC2::Subnet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html)( CloudFormation Documentação da AWS)

# Use o usuário IDs nas políticas do IAM para controle de acesso e automação
<a name="use-user-ids-iam-policies-access-control-automation"></a>

*Srinivas Ananda Babu e Ram Kandaswamy, Amazon Web Services*

## Resumo
<a name="use-user-ids-iam-policies-access-control-automation-summary"></a>

Esse padrão explica as possíveis armadilhas do uso de políticas baseadas em nome de usuário no AWS Identity and Access Management (IAM), os benefícios de usar o usuário IDs e como integrar essa abordagem à automação. AWS CloudFormation 

No Nuvem AWS, o serviço IAM ajuda você a gerenciar as identidades dos usuários e o controle de acesso com precisão. No entanto, a dependência de nomes de usuário na criação de políticas do IAM pode resultar em riscos de segurança inesperados e problemas de controle de acesso. Por exemplo, considere este cenário: um novo colaborador, chamado John Doe, começa a trabalhar na sua equipe e você cria uma conta de usuário do IAM com o nome de usuário `j.doe`, concedendo permissões por meio de políticas do IAM que fazem referência a nomes de usuários. Quando John é desligado da empresa, a conta é excluída. O problema começa quando uma nova colaboradora, chamada Jane Doe, entra para a equipe, e o nome de usuário `j.doe` é recriado. As políticas existentes concedem à Jane Doe as mesmas permissões que concediam ao John Doe. Isso pode gerar sérios problemas de segurança e de conformidade.

A atualização manual de cada política para refletir os novos detalhes dos usuários é um processo demorado e propenso a erros, especialmente com o crescimento da organização. A solução consiste em usar uma ID de usuário exclusiva e imutável. Ao criar uma conta de usuário do IAM, AWS atribui ao usuário do IAM um ID de usuário exclusivo (ou ID principal). Você pode usar esses usuários IDs em suas políticas do IAM para garantir um controle de acesso consistente e confiável que não seja afetado pelas alterações ou reutilização do nome de usuário.

Por exemplo, uma política do IAM que usa uma ID de usuário pode ter a seguinte aparência:

```
{ 
    "Version": "2012-10-17",		 	 	  
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": "s3:ListBucket", 
            "Resource": "arn:aws:s3:::example-bucket", 
            "Principal": { "AWS": "arn:aws:iam::123456789012:user/abcdef01234567890" } 
        } 
      ] 
}
```

Os benefícios de usar o usuário IDs nas políticas do IAM incluem:
+ **Exclusividade.** IDs Os usuários são únicos em todos Contas da AWS, portanto, fornecem uma aplicação de permissão correta e consistente.
+ **Imutabilidade.** O usuário IDs não pode ser alterado, portanto, ele fornece um identificador estável para referenciar usuários nas políticas.
+ **Auditoria e conformidade.** Serviços da AWS geralmente incluem o usuário IDs em registros e trilhas de auditoria, o que facilita o rastreamento de ações até usuários específicos.
+ **Automação e integração.** O uso de scripts IDs de AWS APIs entrada SDKs de usuário ou de automação garante que os processos permaneçam inalterados pelas alterações do nome de usuário.
+ **Preparação para o futuro.** Usar o usuário IDs nas políticas desde o início pode evitar possíveis problemas de controle de acesso ou extensas atualizações de políticas.

**Automação**

Quando você usa ferramentas de infraestrutura como código (IaC) AWS CloudFormation, como as armadilhas das políticas de IAM baseadas em nome de usuário, ainda podem causar problemas. O recurso de usuário do IAM retorna o nome de usuário quando você chama a função intrínseca `Ref`. À medida que a infraestrutura da sua organização evolui, o ciclo de criação e exclusão de recursos, incluindo as contas de usuário do IAM, pode gerar problemas de controle de acesso não intencionais, caso você reutilize nomes de usuário.

Para resolver esse problema, recomendamos que você incorpore o usuário IDs em seus CloudFormation modelos. No entanto, obter um usuário IDs para essa finalidade pode ser um desafio. É nesse ponto que os recursos personalizados podem ser úteis. Você pode usar recursos CloudFormation personalizados para ampliar a funcionalidade do serviço por meio da integração com AWS APIs ou de serviços externos. Ao criar um recurso personalizado que busca o ID do usuário de um determinado usuário do IAM, você pode disponibilizar o ID do usuário nos seus CloudFormation modelos. Essa abordagem simplifica o processo de referenciar o usuário IDs e garante que seus fluxos de trabalho de automação permaneçam robustos e preparados para o futuro.

## Pré-requisitos e limitações
<a name="use-user-ids-iam-policies-access-control-automation-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma função do IAM para um administrador de nuvem executar o CloudFormation modelo

**Limitações**
+ Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte a página [Cotas e endpoints de serviços](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

## Arquitetura
<a name="use-user-ids-iam-policies-access-control-automation-architecture"></a>

**Arquitetura de destino**

O diagrama a seguir mostra como CloudFormation usa um recurso personalizado apoiado por AWS Lambda para recuperar o ID de usuário do IAM.

![\[Obter o ID de usuário do IAM usando um recurso CloudFormation personalizado.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/71698647-274e-4911-92f0-549e444b53f6/images/7e507df4-f597-499e-bd5b-6d7a55e64146.png)


**Automação e escala**

Você pode usar o CloudFormation modelo várias vezes para contas diferentes Regiões da AWS . Você precisa executá-lo apenas uma vez em cada região ou conta.

## Ferramentas
<a name="use-user-ids-iam-policies-access-control-automation-tools"></a>

**Serviços da AWS**
+ [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) é um serviço web que ajuda você a controlar com segurança o acesso aos AWS recursos. Com o IAM, você controla quem pode se autenticar (fazer login) e quem tem autorização (permissões) para acessar os recursos.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)— AWS CloudFormation ajuda você a modelar e configurar seus AWS recursos para que você possa passar menos tempo gerenciando esses recursos e mais tempo se concentrando nos aplicativos que são executados AWS. Você cria um modelo que descreve os AWS recursos que você deseja e CloudFormation se encarrega de provisionar e configurar esses recursos para você.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)— AWS Lambda é um serviço de computação que oferece suporte à execução de código sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. 

## Práticas recomendadas
<a name="use-user-ids-iam-policies-access-control-automation-best-practices"></a>

Caso esteja começando do zero ou planejando uma implantação sem dependências anteriores, recomendamos o uso do [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) para o gerenciamento centralizado de usuários. O IAM Identity Center se integra aos seus provedores de identidade existentes (como Active Directory ou Okta) para federar identidades de usuários AWS, o que elimina a necessidade de criar e gerenciar usuários do IAM diretamente. Essa abordagem não apenas garante um controle de acesso consistente, mas também simplifica o gerenciamento do ciclo de vida do usuário e ajuda a aprimorar a segurança e a conformidade em todo o seu ambiente. AWS 

## Épicos
<a name="use-user-ids-iam-policies-access-control-automation-epics"></a>

### Validação das permissões
<a name="validate-permissions"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide sua função Conta da AWS e do IAM. | Confirme se você tem uma função do IAM com permissões para implantar CloudFormation modelos no seu Conta da AWS.Se você planeja usar o AWS CLI em vez do CloudFormation console para implantar o modelo na última etapa desse procedimento, você também deve configurar credenciais temporárias para executar AWS CLI comandos. Para obter instruções, consulte a [documentação do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli). | Arquiteto de nuvem | 

### Crie um CloudFormation modelo
<a name="build-a-cfnshort-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um CloudFormation modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html) | AWS DevOps, arquiteto de nuvem | 
| Adicione um parâmetro de entrada para o nome de usuário. | Adicione o código a seguir à `Parameters` seção do CloudFormation modelo:<pre>Parameters:<br />  NewIamUserName:<br />    Type: String<br />    Description: Unique username for the new IAM user<br /></pre>Este parâmetro solicita ao usuário o nome de usuário. | AWS DevOps, arquiteto de nuvem | 
| Adicione um recurso personalizado para criar um usuário do IAM. | Adicione o código a seguir à `Resources` seção do CloudFormation modelo:<pre>Resources:<br />  rNewIamUser:<br />    Type: 'AWS::IAM::User'<br />    Properties:<br />      UserName: !Ref NewIamUserName<br /></pre>Esse código adiciona um CloudFormation recurso que cria um usuário do IAM com o nome fornecido pelo `NewIamUserName` parâmetro. | AWS DevOps, arquiteto de nuvem | 
| Adicione um perfil de execução para a função do Lambda. | Nesta etapa, você cria uma função do IAM que concede uma permissão de AWS Lambda função para obter o IAM`UserId`. Especifique as seguintes permissões mínimas necessárias para que o Lambda seja executado:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html)Para obter instruções sobre como criar um perfil de execução, consulte a [documentação do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Este perfil será referenciado na próxima etapa, quando você criar a função do Lambda. | Administrador da AWS, arquiteto de nuvem | 
| Adicione uma função do Lambda para obter a `UserId` exclusiva do IAM. | Nesta etapa, você define uma função do Lambda com runtime do Python para obter a `UserId` exclusiva do IAM. Para fazer isso, adicione o código a seguir à `Resources` seção do CloudFormation modelo. Substitua `<<ROLENAME>>` pelo nome do perfil de execução que você criou na última etapa.<pre>  GetUserLambdaFunction:<br />    Type: 'AWS::Lambda::Function'<br />    Properties:<br />      Handler: index.handler<br />      Role: <<ROLENAME>><br />      Timeout: 30<br />      Runtime: python3.11<br />      Code:<br />        ZipFile: |<br />          import cfnresponse, boto3<br />          def handler(event, context):<br />            try:<br />              print(event)<br />              user = boto3.client('iam').get_user(UserName=event['ResourceProperties']['NewIamUserName'])['User']<br />              cfnresponse.send(event, context, cfnresponse.SUCCESS, {'NewIamUserId': user['UserId'], 'NewIamUserPath': user['Path'], 'NewIamUserArn': user['Arn']})<br />            except Exception as e:<br />              cfnresponse.send(event, context, cfnresponse.FAILED, {'NewIamUser': str(e)})<br /></pre> | AWS DevOps, arquiteto de nuvem | 
| Adicione um recurso personalizado. | Adicione o código a seguir à `Resources` seção do CloudFormation modelo:<pre>  rCustomGetUniqueUserId:<br />    Type: 'Custom::rCustomGetUniqueUserIdWithLambda'<br />    Properties:<br />      ServiceToken: !GetAtt GetUserLambdaFunction.Arn<br />      NewIamUserName: !Ref NewIamUserName<br /></pre>Este recurso personalizado chama a função do Lambda para obter a `UserID` do IAM. | AWS DevOps, arquiteto de nuvem | 
| Defina as CloudFormation saídas. | Adicione o código a seguir à `Outputs` seção do CloudFormation modelo:<pre>Outputs:<br />  NewIamUserId:<br />    Value: !GetAtt rCustomGetUniqueUserId.NewIamUserId<br /></pre>Isso exibe a `UserID` do IAM para o novo usuário do IAM. | AWS DevOps, arquiteto de nuvem | 
| Salve o modelo. | Salve suas alterações no CloudFormation modelo. | AWS DevOps, arquiteto de nuvem | 

### Implante o CloudFormation modelo
<a name="deploy-the-cfnshort-template"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o CloudFormation modelo. | Para implantar o `get_unique_user_id.yaml` modelo usando o CloudFormation console, siga as instruções na [CloudFormation documentação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).Como alternativa, você pode executar o seguinte AWS CLI comando para implantar o modelo:<pre>aws cloudformation create-stack \<br />--stack-name DemoNewUser \<br />--template-body file://get_unique_user_id.yaml \<br />--parameters ParameterKey=NewIamUserName,ParameterValue=demouser \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps, arquiteto de nuvem | 

## Recursos relacionados
<a name="use-user-ids-iam-policies-access-control-automation-resources"></a>
+ [Crie uma pilha a partir do CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (CloudFormation documentação)
+ [Recursos personalizados apoiados pelo Lambda (documentação](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html)) CloudFormation 
+ [Identificadores exclusivos](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) (documentação do IAM)
+ [Use credenciais temporárias com AWS recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) (documentação do IAM)

# Valide o código do Account Factory for Terraform (AFT) localmente
<a name="validate-account-factory-for-terraform-aft-code-locally"></a>

*Alexandru Pop e Michal Gorniak, Amazon Web Services*

## Resumo
<a name="validate-account-factory-for-terraform-aft-code-locally-summary"></a>

Esse padrão mostra como testar localmente o código do HashiCorp Terraform que é gerenciado pelo AWS Control Tower Account Factory for Terraform (AFT). O Terraform é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código. O AFT configura um pipeline do Terraform que ajuda você a provisionar e personalizar várias entradas Contas da AWS . AWS Control Tower

Durante o desenvolvimento do código, pode ser útil testar sua infraestrutura como código (IaC) do Terraform localmente, fora do pipeline do AFT. Este padrão mostra como fazer o seguinte:
+ Recupere uma cópia local do código do Terraform que está armazenado nos AWS CodeCommit repositórios da sua conta de gerenciamento do AFT.
+ Simular o pipeline AFT localmente usando o código recuperado.

Esse procedimento também pode ser usado para executar comandos do Terraform que não fazem parte do pipeline AFT normal. Por exemplo, você pode usar esse método para executar comandos como `terraform validate`, `terraform plan`, `terraform destroy` e `terraform import`.

## Pré-requisitos e limitações
<a name="validate-account-factory-for-terraform-aft-code-locally-prereqs"></a>

**Pré-requisitos **
+ Um ambiente ativo AWS de várias contas que usa [AWS Control Tower](https://aws.amazon.com/controltower)
+ Um [ambiente AFT](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html) totalmente implantado
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [AWS CLI auxiliar de credencial para AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html), instalado e configurado
+ Python 3.x
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), instalado e configurado em sua máquina local
+ Utilitário `git-remote-commit`, [instalado e configurado](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install)
+ [Terraform](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS), instalado e configurado (a versão local do pacote Terraform deve corresponder à versão usada na implantação do AFT)

**Limitações**
+ Esse padrão não abrange as etapas de implantação necessárias para AWS Control Tower o AFT ou qualquer módulo específico do Terraform.
+ A saída gerada localmente durante esse procedimento não é salva nos logs de runtime do pipeline AFT.

## Arquitetura
<a name="validate-account-factory-for-terraform-aft-code-locally-architecture"></a>

**Pilha de tecnologias de destino**
+ Infraestrutura AFT implantada em uma AWS Control Tower implantação
+ Terraform
+ Git
+ AWS CLI versão 2

**Automação e escala**

Esse padrão mostra como invocar localmente o código do Terraform para personalizações de contas globais AFT em um único AFT gerenciado. Conta da AWS Depois que seu código do Terraform for validado, você poderá aplicá-lo às contas restantes em seu ambiente de várias contas. Para obter mais informações, consulte [Reinvocar personalizações](https://docs.aws.amazon.com/controltower/latest/userguide/aft-account-customization-options.html#aft-re-invoke-customizations) na documentação. AWS Control Tower 

Você também pode usar um processo semelhante para executar personalizações de contas do AFT em um terminal local. Para invocar localmente o código do Terraform a partir das personalizações da conta AFT, clone o **aft-account-customizations**repositório em vez do repositório na sua conta de gerenciamento do **aft-global-account-customizations**AFT. CodeCommit 

## Ferramentas
<a name="validate-account-factory-for-terraform-aft-code-locally-tools"></a>

**Serviços da AWS**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)ajuda você a configurar e administrar um ambiente AWS com várias contas, seguindo as melhores práticas prescritivas.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.

**Outros serviços**
+ O [HashiCorp Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código.
+ O [Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto.

**Código **

Veja a seguir um exemplo de script bash que pode ser usado para executar localmente o código do Terraform gerenciado pelo AFT. Para usar o script, siga as instruções na seção [Épicos](#validate-account-factory-for-terraform-aft-code-locally-epics) desse padrão.

```
#! /bin/bash
# Version: 1.1 2022-06-24 Unsetting AWS_PROFILE since, when set, it interferes with script operation
#          1.0 2022-02-02 Initial Version
#
# Purpose: For use with AFT: This script runs the local copy of TF code as if it were running within AFT pipeline.
#        * Facilitates testing of what the AFT pipline will do 
#           * Provides the ability to run terraform with custom arguments (like 'plan' or 'move') which are currently not supported within the pipeline.
#
# © 2021 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.
# This AWS Content is provided subject to the terms of the AWS Customer Agreement
# available at http://aws.amazon.com/agreement or other written agreement between
# Customer and either Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.
#
# Note: Arguments to this script are passed directly to 'terraform' without parsing nor validation by this script.
#
# Prerequisites:
#    1. local copy of ct GIT repositories
#    2. local backend.tf and aft-providers.tf filled with data for the target account on which terraform is to be run
#       Hint: The contents of above files can be obtain from the logs of a previous execution of the AFT pipeline for the target account.
#    3. 'terraform' binary is available in local PATH
#    4. Recommended: .gitignore file containing 'backend.tf', 'aft_providers.tf' so the local copy of these files are not pushed back to git

readonly credentials=$(aws sts assume-role \
    --role-arn arn:aws:iam::$(aws sts get-caller-identity --query "Account" --output text ):role/AWSAFTAdmin \
    --role-session-name AWSAFT-Session \
    --query Credentials )

unset AWS_PROFILE
export AWS_ACCESS_KEY_ID=$(echo $credentials | jq -r '.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $credentials | jq -r '.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $credentials | jq -r '.SessionToken')
terraform "$@"
```

## Épicos
<a name="validate-account-factory-for-terraform-aft-code-locally-epics"></a>

### Salve o código de exemplo como um arquivo local
<a name="save-the-example-code-as-a-local-file"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Salve o código de exemplo como um arquivo local. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrador da AWS | 
| Torne o código de exemplo executável. | Abra uma janela de terminal e autentique-se em sua conta de gerenciamento do AWS AFT fazendo o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)Sua organização também pode ter uma ferramenta personalizada para fornecer credenciais de autenticação ao seu AWS ambiente. | Administrador da AWS | 
| Certifique-se de que você tem acesso à conta gerencial do AFT na Região da AWS correta. | Certifique-se de usar a mesma sessão de terminal com a qual você se autenticou na conta gerencial do AFT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrador da AWS | 
| Crie um novo diretório local para armazenar o código do repositório do AFT. | Na mesma sessão de terminal, execute os comandos a seguir:<pre>mkdir my_aft <br />cd my_aft</pre> | Administrador da AWS | 
| Clone o código do repositório do AFT remoto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrador da AWS | 

### Crie os arquivos de configuração do Terraform necessários para que o pipeline do AFT seja executado localmente
<a name="create-the-terraform-configuration-files-required-for-the-aft-pipeline-to-run-locally"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Abra um pipeline do AFT executado anteriormente e copie os arquivos de configuração do Terraform em uma pasta local. | Os arquivos de configuração `backend.tf` e `aft-providers.tf` criados neste épico são necessários para que o pipeline do AFT seja executado localmente. Esses arquivos são criados automaticamente no pipeline do AFT baseado em nuvem, mas devem ser criados manualmente para que o pipeline seja executado localmente. Para executar o pipeline do AFT localmente, é necessário um conjunto de arquivos que represente a operação do pipeline em uma única Conta da AWS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)**Exemplo de instrução backend.tf gerada automaticamente**<pre>## Autogenerated backend.tf ##<br />## Updated on: 2022-05-31 16:27:45 ##<br />terraform {<br />  required_version = ">= 0.15.0"<br />  backend "s3" {<br />    region         = "us-east-2"<br />    bucket         = "aft-backend-############-primary-region"<br />    key            = "############-aft-global-customizations/terraform.tfstate"<br />    dynamodb_table = "aft-backend-############"<br />    encrypt        = "true"<br />    kms_key_id     = "########-####-####-####-############"<br />    role_arn       = "arn:aws:iam::#############:role/AWSAFTExecution"<br />  }<br />}</pre>****Os `aft-providers.tf` arquivos `backend.tf` e estão vinculados a uma implantação e pasta específicas Conta da AWS do AFT. Esses arquivos também são diferentes, dependendo se eles estão no **aft-account-customizations**repositório **aft-global-customizations**e dentro da mesma implantação do AFT. Certifique-se de gerar os dois arquivos a partir da mesma listagem de runtime. | Administrador da AWS | 

### Execute o pipeline do AFT localmente usando o script bash de exemplo
<a name="run-the-aft-pipeline-locally-by-using-the-example-bash-script"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implemente as alterações de configuração do Terraform que você deseja validar. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrador da AWS | 
| Execute o script `ct_terraform.sh` e analise a saída. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)** **[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrador da AWS | 

### Envio por push das alterações de código locais para o repositório do AFT
<a name="push-your-local-code-changes-back-to-the-aft-repository"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione referências aos arquivos `backend.tf` e `aft-providers.tf` em um arquivo `.gitignore`. | Adicione os arquivos `backend.tf`** **e `aft-providers.tf` que você criou a um arquivo `.gitignore` executando os seguintes comandos:<pre>echo backend.tf >> .gitignore<br />echo aft-providers.tf >>.gitignore</pre>A migração dos arquivos ao arquivo** **f`.gitignore` garante que eles não sejam confirmados nem enviados por push para o repositório remoto do AFT. | Administrador da AWS | 
| Confirme e envie suas alterações de código para o repositório do AFT remoto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)As alterações de código que você introduz seguindo esse procedimento até esse ponto são aplicadas Conta da AWS somente a uma. | Administrador da AWS | 

### Implementação das alterações em várias contas
<a name="roll-out-the-changes-to-multiple-accounts"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implemente as alterações em todas as suas contas sob gerenciamento do AFT. | Para implementar as alterações em várias Contas da AWS que são gerenciadas pelo AFT, siga as instruções em [Reinvocar personalizações](https://docs.aws.amazon.com/controltower/latest/userguide/aft-account-customization-options.html#aft-re-invoke-customizations) na documentação. AWS Control Tower  | Administrador da AWS | 

# Mais padrões
<a name="infrastructure-more-patterns-pattern-list"></a>

**Topics**
+ [Adicione HA ao Oracle PeopleSoft no Amazon RDS Custom usando uma réplica de leitura](add-ha-to-oracle-peoplesoft-on-amazon-rds-custom-by-using-a-read-replica.md)
+ [Audite automaticamente grupos AWS de segurança que permitem acesso a partir de endereços IP públicos](audit-security-groups-access-public-ip.md)
+ [Automatize a criação de contas usando o Landing Zone Accelerator em AWS](automate-account-creation-lza.md)
+ [Automatizar a adição ou atualização de entradas de registro do Windows usando o AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatize a avaliação de recursos da AWS](automate-aws-resource-assessment.md)
+ [Automatize o portfólio e a implantação de produtos do AWS Service Catalog usando o AWS CDK](automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.md)
+ [Automatização do failover e do failback entre regiões usando o DR Orchestrator Framework](automate-cross-region-failover-and-failback-by-using-dr-orchestrator-framework.md)
+ [Automatize a exclusão de AWS CloudFormation pilhas e recursos associados](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatização da ingestão e da visualização de métricas personalizadas do Amazon MWAA no Amazon Managed Grafana usando o Terraform](automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.md)
+ [Automatize a configuração RabbitMQ no Amazon MQ](automate-rabbitmq-configuration-in-amazon-mq.md)
+ [Automatize a implantação de Cadeia de Suprimentos AWS data lakes em uma configuração de vários repositórios usando GitHub Actions, Artifactory e Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatize a replicação de instâncias do Amazon RDS em Contas da AWS](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Anexe automaticamente uma política gerenciada da AWS para Systems Manager aos perfis de EC2 instância usando o Cloud Custodian e o AWS CDK](automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.md)
+ [Crie CI/CD pipelines e clusters do Amazon ECS automaticamente para microsserviços usando o AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Detecte alterações automaticamente e inicie diferentes CodePipeline pipelines para um monorepo em CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Crie um pipeline de dados para ingerir, transformar e analisar dados do Google Analytics usando o AWS DataOps Development Kit](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Crie um PAC de servidor corporativo da Micro Focus com o Amazon EC2 Auto Scaling e o Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Crie e envie imagens do Docker para o Amazon ECR usando GitHub Actions e Terraform](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Crie uma AWS landing zone que inclua o MongoDB Atlas](build-aws-landing-zone-that-includes-mongodb-atlas.md)
+ [Centralização do gerenciamento das chaves de acesso do IAM no AWS Organizations usando o Terraform](centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.md)
+ [Centralização da distribuição de pacotes de software no AWS Organizations usando o Terraform](centralize-software-package-distribution-in-aws-organizations-by-using-terraform.md)
+ [Configure o registro de invocação de modelo no Amazon Bedrock usando AWS CloudFormation](configure-bedrock-invocation-logging-cloudformation.md)
+ [Configurar o roteamento somente leitura em um grupo de disponibilidade Always On (Sempre ativo) no SQL Server na AWS](configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.md)
+ [Crie um portal para microfrontends usando Angular e AWS Amplify Module Federation](create-amplify-micro-frontend-portal.md)
+ [Crie uma estrutura de orquestração de recursos baseada em API usando Actions e Terragrunt GitHub](create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.md)
+ [Crie uma EventBridge conexão entre contas da Amazon em uma organização](create-cross-account-amazon-eventbridge-connection-organization.md)
+ [Criar pipelines dinâmicos de CI para projetos Java e Python automaticamente](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Implante uma API do Amazon API Gateway em um site interno usando endpoints privados e um Application Load Balancer](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Implemente e gerencie AWS Control Tower controles usando AWS CDK e CloudFormation](deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.md)
+ [Implemente e gerencie AWS Control Tower controles usando o Terraform](deploy-and-manage-aws-control-tower-controls-by-using-terraform.md)
+ [Implante canários CloudWatch Synthetics usando o Terraform](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Implemente um cluster CockroachDB no Amazon EKS usando o Terraform](deploy-cockroachdb-on-eks-using-terraform.md)
+ [Implantação de um sistema de arquivos do Lustre para processamento de dados de alta performance usando o Terraform e a DRA](deploy-lustre-file-system-for-high-performance-data-processing-with-terraform-dra.md)
+ [Implemente um caso de uso do RAG AWS usando o Terraform e o Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Implante recursos em uma AWS Wavelength zona usando o Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Implante instâncias de cluster de failover do SQL Server na Amazon EC2 e na Amazon FSx usando o Terraform](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Implemente as automações de segurança para a AWS WAF solução usando o Terraform](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Detecção de instâncias de banco de dados do Amazon RDS e do Aurora com certificados CA prestes a expirar](detect-rds-instances-expiring-certificates.md)
+ [Documentação do projeto da sua Zona de Pouso da AWS](document-your-aws-landing-zone-design.md)
+ [Exporte relatórios do AWS Backup de toda a organização no AWS Organizations como um arquivo CSV](export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.md)
+ [Gere recomendações personalizadas e reclassificadas usando o Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Governança de conjuntos de permissões para várias contas usando o Account Factory para Terraform](govern-permission-sets-aft.md)
+ [Identifique e alerte quando os recursos do Amazon Data Firehose não estiverem criptografados com uma chave AWS KMS](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Implementação do Account Factory for Terraform (AFT) usando um pipeline de bootstrap](implement-account-factory-for-terraform-aft-by-using-a-bootstrap-pipeline.md)
+ [Implementação do versionamento de APIs baseado em caminhos usando domínios personalizados no Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Instale o agente SSM nos nós de trabalho do Amazon EKS usando o Kubernetes DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Instale o agente SSM e o CloudWatch agente nos nós de trabalho do Amazon EKS usando preBootstrapCommands](install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.md)
+ [Gerencie conjuntos de Centro de Identidade do AWS IAM permissões como código usando AWS CodePipeline](manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.md)
+ [Gerencie conjuntos de AWS permissões dinamicamente usando o Terraform](manage-aws-permission-sets-dynamically-by-using-terraform.md)
+ [Gerencie produtos do AWS Service Catalog em várias contas e regiões da AWS](manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions.md)
+ [Gerencie aplicativos de contêineres on-premises configurando o Amazon ECS Anywhere com o AWS CDK](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [Gerencie AWS Organizations políticas como código usando o AWS CodePipeline Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Migre registros de DNS em massa para uma zona hospedada privada do Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Migre o Oracle PeopleSoft para o Amazon RDS Custom](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Migre sistemas RHEL BYOL para instâncias com licença incluída da AWS usando o AWS MGN](migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.md)
+ [Configuração de um espaço de dados mínimo viável para compartilhar dados entre organizações](minimum-viable-data-space-share-data-organizations.md)
+ [Monitore ElastiCache clusters da Amazon para criptografia em repouso](monitor-amazon-elasticache-clusters-for-at-rest-encryption.md)
+ [Monitore a atividade do aplicativo usando o CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Monitoramento de clusters Pacemaker no RHEL para SAP por meio dos serviços da AWS](monitor-sap-rhel-pacemaker-clusters-by-using-aws-services.md)
+ [Crie uma arquitetura IPAM hierárquica e multirregional usando o Terraform AWS](multi-region-ipam-architecture.md)
+ [Otimize implantações sem servidor de várias contas usando os fluxos de trabalho e Actions AWS CDK GitHub](optimize-multi-account-serverless-deployments.md)
+ [Provisione AWS Service Catalog produtos com base em AWS CloudFormation modelos usando GitHub Ações](provision-aws-service-catalog-products-using-github-actions.md)
+ [Provisione funções do IAM com privilégios mínimos implantando uma solução de máquina de venda automática de funções](provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.md)
+ [Remova EC2 as entradas Contas da AWS da Amazon em frente AWS Managed Microsoft AD usando a AWS Lambda automação](remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.md)
+ [Remova EC2 as entradas da Amazon na mesma forma Conta da AWS AWS Managed Microsoft AD usando a AWS Lambda automação](remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.md)
+ [Transferências seguras de arquivos usando Transfer Family, Amazon Cognito e GuardDuty](secure-file-transfers.md)
+ [Enviar uma notificação quando um usuário do IAM for criado](send-a-notification-when-an-iam-user-is-created.md)
+ [Configuração de um roteador celular sem servidor para uma arquitetura baseada em células](serverless-cell-router-architecture.md)
+ [Configure um CI/CD pipeline para cargas de trabalho híbridas no Amazon ECS Anywhere usando o AWS CDK e GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Configure uma HA/DR arquitetura para o Oracle E-Business Suite no Amazon RDS Custom com um banco de dados ativo em espera](set-up-an-ha-dr-architecture-for-oracle-e-business-suite-on-amazon-rds-custom-with-an-active-standby-database.md)
+ [Configure a resolução de DNS para redes híbridas em um ambiente com várias contas AWS](set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.md)
+ [Configure a infraestrutura Multi-AZ para um SQL Server Always On FCI usando a Amazon FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Configure a funcionalidade Oracle UTL\$1FILE no Aurora compatível com PostgreSQL](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Autenticação simplificada de aplicações com TLS mútua no Amazon ECS usando o Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Simplificar o gerenciamento de certificados privados usando a CA privada da AWS e o AWS RAM](simplify-private-certificate-management-by-using-aws-private-ca-and-aws-ram.md)
+ [Simplifique os fluxos de trabalho de aprendizado de máquina, do desenvolvimento local aos experimentos escaláveis, usando SageMaker IA e Hydra](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Marque anexo do gateway de trânsito automaticamente usando o AWS Organizations](tag-transit-gateway-attachments-automatically-using-aws-organizations.md)
+ [Funções de transição para um PeopleSoft aplicativo Oracle no Amazon RDS Custom for Oracle](transition-roles-for-an-oracle-peoplesoft-application-on-amazon-rds-custom-for-oracle.md)
+ [Uso do Amazon Q Developer como um assistente de codificação para aumentar a produtividade](use-q-developer-as-coding-assistant-to-increase-productivity.md)

# Aplicações para web ou dispositivos móveis
<a name="websitesandwebapps-pattern-list"></a>

**Topics**
+ [Autenticação de usuários de aplicações existentes do React ao usar o Amazon Cognito e o AWS Amplify UI](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Crie um aplicativo React usando o AWS Amplify e adicione autenticação com o Amazon Cognito](create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.md)
+ [Crie um portal para microfrontends usando Angular e AWS Amplify Module Federation](create-amplify-micro-frontend-portal.md)
+ [Implante um aplicativo de página única baseado em React no Amazon S3 e CloudFront](deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.md)
+ [Implante uma API do Amazon API Gateway em um site interno usando endpoints privados e um Application Load Balancer](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Incorpore componentes visuais do Amazon Quick Sight em aplicativos web usando a automação do Amazon Cognito e do IaC](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Explore o desenvolvimento de aplicações web de full-stack nativas da nuvem com o Green Boost](explore-full-stack-cloud-native-web-application-development-with-green-boost.md)
+ [Execute testes unitários para um aplicativo Node.js GitHub usando a AWS CodeBuild](run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.md)
+ [Estruture um projeto Python em arquitetura hexagonal usando o AWS Lambda](structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.md)
+ [Mais padrões](websitesandwebapps-more-patterns-pattern-list.md)

# Autenticação de usuários de aplicações existentes do React ao usar o Amazon Cognito e o AWS Amplify UI
<a name="authenticate-react-app-users-cognito-amplify-ui"></a>

*Daniel Kozhemyako, Amazon Web Services*

## Resumo
<a name="authenticate-react-app-users-cognito-amplify-ui-summary"></a>

Este padrão demonstra como adicionar funcionalidades de autenticação a uma aplicação frontend existente do React ao usar a biblioteca do AWS Amplify UI e um grupo de usuários do Amazon Cognito.

O padrão usa o Amazon Cognito para fornecer autenticação, autorização e gerenciamento de usuários para a aplicação. Ele também usa um componente do [Amplify UI](https://ui.docs.amplify.aws/react/getting-started/introduction), uma biblioteca de código aberto que estende os recursos do desenvolvimento da interface do AWS Amplify usuário (UI). O componente [Authenticator UI](https://ui.docs.amplify.aws/react/connected-components/authenticator/advanced) gerencia as sessões de login e executa o fluxo conectado à nuvem, que autentica usuários por meio do Amazon Cognito.

Depois de implementar esse padrão, os usuários podem entrar usando qualquer uma das seguintes credenciais:
+ Nome de usuário e senha
+ Provedores de identidades sociais, como o Apple, Facebook, o Google e o Amazon
+ Provedores de identidade corporativa compatíveis com SAML 2.0 ou OpenID Connect (OIDC)

**nota**  
Para criar um componente personalizado da interface do usuário de autenticação, é possível executá-lo no Authenticator UI com o modo sem periféricos.

## Pré-requisitos e limitações
<a name="authenticate-react-app-users-cognito-amplify-ui-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Uma aplicação da web do React, versão 18.2.0 ou versões posteriores
+ Node.js e npm, versões 6.14.4 ou versões posteriores, [instalados](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)

**Limitações**
+ Esse padrão se aplica somente aos aplicativos web React.
+ Esse padrão usa um componente Amplify UI pré-construído. A solução não abrange as etapas necessárias para implementar um componente de UI personalizado.

**Versões do produto**
+ Amplify UI 6.1.3 ou versões posteriores (Gen 1)
+ Amplify 6.0.16 ou versões posteriores (Gen 1)

## Arquitetura
<a name="authenticate-react-app-users-cognito-amplify-ui-architecture"></a>

**Arquitetura de destino**

O diagrama apresentado a seguir ilustra uma arquitetura que usa o Amazon Cognito para autenticar usuários em uma aplicação da web do React.

![\[O Amazon Cognito autentica usuários em uma aplicação da web do React.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/b2cea053-6931-4404-8aa8-c623ce2024ac/images/b7f69f20-a39d-4a78-8605-7dab73c59052.png)


## Ferramentas
<a name="authenticate-react-app-users-cognito-amplify-ui-tools"></a>

**Serviços da AWS**
+ O [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) fornece autenticação, autorização e gerenciamento de usuários para suas aplicações Web e móveis.

**Outras ferramentas**
+ O [Amplify UI](https://ui.docs.amplify.aws/react/getting-started/introduction) é uma biblioteca de interface do usuário de código aberto que oferece componentes personalizáveis que podem ser conectados à nuvem.
+ [O Node.js](https://nodejs.org/en/docs/) é um ambiente de tempo de JavaScript execução orientado a eventos projetado para criar aplicativos de rede escaláveis.
+ O [npm](https://docs.npmjs.com/about-npm) é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados.

## Práticas recomendadas
<a name="authenticate-react-app-users-cognito-amplify-ui-best-practices"></a>

Se você estiver criando uma nova aplicação, recomendamos o uso do Amplify Gen 2.

## Épicos
<a name="authenticate-react-app-users-cognito-amplify-ui-epics"></a>

### Criar um grupo de usuários do Amazon Cognito
<a name="create-an-cog-user-pool"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um grupo de usuários. | [Criar um grupo de usuários do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html). Configure as opções de login e os parâmetros de segurança do grupo de usuários de acordo com os requisitos do seu caso de uso. | Desenvolvedor de aplicativos | 
| Adicionar um cliente de aplicativo. | [Configure um cliente do aplicativo do grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html). Este cliente é necessário para que sua aplicação interaja com o grupo de usuários do Amazon Cognito. | Desenvolvedor de aplicativos | 

### Integração do grupo de usuários do Amazon Cognito com o componente Authenticator UI
<a name="integrate-your-cog-user-pool-with-the-authenticator-ui-component"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale as dependências. | Para instalar os pacotes `aws-amplify` e `@aws-amplify/ui-react`, execute o seguinte comando no diretório raiz do seu aplicativo:<pre>npm i @aws-amplify/ui-react aws-amplify</pre> | Desenvolvedor de aplicativos | 
| Configure o grupo de usuários. | Com base no exemplo a seguir, crie um arquivo `aws-exports.js` e salve-o na pasta `src`. O arquivo deve incluir as seguintes informações:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)<pre>// replace the user pool region, id, and app client id details<br />const awsmobile = {<br />    "aws_project_region": "put_your_region_here",<br />    "aws_cognito_region": "put_your_region_here",<br />    "aws_user_pools_id": "put_your_user_pool_id_here",<br />    "aws_user_pools_web_client_id": "put_your_user_pool_app_id_here"<br />}<br /><br />export default awsmobile;</pre> | Desenvolvedor de aplicativos | 
| Importe e configure o serviço Amplify. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | Desenvolvedor de aplicativos | 
| Adicione o componente Authenticator UI. | Para exibir o componente `Authenticator` UI, adicione as seguintes linhas de código ao arquivo do ponto de entrada do aplicativo (`App.js`):<pre>import { Authenticator } from '@aws-amplify/ui-react';<br />import '@aws-amplify/ui-react/styles.css';</pre>O trecho de código de exemplo importa o componente `Authenticator` UI e o arquivo “styles.css” do Amplify UI, que é necessário ao usar os temas desenvolvidos previamente do componente.O componente `Authenticator` UI fornece dois valores de retorno:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)Veja o componente do exemplo a seguir:<pre>function App() {<br />    return (<br />        <Authenticator><br />            {({ signOut, user }) => (<br />                <div><br />                    <p>Welcome {user.username}</p><br />                    <button onClick={signOut}>Sign out</button><br />                </div><br />            )}<br />        </Authenticator><br />    );<br />}</pre>Para obter um arquivo `App.js` de exemplo, consulte a seção [Informações adicionais](#authenticate-react-app-users-cognito-amplify-ui-additional) deste padrão. | Desenvolvedor de aplicativos | 
| (Opcional) Recupere as informações da sessão. | Depois que um usuário é autenticado, você pode recuperar dados do cliente Amplify sobre sua sessão. Por exemplo, você pode recuperar o token web JSON (JWT) da sessão de um usuário para autenticar as solicitações da sessão em uma API de backend.Veja o exemplo a seguir de um cabeçalho de solicitação que inclui um JWT:<pre>import { fetchAuthSession } from 'aws-amplify/auth';<br />(await fetchAuthSession()).tokens?.idToken?.toString();</pre> | Desenvolvedor de aplicativos | 

## Solução de problemas
<a name="authenticate-react-app-users-cognito-amplify-ui-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Novos usuários não podem se cadastrar no aplicativo. | Conforme indicado a seguir, certifique-se de que o grupo de usuários do Amazon Cognito esteja configurado para permitir que os usuários se registrem no próprio grupo de usuários:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | 
| O componente Auth parou de funcionar após a atualização da versão 5 para a 6. | Na versão 6 do Amplify, a categoria `Auth` passou a utilizar uma abordagem funcional e parâmetros nomeados. Agora você deve importar o funcional APIs diretamente do `aws-amplify/auth` caminho. Para obter mais informações, consulte [Migrate from v5 to v6](https://docs.amplify.aws/gen1/react/build-a-backend/auth/auth-migration-guide/) na documentação do Amplify. | 

## Recursos relacionados
<a name="authenticate-react-app-users-cognito-amplify-ui-resources"></a>
+ [Introdução ao Amazon Cognito (site](https://aws.amazon.com/cognito/getting-started/))AWS 
+ [Crie um novo aplicativo React](https://reactjs.org/docs/create-a-new-react-app.html) (documentação do React)
+ [O que é o Amazon Cognito?](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) (documentação do Amazon Cognito)
+ [Amplify UI library](https://ui.docs.amplify.aws/) (documentação do Amplify)

## Mais informações
<a name="authenticate-react-app-users-cognito-amplify-ui-additional"></a>

O arquivo `App.js` deve conter o seguinte código:

```
import './App.css';
import { Amplify } from 'aws-amplify';
import awsExports from './aws-exports';
import { fetchAuthSession } from 'aws-amplify/auth';
import { Authenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';
Amplify.configure({ ...awsExports });
let token = (await fetchAuthSession()).tokens?.idToken?.toString();
function App() {
  return (
      <Authenticator>
        {({ signOut, user }) => (
            <div>
              <p>Welcome {user.username}</p>
                <p>Your token is: {token}</p>
              <button onClick={signOut}>Sign out</button>
            </div>
        )}
      </Authenticator>
  );
}

export default App;
```

# Crie um aplicativo React usando o AWS Amplify e adicione autenticação com o Amazon Cognito
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito"></a>

*Rishi Singla, Amazon Web Services*

## Resumo
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-summary"></a>

Esse padrão demonstra como usar o AWS Amplify para criar um aplicativo baseado em React e como adicionar autenticação ao frontend usando o Amazon Cognito. AWS Amplify consiste em um conjunto de ferramentas (estrutura de código aberto, ambiente de desenvolvimento visual, console) e serviços (aplicação Web e hospedagem de site estático) para acelerar o desenvolvimento de aplicativos móveis e web na AWS. 

## Pré-requisitos e limitações
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ [Node.js](https://nodejs.org/en/download/) e [npm](https://www.npmjs.com/get-npm) instalados em sua máquina

**Versões do produto**
+ Node.js versão 10.x ou superior (para verificar sua versão, execute `node -v` em uma janela de terminal)
+ npm versão 6.x ou superior (para verificar sua versão, execute `npm -v` em uma janela de terminal)

## Arquitetura
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-architecture"></a>

**Pilha de tecnologias de destino**
+ AWS Amplify
+ Amazon Cognito

## Ferramentas
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-tools"></a>
+ [Command Line Interface (CLI) do Amplify](https://docs.amplify.aws/cli/)
+ [Amplify Libraries](https://docs.amplify.aws/lib/q/platform/react-native/) (bibliotecas cliente de código aberto)
+ [Amplify Studio](https://docs.amplify.aws/console/) (interface visual)

## Épicos
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-epics"></a>

### Instale a CLI do AWS Amplify
<a name="install-aws-amplify-cli"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale a CLI do Amplify. | A CLI do Amplify é uma cadeia de ferramentas unificada para criar serviços de nuvem AWS para seu aplicativo React. Para instalar a CLI do Amplify, execute:<pre>npm install -g @aws-amplify/cli</pre>O npm notificará você se uma nova versão principal estiver disponível. Se sim, use o comando a seguir para atualizar sua versão do npm:<pre>npm install -g npm@9.8.0</pre>onde 9.8.0 se refere à versão que você deseja instalar. | Desenvolvedor de aplicativos | 

### Crie um aplicativo React
<a name="create-a-react-app"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um aplicativo React. | Para criar um novo aplicativo React, use o comando:<pre>npx create-react-app amplify-react-application</pre>onde `ampify-react-application` é o nome do aplicativo.Quando o aplicativo for criado com êxito, você verá a mensagem:<pre>Success! Created amplify-react-application</pre>Um diretório com várias subpastas será criado para o aplicativo React. | Desenvolvedor de aplicativos | 
| Inicie o aplicativo na sua máquina local. | Vá para o diretório `amplify-react-application` que foi criado na etapa anterior e execute o comando:<pre>amplify-react-application% npm start</pre>Isso inicia o aplicativo React na sua máquina local. | Desenvolvedor de aplicativos | 

### Configurar a CLI do Amplify
<a name="configure-the-amplify-cli"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o Amplify para se conectar à sua conta da AWS. | Configure o Amplify executando o comando:<pre>amplify-react-application % amplify configure</pre>A CLI do Amplify solicita que você siga estas etapas para configurar o acesso à sua conta da AWS:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html)Para este cenário, são necessários usuários do IAM com acesso programático e credenciais de longo prazo, o que representa um risco de segurança. Para ajudar a reduzir esse risco, recomendamos que você forneça a esses usuários somente as permissões necessárias para realizar a tarefa e que você os remova quando não forem mais necessários. As chaves de acesso podem ser atualizadas, se necessário. Para obter mais informações, consulte [Atualização de chaves de acesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) no *Guia de usuário do IAM*.Essas etapas aparecem no terminal da seguinte forma.<pre>Follow these steps to set up access to your AWS account:<br />Sign in to your AWS administrator account:<br />https://console.aws.amazon.com/<br />Press Enter to continue<br />Specify the AWS Region<br />? region:  us-east-1<br />Follow the instructions at<br />https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli<br />to complete the user creation in the AWS console<br />https://console.aws.amazon.com/iamv2/home#/users/create<br />Press Enter to continue<br />Enter the access key of the newly created user:<br />? accessKeyId:  ********************<br />? secretAccessKey:  ****************************************<br />This would update/create the AWS Profile in your local machine<br />? Profile Name:  new<br /><br />Successfully set up the new user.</pre>Para obter mais informações sobre essas etapas, consulte a [documentação](https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli) no Amplify Dev Center. | AWS geral, desenvolvedor de aplicativos | 

### Inicialize o Amplify
<a name="initialize-amplify"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicialize o Amplify. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html) | Desenvolvedor de aplicativos, AWS geral | 

### Adicione autenticação ao frontend
<a name="add-authentication-to-the-frontend"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adição de autenticação. | Você pode usar o comando `amplify add <category>` para adicionar atributos como um login de usuário ou uma API de backend. Nesta etapa, você usará o comando para adicionar autenticação.O Amplify fornece um serviço de autenticação de backend com o Amazon Cognito, bibliotecas de frontend e um componente de interface de usuário do Autenticador drop-in. Os atributos incluem inscrição do usuário, login do usuário, autenticação multifator, saída do usuário e login sem senha. Você também pode autenticar usuários por meio da integração com provedores de identidade federados, como Amazon, Google e Facebook. A categoria de autenticação do Amplify se integra perfeitamente a outras categorias do Amplify, como API, análise e armazenamento, para que você possa definir regras de autorização para usuários autenticados e não autenticados.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html) | Desenvolvedor de aplicativos, AWS geral | 

### Alterar o arquivo App.js
<a name="change-the-app-js-file"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Alterar o arquivo App.js. | Na pasta `src`, abra e revise o arquivo `App.js`. O arquivo modificado deve ficar assim:<pre>{  App.Js File after modifications:<br />import React from 'react';<br />import logo from './logo.svg';<br />import './App.css';<br />import { Amplify } from 'aws-amplify';<br />import { withAuthenticator, Button, Heading } from '@aws-amplify/ui-react';<br />import awsconfig from './aws-exports';<br />Amplify.configure(awsconfig);<br />function App({ signOut }) {<br />  return (<br />      <div><br />      <h1>Thankyou for doing verification</h1><br />      <h2>My Content</h2><br />       <button onClick={signOut}>Sign out</button><br />    </div><br />  );<br />}<br />export default withAuthenticator(App);</pre> | Desenvolvedor de aplicativos | 
| Importe pacotes React. | O arquivo `App.js` importa dois pacotes React. Instale esses pacotes usando o seguinte comando:<pre>amplify-react-application1 % npm install --save aws-amplify @aws-amplify/ui-react</pre> | Desenvolvedor de aplicativos | 

### Inicie o aplicativo React e verifique a autenticação
<a name="launch-the-react-app-and-check-authentication"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Inicie o aplicativo. | Inicie o aplicativo na sua máquina local:<pre>amplify-react-application1 % npm start</pre> | Desenvolvedor de aplicativos, AWS geral | 
| Verifique a autenticação. | Verifique se o aplicativo solicita parâmetros de autenticação. (Em nosso exemplo, configuramos o e-mail como método de login.)A interface de usuário do frontend deve solicitar suas credenciais de login e fornecer a opção de criar uma conta.Você também pode configurar o processo de criação do Amplify para adicionar o backend como parte de um fluxo de trabalho de implantação contínua. No entanto, esse padrão não cobre essa opção. | Desenvolvedor de aplicativos, AWS geral | 

## Recursos relacionados
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-resources"></a>
+ [Conceitos básicos](https://docs.npmjs.com/getting-started) (documentação do npm)
+ [Crie uma conta autônoma da AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) (documentação do AWS Account Management) 
+ [Documentação do AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html)
+ [Documentação do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html)

# Crie um portal para microfrontends usando Angular e AWS Amplify Module Federation
<a name="create-amplify-micro-frontend-portal"></a>

*Milena Godau e Pedro Garcia, Amazon Web Services*

## Resumo
<a name="create-amplify-micro-frontend-portal-summary"></a>

Uma arquitetura de microfrontend permite que várias equipes trabalhem em diferentes partes de uma aplicação de frontend de forma independente. Cada equipe pode desenvolver, criar e implantar um fragmento do frontend sem interferir em outras partes da aplicação. Do ponto de vista do usuário final, parece ser uma aplicação única e coesa. No entanto, eles estão interagindo com várias aplicações independentes publicadas por equipes diferentes.

Este documento descreve como criar uma arquitetura de microfrontend usando o [AWS Amplify](https://docs.amplify.aws/gen1/angular/), a estrutura de frontend [Angular](https://angular.dev/overview) e o [Module Federation](https://webpack.js.org/concepts/module-federation/). Neste padrão, os microfrontends são combinados no lado do cliente por uma aplicação shell (ou *principal*). A aplicação shell atua como um contêiner que recupera, exibe e integra os microfrontends. A aplicação shell manipula o roteamento global, que carrega diferentes microfrontends. O plug-in [@angular-architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation) integra o Module Federation com o Angular. Você implanta o aplicativo shell e os microfrontends usando o. AWS Amplify Os usuários finais acessam a aplicação por meio de um portal baseado na web.

O portal está dividido verticalmente. Isso significa que os microfrontends são visualizações inteiras ou grupos de visualizações, em vez de partes da mesma visualização. Portanto, a aplicação shell carrega apenas um microfrontend por vez.

Os microfrontends são implementados como módulos remotos. A aplicação shell carrega lentamente esses módulos remotos, o que adia a inicialização do microfrontend até que ela seja necessária. Essa abordagem otimiza a performance da aplicação carregando somente os módulos necessários. Isso reduz o tempo de carregamento inicial e melhora a experiência geral do usuário. Além disso, você compartilha dependências comuns entre os módulos por meio do arquivo de configuração do webpack (**webpack.config.js**). Essa prática promove a reutilização de código, reduz a duplicação e simplifica o processo de empacotamento.

## Pré-requisitos e limitações
<a name="create-amplify-micro-frontend-portal-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS
+ Node.js e npm, [instalados](https://nodejs.org/en/download/)
+ CLI do Amplify, [instalada](https://docs.amplify.aws/gen1/angular/tools/cli/)
+ CLI do Angular, [instalada](https://angular.io/cli)
+ [Permissões](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsamplify.html) de uso AWS Amplify
+ Familiaridade com o Angular

**Versões do produto**
+ CLI do Angular versão 13.1.2 ou posterior
+ @angular-architects/module-federation versão 14.0.1 ou posterior
+ webpack versão 5.4.0 ou posterior
+ AWS Amplify Geração 1

**Limitações**

Uma arquitetura de microfrontend é uma abordagem poderosa para criar aplicações web escaláveis e resilientes. No entanto, é fundamental entender os seguintes desafios em potencial antes de adotar essa abordagem:
+ **Integração**: um dos principais desafios é o aumento potencial da complexidade em comparação com frontends monolíticos. Orquestrar vários microfrontends, lidar com a comunicação entre eles e gerenciar dependências compartilhadas pode ser mais complexo. Além disso, pode haver uma sobrecarga na performance associada à comunicação entre os microfrontends. Essa comunicação pode aumentar a latência e reduzir a performance. Isso precisa ser resolvido por meio de mecanismos eficientes de mensagens e estratégias de compartilhamento de dados.
+ **Duplicação de código**: como cada microfrontend é desenvolvido de forma independente, existe o risco de duplicar o código para funcionalidades comuns ou bibliotecas compartilhadas. Isso pode aumentar o tamanho geral da aplicação e introduzir desafios de manutenção.
+ **Coordenação e gerenciamento**: coordenar os processos de desenvolvimento e implantação em vários microfrontends pode ser um desafio. Garantir o versionamento consistente, o gerenciamento de dependências e a manutenção da compatibilidade entre os componentes se torna mais importante em uma arquitetura distribuída. Estabelecer uma governança clara, diretrizes e pipelines automatizados de teste e implantação é essencial para uma colaboração e entrega perfeitas.
+ **Teste**: testar arquiteturas de microfrontend pode ser mais complexo do que testar frontends monolíticos. Isso requer esforço adicional e estratégias de teste especializadas para realizar testes e end-to-end testes de integração entre componentes e validar experiências de usuário consistentes em vários microfront-ends.

Antes de se comprometer com a abordagem de microfrontend, recomendamos que você analise [Compreendendo e implementando](https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html) microfrontends em. AWS

## Arquitetura
<a name="create-amplify-micro-frontend-portal-architecture"></a>

Em uma arquitetura de microfrontend, cada equipe desenvolve e implanta recursos de forma independente. A imagem a seguir mostra como várias DevOps equipes trabalham juntas. A equipe do portal desenvolve a aplicação shell. A aplicação shell atua como um contêiner. Ele recupera, exibe e integra os aplicativos de microfront-end publicados por outras equipes. DevOps Você usa AWS Amplify para publicar o aplicativo shell e os aplicativos de microfrontend.

![\[Publicar vários microfrontends em uma aplicação shell que o usuário acessa por meio de um portal da web.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/ddf82a69-bf1b-4ad1-8e60-3dd375699936/images/cf045bf1-11ea-46d9-93cb-3c603122450d.png)


O diagrama da arquitetura mostra o seguinte fluxo de trabalho:

1. A equipe do portal desenvolve e mantém a aplicação shell. A aplicação shell orquestra a integração e a renderização dos microfrontends para compor o portal geral.

1. As equipes A e B desenvolvem e mantêm um ou mais microfrontends ou recursos integrados ao portal. Cada equipe pode trabalhar de forma independente em seus respectivos microfrontends.

1. O usuário final faz a autenticação usando o Amazon Cognito.

1. O usuário final acessa o portal e a aplicação shell é carregada. Conforme o usuário navega, a aplicação shell lida com o roteamento e recupera o microfrontend solicitado, carregando seu pacote.

## Ferramentas
<a name="create-amplify-micro-frontend-portal-tools"></a>

**Serviços da AWS**
+ [AWS Amplify](https://docs.amplify.aws/angular/start/)é um conjunto de ferramentas e recursos específicos que ajudam desenvolvedores front-end da Web e de dispositivos móveis a criar rapidamente aplicativos completos em. AWS Neste padrão, você usa a CLI do Amplify para implantar as aplicações de microfrontend do Amplify.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.

**Outras ferramentas**
+ [@angular-architects/module-federation](https://github.com/angular-architects/module-federation-plugin) é um plugin que integra o Angular com o Module Federation.
+ O [Angular](https://angular.dev/overview) é uma estrutura de aplicações web de código aberto para criar aplicações de página única modernas, escaláveis e testáveis. Ele segue uma arquitetura modular e baseada em componentes que promove a reutilização e a manutenção do código.
+ [O Node.js](https://nodejs.org/en/docs/) é um ambiente de JavaScript tempo de execução orientado a eventos projetado para criar aplicativos de rede escaláveis.
+ O [npm](https://docs.npmjs.com/about-npm) é um registro de software executado em um ambiente Node.js e usado para compartilhar ou emprestar pacotes e gerenciar a implantação de pacotes privados.
+ O [Webpack Module Federation](https://webpack.js.org/concepts/module-federation/) ajuda você a carregar código compilado e implantado de forma independente, como microfrontends ou plug-ins, em uma aplicação.

**Repositório de código**

O código desse padrão está disponível no [portal Micro-frontend usando o repositório Angular e Module Federation](https://github.com/aws-samples/angular-module-federation-mfe) GitHub . Esse repositório contém as duas pastas abaixo:
+ `shell-app` contém o código para a aplicação shell.
+ `feature1-app` contém um exemplo de microfrontend. A aplicação shell busca esse microfrontend e o exibe como uma página dentro da aplicação do portal.

## Práticas recomendadas
<a name="create-amplify-micro-frontend-portal-best-practices"></a>

As arquiteturas de microfrontend oferecem inúmeras vantagens, mas também introduzem complexidade. A seguir estão algumas das práticas recomendadas para um desenvolvimento tranquilo, código de alta qualidade e uma ótima experiência do usuário:
+ **Planejamento e comunicação**: para agilizar a colaboração, invista em planejamento antecipado, design e canais de comunicação claros.
+ **Consistência do design**: aplique um estilo visual consistente em microfrontends usando sistemas de design, guias de estilo e bibliotecas de componentes. Isso proporciona uma experiência de usuário coesa e acelera o desenvolvimento.
+ **Gerenciamento de dependências**: como os microfrontends evoluem de forma independente, adote contratos padronizados e estratégias de versionamento para gerenciar dependências de forma eficaz e evitar problemas de compatibilidade.
+ **Arquitetura de microfrontend**: para permitir o desenvolvimento e a implantação independentes, cada microfrontend deve ter uma responsabilidade clara e bem definida por uma funcionalidade encapsulada.
+ **Integração e comunicação** — Para facilitar a integração e minimizar conflitos, defina contratos e protocolos de comunicação claros entre microfront-ends APIs, incluindo eventos e modelos de dados compartilhados.
+ **Teste e garantia de qualidade**: implemente pipelines de automação de testes e integração contínua para microfrontends. Isso melhora a qualidade geral, reduz o esforço de testes manuais e valida a funcionalidade entre as interações de microfrontend.
+ **Otimização de performance**:** **monitore continuamente as métricas de performance e acompanhe as dependências entre microfrontends. Isso ajuda você a identificar gargalos e manter a performance ideal da aplicação. Use ferramentas de monitoramento de performance e análise de dependências para essa finalidade.
+ **Experiência do desenvolvedor**: concentre-se na experiência do desenvolvedor fornecendo documentação, ferramentas e exemplos claros. Isso ajuda você a otimizar o desenvolvimento e integrar novos membros da equipe.

## Épicos
<a name="create-amplify-micro-frontend-portal-epics"></a>

### Criar a aplicação shell
<a name="create-the-shell-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a aplicação shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Instale o plug-in . | Na CLI do Angular, digite o seguinte comando para instalar o plug-in [@angular-architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation):<pre>ng add @angular-architects/module-federation --project shell --port 4200</pre> | Desenvolvedor de aplicativos | 
| Adicione o URL do microfrontend como uma variável de ambiente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Defina o roteamento. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Declare o módulo `mfe1`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Prepare o pré-carregamento para o microfrontend. | O pré-carregamento do microfrontend ajuda o webpack a negociar adequadamente as bibliotecas e pacotes compartilhados.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Ajuste o conteúdo HTML. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 

### Criar a aplicação de microfrontend
<a name="create-the-micro-frontend-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie o microfrontend. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Instale o plug-in . | Insira o seguinte comando para instalar o plug-in @angular-architects/module-federation:<pre>ng add @angular-architects/module-federation --project mfe1 --port 5000</pre> | Desenvolvedor de aplicativos | 
| Crie um módulo e componente. | Insira os seguintes comandos para criar um módulo e um componente e exportá-los como módulo de entrada remota:<pre>ng g module mfe1 --routing<br />ng g c mfe1</pre> | Desenvolvedor de aplicativos | 
| Defina o caminho de roteamento padrão. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Adicione a rota `mfe1`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Edite o arquivo **webpack.config.js**. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Ajuste o conteúdo HTML. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 

### Testar as aplicações localmente
<a name="run-the-applications-locally"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Execute a aplicação `mfe1`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Execute a aplicação shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 

### Refatore a aplicação shell para lidar com um erro de carregamento do microfrontend
<a name="refactor-the-shell-application-to-handle-a-micro-frontend-loading-error"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um módulo e componente. | Na pasta-raiz da aplicação shell, insira os seguintes comandos para criar um módulo e um componente para uma página de erro:<pre>ng g module error-page --routing<br />ng g c error-page</pre> | Desenvolvedor de aplicativos | 
| Ajuste o conteúdo HTML. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Defina o caminho de roteamento padrão. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Crie uma função para carregar microfrontends. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 
| Teste o tratamento de erros. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 

### Implante os aplicativos usando AWS Amplify
<a name="deploy-the-applications-by-using-amplifylong"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o microfrontend. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Implante a aplicação shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor do aplicativo, proprietário do aplicativo | 
| Ativar CORS. | Como as aplicações shell e de microfrontend são hospedadas de forma independente em domínios diferentes, você deve habilitar o compartilhamento de recursos de origem cruzada (CORS) no microfrontend. Isso permite que a aplicação shell carregue o conteúdo de uma origem diferente. Para habilitar o CORS, adicione cabeçalhos personalizados.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Crie uma regra de regravação na aplicação shell. | O aplicativo Angular shell está configurado para usar HTML5 roteamento. Se o usuário fizer uma atualização definitiva, o Amplify tentará carregar uma página do URL atual. Isso gera um erro 403. Para evitar isso, adicione uma regra de regravação no console do Amplify.Para criar a regra de regravação, siga estas etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Teste o portal da web. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Desenvolvedor de aplicativos | 

### Limpar os recursos
<a name="clean-up-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua as aplicações. | Se você não precisar mais das aplicações shell e de microfrontend, exclua-as. Isso ajuda a evitar cobranças por recursos que você não está usando.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | AWS geral | 

## Solução de problemas
<a name="create-amplify-micro-frontend-portal-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Nenhum AWS perfil disponível ao executar o `amplify init` comando | Se você não tiver um AWS perfil configurado, ainda poderá continuar com o `amplify init` comando. No entanto, você precisa selecionar a opção `AWS access keys` quando for solicitado o método de autenticação. Tenha sua chave de AWS acesso e chave secreta disponíveis.Como alternativa, você pode configurar um perfil nomeado para a AWS CLI. Para obter instruções, consulte [Configurações e configurações do arquivo de credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) na AWS CLI documentação. | 
| Erro ao carregar entradas remotas | Se você encontrar um erro ao carregar as entradas remotas no arquivo **main.ts** da aplicação shell, verifique se a variável `environment.mfe1URL` está definida corretamente. O valor dessa variável deve ser o URL do microfrontend. | 
| Erro 404 ao acessar o microfrontend | Se você receber um erro 404 ao tentar acessar o microfrontend local, como em `http://localhost:4200/mfe1`, verifique o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | 

## Mais informações
<a name="create-amplify-micro-frontend-portal-additional"></a>

**AWS documentação**
+ [Compreendendo e implementando microfrontends em AWS(orientação](https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html)AWS prescritiva)
+ [Amplify CLI](https://docs.amplify.aws/gen1/angular/tools/cli/) (documentação do Amplify)
+ [Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) (documentação do Amplify)

**Outras referências**
+ [Module Federation](https://webpack.js.org/concepts/module-federation/)
+ [Node.js](https://nodejs.org/en/)
+ [Angular](https://angular.io/)
+ [@angular-architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation)

# Implante um aplicativo de página única baseado em React no Amazon S3 e CloudFront
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront"></a>

*Jean-Baptiste Guillois, Amazon Web Services*

## Resumo
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-summary"></a>

Um aplicativo de página única (SPA) é um site ou aplicativo da web que atualiza dinamicamente o conteúdo de uma página da Web exibida usando. JavaScript APIs Essa abordagem aprimora a experiência do usuário e o desempenho de um site porque atualiza apenas novos dados em vez de recarregar a página inteira do servidor.

Esse padrão fornece uma step-by-step abordagem para codificar e hospedar um SPA escrito em React no Amazon Simple Storage Service (Amazon S3) e na Amazon. CloudFront O SPA nesse padrão usa uma API REST que é configurada no Amazon API Gateway e exposta por meio de uma CloudFront distribuição da Amazon para simplificar o gerenciamento do [compartilhamento de recursos de origem cruzada (CORS).](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html)

## Pré-requisitos e limitações
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-prereqs"></a>

**Pré-requisitos **
+ Um ativo Conta da AWS.
+ Node.js e `npm`, instalado e configurado. Para obter mais informações, consulte a seção [Fazer download](https://nodejs.org/en/download/) da documentação de Node.js.
+ Yarn, instalado e configurado. Para obter mais informações, consulte a [documentação do Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#windows-stable).
+ Git, instalado e configurado. Para obter mais informações, consulte a [documentação do Git](https://github.com/git-guides/install-git).

## Arquitetura
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-architecture"></a>

![\[Arquitetura para implantar um SPA baseado em React no Amazon S3 e CloudFront\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/970a9d13-e8a2-44ac-aca5-a066e4be60e8/images/96061e05-8ac8-446e-b1da-baa6fc1cc7b6.png)


Essa arquitetura é implantada automaticamente usando AWS CloudFormation (infraestrutura como código). Ele usa serviços regionais, como o Amazon S3 para armazenar os ativos estáticos e o Amazon CloudFront com o Amazon API Gateway para expor os endpoints da API regional (REST). Os registros do aplicativo são coletados usando a Amazon CloudWatch. Todas as chamadas de AWS API são auditadas em AWS CloudTrail. Todas as configurações de segurança (por exemplo, identidades e permissões) são gerenciadas no AWS Identity and Access Management (IAM). O conteúdo estático é entregue pela rede de entrega de CloudFront conteúdo (CDN) da Amazon, e as consultas de DNS são tratadas pelo Amazon Route 53.

## Ferramentas
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-tools"></a>

**Serviços da AWS**
+ [O Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ajuda você a criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los em todo o ciclo de vida em todas Contas da AWS as regiões.
+ [A Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) acelera a distribuição do seu conteúdo da web entregando-o por meio de uma rede mundial de data centers, o que reduz a latência e melhora o desempenho.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)ajuda você a auditar a governança, a conformidade e o risco operacional do seu Conta da AWS.
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus AWS recursos e dos aplicativos em que você executa AWS em tempo real.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) é um serviço web de DNS altamente disponível e escalável.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

**Código**

O código de aplicativo de amostra desse padrão está disponível no repositório de aplicativos de página única GitHub [CORS baseado em React](https://github.com/aws-samples/react-cors-spa).

## Práticas recomendadas
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-best-practices"></a>

Com o armazenamento de objetos do Amazon S3, você pode armazenar os ativos estáticos da sua aplicação de forma segura, altamente resiliente, eficiente em termos de performance e econômica. Não há necessidade de usar um contêiner dedicado ou uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para essa tarefa.

Ao usar a rede de distribuição de CloudFront conteúdo da Amazon, você pode reduzir a latência que seus usuários podem experimentar ao acessar seu aplicativo. Você também pode anexar um firewall de aplicação web ([AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/cloudfront-features.html)) para proteger seus ativos contra ataques maliciosos.

## Épicos
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-epics"></a>

### Criar e implantar localmente o código do aplicativo
<a name="locally-build-and-deploy-your-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Execute o seguinte comando para clonar o repositório da aplicação de amostra:<pre>git clone https://github.com/aws-samples/react-cors-spa react-cors-spa && cd react-cors-spa</pre> | Desenvolvedor de aplicativos, AWS DevOps | 
| Implante o aplicativo localmente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Desenvolvedor de aplicativos, AWS DevOps | 
|  Acesse o aplicativo localmente. | Abra uma janela do navegador e insira o URL `http://localhost:3000` para acessar o aplicativo. | Desenvolvedor de aplicativos, AWS DevOps | 

### Implantar a aplicação
<a name="deploy-the-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o AWS CloudFormation modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Personalize os arquivos de origem do seu aplicativo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Desenvolvedor de aplicativos | 
| Crie o pacote do aplicativo. | No diretório do projeto, execute o comando `yarn build` para criar o pacote do aplicativo. | Desenvolvedor de aplicativos | 
| Implemente o pacote do aplicativo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Desenvolvedor de aplicativos, AWS DevOps | 

### Teste a aplicação
<a name="test-the-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Acessar e testar o aplicativo. | Abra uma janela do navegador e cole o domínio de CloudFront distribuição (a `SPADomain` saída da CloudFormation pilha que você implantou anteriormente) para acessar o aplicativo. | Desenvolvedor de aplicativos, AWS DevOps | 

### Limpe os recursos
<a name="clean-up-the-resources"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Exclua os conteúdos do bucket do S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | AWS DevOps, desenvolvedor de aplicativos | 
| Exclua a CloudFormation pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | AWS DevOps, desenvolvedor de aplicativos | 

## Recursos relacionados
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-resources"></a>

Para implantar e hospedar sua aplicação web, você também pode usar o [AWS Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/getting-started.html), que fornece um fluxo de trabalho baseado em Git para hospedar aplicações web full-stack e com tecnologia sem servidor usando a implantação contínua. O Amplify Hosting faz parte do [AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html), que fornece um conjunto de ferramentas e recursos específicos que permitem que desenvolvedores front-end web e móveis criem aplicativos completos de forma rápida e fácil. AWS

## Mais informações
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-additional"></a>

Para lidar com URLs solicitações inválidas pelo usuário que podem gerar erros 403, uma página de erro personalizada configurada na CloudFront distribuição captura erros 403 e os redireciona para o ponto de entrada do aplicativo (). `index.html`

Para simplificar o gerenciamento do CORS, a API REST é exposta por meio de uma CloudFront distribuição.

# Implante uma API do Amazon API Gateway em um site interno usando endpoints privados e um Application Load Balancer
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer"></a>

*Saurabh Kothari, Amazon Web Services*

## Resumo
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-summary"></a>

Esse padrão mostra como implantar uma API do Amazon API Gateway em um site interno que pode ser acessado a partir de uma rede on-premises.. Você aprende a criar um nome de domínio personalizado para uma API privada usando uma arquitetura projetada com endpoints privados, um Application Load Balancer, PrivateLink AWS e Amazon Route 53. Essa arquitetura evita as consequências não intencionais do uso de um nome de domínio personalizado e um servidor proxy para ajudar no roteamento baseado em domínio em uma API. Por exemplo, se você implantar um endpoint de nuvem privada virtual (VPC) em uma sub-rede não roteável, sua rede não conseguirá acessar o API Gateway. Uma solução comum é usar um nome de domínio personalizado e depois implantar a API em uma sub-rede roteável, mas isso pode interromper outros sites internos quando a configuração do proxy passar o tráfego (`execute-api.{region}.vpce.amazonaws.com`) para o AWS Direct Connect. Por fim, esse padrão pode ajudar você a atender aos requisitos organizacionais de uso de uma API privada que não pode ser acessada pela Internet e de um nome de domínio personalizado.

## Pré-requisitos e limitações
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Um certificado de Indicação do nome do servidor (SNI, Server Name Indication) para o site e a API
+ Uma conexão de um ambiente local com uma conta da AWS que é configurada usando o AWS Direct Connect ou o AWS VPN Site-to-Site
+ Uma [zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) com um domínio correspondente (por exemplo, domain.com) que é resolvida a partir de uma rede on-premises e encaminha consultas ao DNS para o Route 53
+ Uma sub-rede privada roteável que pode ser acessada a partir de uma rede on-premises

**Limitações**

Para obter mais informações sobre cotas (anteriormente chamadas de limites) para balanceadores de carga, regras e outros recursos, consulte [Cotas para seus Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) na documentação do Elastic Load Balancing.

## Arquitetura
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-architecture"></a>

**Pilha de tecnologia**
+ Amazon API Gateway
+ Amazon Route 53
+ Application Load Balancer
+ AWS Certificate Manager
+ AWS PrivateLink

**Arquitetura de destino**

O diagrama a seguir mostra como um Application Load Balancer é implantado em uma VPC que direciona o tráfego da web para um grupo de destino do site ou do API Gateway com base nas regras de receptor do Application Load Balancer. O grupo de destino do API Gateway é uma lista de endereços IP do endpoint da VPC no API Gateway. O API Gateway está configurado para tornar a API privada com sua política de recursos. A política nega todas as chamadas que não sejam de um endpoint da VPC específico. Os nomes de domínio personalizados no gateway da API são atualizados para usar api.domain.com para a API e seu estágio. As regras do Application Load Balancer são adicionadas para rotear o tráfego com base no nome do host.

![\[Arquitetura que emprega regras de receptor do Application Load Balancer para direcionar o tráfego da web.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/83145062-4535-4ad0-8947-4ea8950cd174/images/12715186-26ea-4123-b9ef-e3105a934ff3.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Um usuário de uma rede on-premises tenta acessar um site interno. A solicitação é enviada para ui.domain.com e api.domain.com. Em seguida, a solicitação é resolvida para o Application Load Balancer interno da sub-rede privada roteável. O SSL é encerrado no Application Load Balancer para ui.domain.com e api.domain.com.

1. As regras de receptor, configuradas no Application Load Balancer, verificam o cabeçalho do host.

   a. Se o cabeçalho do host para api.domain.com, a solicitação será encaminhada para o grupo de destino do API Gateway. O Application Load Balancer inicia uma nova conexão com o API Gateway pela porta 443.

   b. Se o cabeçalho do host for ui.domain.com, a solicitação será encaminhada para o grupo de destino do site.

1. Quando a solicitação chega ao API Gateway, o mapeamento de domínio personalizado configurado no API Gateway determina o nome do host e qual API executar.

**Automação e escala**

As etapas desse padrão podem ser automatizadas usando a AWS CloudFormation ou o AWS Cloud Development Kit (AWS CDK). Para configurar o grupo de destino das chamadas do API Gateway, você precisa usar um recurso personalizado para recuperar o endereço IP do endpoint da VPC. A API chama [describe-vpc-endpoints](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-vpc-endpoints.html)e [describe-network-interfaces](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-network-interfaces.html)retorna os endereços IP e o grupo de segurança, que podem ser usados para criar o grupo-alvo de endereços IP da API.

## Ferramentas
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-tools"></a>
+ [O Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ajuda você a criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.
+ O [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) é um serviço web de DNS altamente disponível e escalável.
+ [O AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) ajuda você a criar, armazenar e renovar certificados e chaves SSL/TLS X.509 públicos e privados que protegem seus sites e aplicativos da AWS.
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+  PrivateLinkA [AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) ajuda você a criar conexões unidirecionais e privadas de seus serviços VPCs para fora da VPC.

## Épicos
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-epics"></a>

### Como criar um certificado de SNI
<a name="create-an-sni-certificate"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um certificado de SNI e importe-o para o ACM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de rede | 

### Implante um endpoint da VPC em uma sub-rede privada não roteável
<a name="deploy-a-vpc-endpoint-in-a-non-routable-private-subnet"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um endpoint da VPC de interface do API Gateway  | Para criar um endpoint da VPC de interface, siga as instruções em [Acessar serviço da AWS usando um endpoint da VPC de interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) na documentação da Amazon Virtual Private Cloud (Amazon VPC). | Administrador de nuvem | 

### Configure o Application Load Balancer.
<a name="configure-the-application-load-balancer"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar um grupo de destino para seu aplicativo. | [Crie um grupo de destino](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) para os recursos de interface do usuário do seu aplicativo. | Administrador de nuvem | 
| Crie um grupo de destino para o endpoint do API Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 
| Criar um Application Load Balancer. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 
| Cria regras de receptor. | Crie [regras de receptor](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules) para fazer o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 

### Configure o Route 53
<a name="configure-route-53"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar uma zona hospedada privada | [Crie uma zona hospedada privada](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) para domain.com. | Administrador de nuvem | 
| Crie registros de domínio. | [Crie registros CNAME](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) para o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 

### Criar um endpoint de API privado no API Gateway
<a name="create-a-private-api-endpoint-in-api-gateway"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie e configure um endpoint de API privada. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Desenvolvedor de aplicativos, administrador de nuvem | 
| Criar um nome de domínio personalizado | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrador de nuvem | 

## Recursos relacionados
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-resources"></a>
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)

# Incorpore componentes visuais do Amazon Quick Sight em aplicativos web usando a automação do Amazon Cognito e do IaC
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac"></a>

*Ishita Gupta, Saurabh Singh e Srishti Wadhwa, da Amazon Web Services*

## Resumo
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-summary"></a>

Esse padrão fornece uma abordagem especializada para incorporar componentes visuais do Amazon Quick Sight em aplicativos React usando a incorporação de usuários registrados com autenticação simplificada do Amazon Cognito. Esses recursos são então implantados por meio de um modelo de infraestrutura como código (IaC). Diferentemente da incorporação tradicional de painéis, essa solução isola tabelas e gráficos específicos para integração direta aos aplicativos React, o que melhora drasticamente o desempenho e a experiência do usuário.

A arquitetura estabelece um fluxo de autenticação eficiente entre o gerenciamento de usuários do Amazon Cognito e as permissões do Quick Sight: os usuários se autenticam por meio do Amazon Cognito e acessam suas visualizações autorizadas com base nas regras de compartilhamento do painel no Quick Sight. Essa abordagem simplificada elimina a necessidade de acesso direto ao console do Quick Sight, mantendo controles de segurança robustos.

O ambiente completo é implantado por meio de um único AWS CloudFormation modelo que provisiona todos os componentes de infraestrutura necessários, incluindo:
+ Um back-end sem servidor que usa o Amazon API AWS Lambda Gateway
+ Hospedagem de front-end segura por meio da Amazon CloudFront, Amazon Simple Storage Service (Amazon S3) e AWS WAF
+ Gerenciamento de identidade usando o Amazon Cognito

Todos os componentes são configurados seguindo as melhores práticas de segurança com políticas, AWS WAF proteção e criptografia de privilégios mínimos AWS Identity and Access Management (IAM). end-to-end

Essa solução é ideal para equipes de desenvolvimento e organizações que desejam integrar análises seguras e interativas em seus aplicativos, mantendo um controle refinado sobre o acesso do usuário. A solução usa serviços AWS gerenciados e automação para simplificar o processo de incorporação, aprimorar a segurança e garantir a escalabilidade para atender às necessidades comerciais em evolução.

Público-alvo e casos de uso:
+ **Desenvolvedores de front-end** que desejam incorporar análises em aplicativos React
+ **Equipes de produtos de software como serviço (SaaS)** que desejam oferecer visualizações de dados por usuário ou baseadas em função
+ **Arquitetos de soluções** interessados em integrar AWS análises em portais personalizados
+ **Desenvolvedores de business intelligence (BI)** que desejam expor elementos visuais a usuários autenticados sem precisar de acesso total ao painel
+ **Equipes corporativas** que desejam incorporar gráficos interativos do Quick Sight em ferramentas internas

## Pré-requisitos e limitações
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-prereqs"></a>

**Pré-requisitos **

Para implementar esse padrão com sucesso, certifique-se de que o seguinte esteja em vigor:
+ **Ativo Conta da AWS** — e Conta da AWS com permissões para implantar CloudFormation pilhas e criar recursos do Lambda, do API Gateway, do Amazon Cognito CloudFront e do Amazon S3.
+ **Conta Amazon Quick Sight** — Uma conta ativa do Quick Sight com pelo menos um painel que contém imagens. Para obter instruções de configuração, consulte [Tutorial: Crie um painel do Amazon Quick Sight usando dados de amostra](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html) na documentação do Amazon Quick.
+ **Um ambiente de desenvolvimento** que consiste em:
  + Node.js (versão 16 ou posterior)
  + npm ou yarn instalado
  + Vite como a ferramenta de construção do React
  + React (versão 19.1.1)
+ **Compartilhamento do painel** — Os painéis devem ser compartilhados no Quick Sight e o implementador deve fazer login para acessar os visuais ou painéis incorporados.

**Limitações**
+ Esse padrão usa o método de incorporação de usuário registrado, que exige que os implementadores tenham uma conta ativa do Quick Sight.
+ O acesso é restrito aos painéis e recursos visuais que são explicitamente compartilhados com o usuário autenticado do Quick Sight que está implementando esse padrão. Se o implementador não tiver os direitos de acesso corretos, a geração do URL incorporado falhará e as imagens não serão carregadas.
+ A CloudFormation pilha deve ser implantada em um Região da AWS local onde o Quick Sight, o API Gateway e o Amazon Cognito sejam compatíveis. Para conferir a disponibilidade de uma região, consulte [Serviços da AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

**Versões do produto**
+ [SDK de incorporação do Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) versão 2.10.1
+ [React](https://www.npmjs.com/package/react) versão 19.1.1
+ [Node.js](https://nodejs.org/en/download) versão 16 ou posterior para garantir a compatibilidade com as versões mais recentes do React e Vite usadas nesta solução

## Arquitetura
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-architecture"></a>

**Arquitetura de destino**

O diagrama apresentado a seguir ilustra a arquitetura e o fluxo de trabalho para este padrão.

![\[Arquitetura e fluxo de trabalho para incorporar imagens do Quick Sight em um aplicativo React.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/75ad12b1-caaa-4532-b709-8f3eaf3f9cc0/images/d0905f61-9055-49cf-887d-f46f5ca6c871.png)


Nesse fluxo de trabalho:

1. **O usuário acessa o aplicativo**. O usuário abre o aplicativo web React usando um navegador. A solicitação é roteada para uma CloudFront distribuição, que atua como uma rede de entrega de conteúdo para o aplicativo.

1. **AWS WAF filtra solicitações maliciosas**. ****Antes que a solicitação chegue CloudFront, ela passa AWS WAF. AWS WAF inspeciona o tráfego e bloqueia todas as solicitações maliciosas ou suspeitas com base nas regras de segurança.

1. **O Amazon S3 serve arquivos estáticos**. Se a solicitação estiver limpa, CloudFront recupera os ativos estáticos de front-end (HTML, JS, CSS) de um bucket S3 privado usando o controle de acesso de origem (OAC) e os entrega ao navegador.

1. **O usuário faz login**. Depois que o aplicativo é carregado, o usuário faz login por meio do Amazon Cognito, que autentica o usuário e retorna um token web JSON (JWT) seguro para acesso autorizado à API.

1. **O aplicativo faz uma solicitação de API**. Após o login, o aplicativo React faz uma chamada segura para o `/get-embed-url` endpoint no API Gateway e passa o token JWT no cabeçalho da solicitação para autenticação.

1. **O token está validado.** O API Gateway valida o token usando um autorizador do Amazon Cognito. Se o token for válido, a solicitação prosseguirá; caso contrário, ela será negada com uma resposta 401 (não autorizada).

1. **A solicitação é direcionada à Lambda para processamento**. A solicitação validada é então encaminhada para uma função Lambda de back-end. Essa função é responsável por gerar o URL de incorporação para o visual do Quick Sight solicitado.

1. O **Lambda gera o URL de incorporação do** Quick Sight. O IAM usa uma função do IAM com as permissões apropriadas para chamar a `GenerateEmbedUrlForRegisteredUser` API Quick Sight para gerar uma URL visual segura e com escopo de usuário.

1. O **Lambda retorna o URL incorporado ao API Gateway**. O Lambda envia o URL de incorporação gerado de volta ao API Gateway como parte de uma resposta JSON. Essa resposta é então preparada para entrega no frontend.

1. **O URL de incorporação é enviado para o navegador**. O URL incorporado é retornado ao navegador como resposta da API.

1. **O visual é exibido para o usuário**. ****O aplicativo React recebe a resposta e usa o SDK do Quick Sight Embedding para renderizar o visual específico para o usuário.

**Automação e escala**

As implantações de back-end e front-end são totalmente automatizadas usando CloudFormation, que provisiona todos os AWS recursos necessários, incluindo Amazon Cognito, Lambda, API Gateway, Amazon S3,, CloudFront AWS WAF, funções do IAM e Amazon em uma única implantação. CloudWatch 

Essa automação garante uma infraestrutura consistente e repetível em todos os ambientes. Todos os componentes são dimensionados automaticamente: o Lambda se ajusta às invocações de funções, CloudFront fornece conteúdo em cache globalmente e o API Gateway se adapta às solicitações recebidas.

## Ferramentas
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-tools"></a>

**Serviços da AWS**
+ [O Amazon Quick Sight](https://aws.amazon.com/quicksuite/quicksight/) é um serviço de inteligência de negócios nativo da nuvem que ajuda você a criar, gerenciar e incorporar painéis e recursos visuais interativos.
+ [O Amazon API Gateway](https://aws.amazon.com/api-gateway/) gerencia APIs esses serviços que atuam como a ponte entre o aplicativo React e os serviços de back-end.
+ [AWS Lambda](https://aws.amazon.com/lambda/)é um serviço de computação sem servidor que esse padrão usa para gerar o Quick Sight seguro, incorporado URLs dinamicamente e escalável automaticamente com base nas solicitações.
+ [O Amazon Cognito](https://aws.amazon.com/cognito/) fornece autenticação e autorização para usuários e emite tokens seguros para acesso à API.
+ [O Amazon S3](https://aws.amazon.com/s3/) hospeda ativos de front-end estáticos para esse padrão e os serve com segurança por meio dele. CloudFront
+ [A Amazon CloudFront ](https://aws.amazon.com/cloudfront/getting-started/) fornece conteúdo de front-end globalmente com baixa latência e se integra à filtragem AWS WAF de tráfego.
+ [AWS WAF](https://aws.amazon.com/waf/)protege o aplicativo da web contra tráfego malicioso aplicando regras de segurança e limitação de taxa.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)automatiza o provisionamento e a configuração de todos os recursos do aplicativo em uma única implantação.
+ [A Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) coleta registros e métricas do Lambda, do API Gateway AWS WAF e para monitoramento e solução de problemas.

**Ferramentas de desenvolvimento**
+ O [React JS](https://react.dev/) é uma estrutura de front-end que esse padrão usa para criar o aplicativo web e integrar visuais incorporados do Quick Sight.
+ O [Vite](https://vite.dev/) é uma ferramenta de construção usada para desenvolvimento rápido e compilações de produção otimizadas do aplicativo React.
+ O [Quick Sight Embedding SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk/v/2.10.1) facilita a incorporação de visuais do Quick Sight no aplicativo React e permite uma interação perfeita entre o aplicativo e os recursos visuais.

**Repositório de código**

O código desse padrão está disponível no repositório GitHub [Amazon Quick Sight Visual Embedding in React](https://github.com/aws-samples/sample-quicksight-visual-embedding).

## Práticas recomendadas
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-best-practices"></a>

Esse padrão implementa automaticamente as seguintes melhores práticas de segurança:
+ Usa grupos de usuários do Amazon Cognito para autenticação baseada em JWT, com autenticação multifator (MFA) opcional.
+ Protege APIs com autorizadores do Amazon Cognito e aplica políticas de IAM com privilégios mínimos em todos os serviços.
+ Implementa a incorporação de usuários registrados do Quick Sight e provisiona automaticamente os usuários com a função de leitor.
+ Aplica criptografia em trânsito que suporta TLS 1.2 e versões posteriores por meio CloudFront de HTTPS.
+ Criptografa dados em repouso usando AES-256 para Amazon S3 com controle de versão e OAC.
+ Configura os planos de uso do API Gateway com limitação e cotas.
+ Protege o Lambda com simultaneidade reservada e proteção de variáveis de ambiente.
+ Permite o registro em log para Amazon S3, CloudFront Lambda e API Gateway; monitora serviços usando. CloudWatch
+ Criptografa registros, aplica controles de acesso e aplica políticas de negação para uploads não HTTPS ou não criptografados.

Além disso, recomendamos o seguinte:
+ Use CloudFormation para automatizar implantações e manter configurações consistentes em todos os ambientes.
+ Certifique-se de que cada usuário tenha as permissões corretas do Quick Sight para acessar imagens incorporadas.
+ Proteja os endpoints do API Gateway com os autorizadores do Amazon Cognito e aplique o princípio do privilégio mínimo para todas as funções do IAM.
+ Armazene informações confidenciais, como Amazon Resource Names (ARNs) e IDs em variáveis de ambiente, em vez de codificá-las permanentemente.
+ Otimize as funções do Lambda reduzindo dependências e melhorando o desempenho da inicialização a frio. Para obter mais informações, consulte a postagem do AWS blog [Otimizando o desempenho da inicialização a frio do AWS Lambda uso de estratégias avançadas de preparação](https://aws.amazon.com/blogs/compute/optimizing-cold-start-performance-of-aws-lambda-using-advanced-priming-strategies-with-snapstart/) com. SnapStart
+ Adicione seu CloudFront domínio à lista de permissões do Quick Sight para permitir a incorporação visual segura.
+ Monitore o desempenho e a segurança usando CloudWatch e AWS WAF para registros, alertas e proteção de tráfego.

**Outras melhores práticas recomendadas**
+ Use domínios personalizados com certificados SSL da AWS Certificate Manager para fornecer uma experiência de usuário segura e de marca.
+  CloudWatch Criptografe dados e registros do Amazon S3 usando chaves AWS Key Management Service gerenciadas pelo cliente AWS KMS() para maior controle sobre a criptografia.
+ Estenda AWS WAF as regras com bloqueio geográfico, injeção de SQL (SQLi), proteção de script entre sites (XSS) e filtros personalizados para melhorar a prevenção de ameaças.
+ Ative CloudWatch alarmes e AWS CloudTrail para monitoramento AWS Config, auditoria e conformidade de configuração em tempo real.
+ Aplique políticas granulares de IAM, imponha a rotação de chaves de API e permita o acesso entre contas somente quando for absolutamente necessário.
+ Realize avaliações regulares de segurança para garantir o alinhamento com estruturas de conformidade, como Controles Organizacionais 2 (SOC 2), Regulamento Geral de Proteção de Dados (GDPR) e Lei de Portabilidade e Responsabilidade de Seguros de Saúde (HIPAA).

## Épicos
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-epics"></a>

### Prepare o ambiente
<a name="prepare-the-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Clonar o repositório. | Clone o GitHub repositório dessa solução em seu sistema local e navegue até o diretório do projeto:<pre>git clone https://github.com/aws-samples/sample-quicksight-visual-embedding.git<br /><br />cd sample-quicksight-visual-embedding</pre>Esse repositório contém o CloudFormation modelo e o código-fonte do React necessários para implantar a solução. | Desenvolvedor de aplicativos | 

### Implante a CloudFormation pilha
<a name="deploy-the-cfn-stack"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Implante o modelo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) Para obter mais informações, consulte [Criação e gerenciamento de pilhas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) na CloudFormation documentação. | Administrador da AWS | 
| Monitore a criação da pilha. | Monitore a pilha na guia **Eventos** até que seu status seja **CREATE\$1COMPLETE**. | Administrador da AWS | 
| Recupere as saídas da pilha. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrador da AWS | 

### Configurar o ambiente de front-end
<a name="configure-the-frontend-environment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Recupere identificadores visuais do Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrador do Quick Sight | 
| Configure seu ambiente React local. | Para configurar seu ambiente React local e vinculá-lo aos AWS recursos, crie um `.env` arquivo na `my-app/` pasta do seu GitHub repositório local. Preencha o arquivo com:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Aqui está um exemplo de `.env` arquivo:<pre>VITE_AWS_REGION=us-east-1<br /><br /># Cognito Configuration (from CloudFormation outputs)<br />VITE_USER_POOL_ID=us-east-1_xxxxxxxxx VITE_USER_POOL_WEB_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx<br /><br /># API Configuration (from CloudFormation outputs)<br />VITE_API_URL=https:/your-api-id.execute-api.us-east-1.amazonaws.com/prod<br /><br /># QuickSight Visual Configuration<br />VITE_DASHBOARD_ID=your-dashboard-id <br />VITE_SHEET_ID=your-sheet-id <br />VITE_VISUAL_ID=your-visual-id</pre> | Desenvolvedor de aplicativos | 

### Configurar a autenticação do usuário
<a name="set-up-user-authentication"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Criar ou gerenciar usuários no Cognito | Para permitir que usuários autenticados acessem imagens incorporadas do Quick Sight, primeiro você cria usuários no Amazon Cognito:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrador da AWS | 
| Forneça acesso ao painel do Quick Sight | Para fornecer acesso aos recursos visuais do Quick Sight, forneça permissão de acesso ao Visualizador aos usuários autenticados:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Cada usuário receberá um e-mail com um link para o painel. Você pode modificar as permissões a qualquer momento por meio do menu **Compartilhar**.Para obter mais informações, consulte [Conceder a usuários e grupos individuais do Amazon Quick Sight acesso a um painel no Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/share-a-dashboard-grant-access-users.html) na documentação do Amazon Quick. | Administrador do Quick Sight | 

### Crie e implante o frontend do React
<a name="build-and-deploy-the-react-frontend"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale dependências e construa o projeto. | No diretório do aplicativo React, execute os seguintes comandos para gerar arquivos de produção otimizados:<pre>cd my-app<br />npm install<br />npm run build</pre> | Desenvolvedor de aplicativos | 
| Faça o upload dos arquivos de compilação para o Amazon S3. | Faça upload de todos os arquivos do `my-app/dist/` diretório para o bucket do S3 provisionado por CloudFormation (não faça upload da pasta em si). | Desenvolvedor de aplicativos | 
| Crie uma CloudFront invalidação. | No [CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home), crie uma invalidação do caminho `/*` para atualizar o conteúdo em cache após a implantação. Para obter instruções, consulte [Invalidar arquivos](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation_Requests.html) na CloudFront documentação. | Administrador da AWS | 

### Configurar a lista de permissões do Quick Sight
<a name="configure-the-qsight-allowlist"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adicione o CloudFront domínio à lista de permissões do Quick Sight. | Para permitir que seu CloudFront domínio incorpore com segurança os recursos visuais do Quick Sight:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrador do Quick Sight | 

### Acesse o aplicativo e verifique a funcionalidade
<a name="access-the-application-and-verify-functionality"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Abra o aplicativo React. | Use o **CloudFront domínio** (das CloudFormation saídas) para abrir o aplicativo web React implantado em um navegador. | Proprietário do App | 
| Verifique a autenticação. | Faça login no aplicativo usando as credenciais do Amazon Cognito para verificar o fluxo de autenticação e a validação do JWT por meio do API Gateway. | Proprietário do App | 
| Verifique os recursos visuais incorporados. | Confirme se os visuais do Quick Sight são carregados corretamente no aplicativo com base nas permissões de acesso específicas do usuário. | Proprietário do App | 
| Valide a conectividade da API e do Lambda. | Confirme se o aplicativo pode chamar a `/get-embed-url` API com sucesso e recuperar a incorporação válida do Quick Sight URLs sem erros. | Proprietário do App | 

### Monitore e mantenha o aplicativo
<a name="monitor-and-maintain-the-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Monitore usando CloudWatch. | Você pode usar ferramentas AWS de observabilidade para monitorar o aplicativo e manter um desempenho seguro e escalável na produção.Analise os registros do Lambda, as métricas do API Gateway e os eventos CloudWatch de autenticação do Amazon Cognito para garantir a integridade do aplicativo e detectar anomalias. | Administrador da AWS | 
|  AWS WAF Rastreamento e CloudFront registros. | Inspecione AWS WAF os registros em busca de solicitações bloqueadas ou suspeitas e CloudFront acesse os registros para ver as métricas de desempenho e armazenamento em cache. | Administrador da AWS | 

## Solução de problemas
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Erro “Domínio não permitido” | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Erros de autenticação | Causas possíveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Soluções:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Erros do API Gateway | Causas possíveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Soluções:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Os visuais do Quick Sight não carregam | Causas possíveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Soluções:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Erro “O usuário não tem acesso” | Causas possíveis:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Solução:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 

## Recursos relacionados
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-resources"></a>

** AWS documentação**
+ [Inscrever-se para uma assinatura do Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html)
+ [Análise incorporada para o Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/embedded-analytics.html)
+ [Referência da API Quick Sight — GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)
+ [Grupos de usuários do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html)
+ [AWS Lambda Guia do desenvolvedor](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Guia do desenvolvedor do Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html)
+ [Monitoramento básico e monitoramento detalhado em CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)
+ [AWS CloudFormation Guia do usuário](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [Guia do CloudFront desenvolvedor da Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)
+ [AWS WAF Guia do desenvolvedor](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)

**Tutoriais e vídeos**
+ [Análise incorporada para o Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html)
+ [ YouTube Tutoriais do Amazon Quick Sight](https://www.youtube.com/results?search_query=amazon+quicksight+embedding)

# Explore o desenvolvimento de aplicações web de full-stack nativas da nuvem com o Green Boost
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost"></a>

*Ben Stickley e Amiin Samatar, Amazon Web Services*

## Resumo
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-summary"></a>

Em resposta às crescentes necessidades dos desenvolvedores, a Amazon Web Services (AWS) reconhece a demanda crítica por uma abordagem eficiente para o desenvolvimento de aplicativos web nativo de nuvem. O foco da AWS é ajudar você a superar obstáculos comuns associados à implantação de aplicativos web de nuvem AWS. Ao aproveitar os recursos de tecnologias modernas, como o TypeScript AWS Cloud Development Kit (AWS CDK), o React e o Node.js, esse padrão visa simplificar e agilizar o processo de desenvolvimento.

Apoiado pelo kit de ferramentas Green Boost (GB), o padrão oferece um guia prático para a estruturação de aplicativos web que usam os amplos recursos da AWS em sua totalidade. Ele atua como um roteiro abrangente, guiando você pelo processo de implantação de um aplicativo web CRUD (Criar, ler, atualizar, excluir) fundamental integrado à edição do Amazon Aurora compatível com PostgreSQL. Isso é feito usando a interface de linha de comando Green Boost (CLI do Green Boost) e estabelecendo um ambiente de desenvolvimento local.

Após a implantação bem-sucedida do aplicativo, o padrão investiga os principais componentes do aplicativo web, incluindo design de infraestrutura, desenvolvimento de backend e frontend e ferramentas essenciais, como cdk-dia, para visualização, facilitando o gerenciamento eficiente de projetos.

## Pré-requisitos e limitações
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-prereqs"></a>

**Pré-requisitos **
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) instalado
+ [Visual Studio Code (VS Code)](https://code.visualstudio.com/download) instalado
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) instalado
+ [Kit de ferramentas AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) instalado
+ [Node.js 18](https://nodejs.org/en/download) instalado ou [Node.js 18 com pnpm](https://pnpm.io/cli/env) ativado
+ [pnpm](https://pnpm.io/installation) instalado, se não fizer parte da instalação do Node.js
+ Familiaridade básica com TypeScript AWS CDK, Node.js e React
+ Uma [conta AWS ativa](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html)
+ [Bootstrap de uma conta da AWS](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) usando o AWS CDK em `us-east-1`. A região `us-east-1` da AWS**** é necessária para dar suporte às funções do Amazon CloudFront Lambda @Edge.
+ [Credenciais de segurança da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html), inclusive `AWS_ACCESS_KEY_ID`, configuradas corretamente em seu ambiente de terminal
+ Para usuários do Windows, um terminal no modo administrador (para acomodar a forma como o pnpm manipula os módulos de nós)

**Versões do produto**
+ AWS SDK para a JavaScript versão 3
+ AWS CDK versão 2
+ AWS CLI versão 2.2
+ Node.js versão 18
+ React versão 18

## Arquitetura
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-architecture"></a>

**Pilha de tecnologias de destino**
+ Amazon Aurora Edição Compatível com PostgreSQL
+ Amazon CloudFront
+ Amazon CloudWatch
+ Nuvem de computação elástica da Amazon (Amazon EC2)
+ AWS Lambda
+ AWS Secrets Manager
+ Amazon Simple Notiﬁcation Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS WAF

**Arquitetura de destino**

O diagrama a seguir mostra que as solicitações dos usuários passam pela Amazon CloudFront, AWS WAF e AWS Lambda antes de interagir com um bucket do S3, um banco de dados Aurora, uma instância e, finalmente EC2 , chegar aos desenvolvedores. Os administradores, por outro lado, usam o Amazon SNS e a CloudWatch Amazon para fins de notificações e monitoramento.

![\[Processo para implantar uma aplicação web CRUD integrado ao Amazon Aurora PostgreSQL usando a CLI do Green Boost.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/bacafc47-07c0-494b-8bbf-24bdc9b54f6a/images/129691e9-7fd3-4208-ab8c-05b9f40a5c4c.png)


Para obter uma visão mais aprofundada do aplicativo após a implantação, você pode criar um diagrama usando [cdk-dia](https://github.com/pistazie/cdk-dia), conforme mostrado no exemplo a seguir.

![\[O primeiro diagrama mostra a exibição centrada no usuário; o diagrama cdk-dia mostra a exibição da infraestrutura técnica.\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/bacafc47-07c0-494b-8bbf-24bdc9b54f6a/images/5e4c3321-47bd-44e7-bf14-f470eed984c1.png)


Esses diagramas mostram a arquitetura do aplicativo web a partir de dois ângulos distintos. O diagrama cdk-dia oferece uma visão técnica detalhada da infraestrutura de o AWS CDK, destacando serviços específicos da AWS, como o Amazon Aurora compatível com PostgreSQL e o AWS Lambda. Por outro lado, o outro diagrama tem uma perspectiva mais ampla, enfatizando o fluxo lógico de dados e as interações do usuário. A principal distinção está no nível de detalhe: o cdk-dia investiga as complexidades técnicas, enquanto o primeiro diagrama fornece uma visão mais centrada no usuário.

A criação do diagrama cdk-dia é abordada no épico *Understand the app infrastructure by using AWS CDK* (Entenda a infraestrutura do aplicativo usando o AWS CDK).

## Ferramentas
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-tools"></a>

**Serviços da AWS**
+ O [Amazon Aurora Edição Compatível com PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) é um mecanismo de banco de dados relacional totalmente gerenciado e em conformidade com ACID que ajuda você a configurar, operar e escalar implantações do PostgreSQL.
+ O [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
+ A ‭[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.
+ [A Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) acelera a distribuição do seu conteúdo da web entregando-o por meio de uma rede mundial de data centers, o que reduz a latência e melhora o desempenho.
+  CloudWatchA [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ajuda você a monitorar as métricas dos seus recursos da AWS e dos aplicativos que você executa na AWS em tempo real.
+ [A Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fornece capacidade de computação escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente.
+ O [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
+ O [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) ajuda você a substituir credenciais codificadas em seu código, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo programaticamente.
+ O [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) ajuda você a gerenciar seus aplicativos e infraestrutura em execução na nuvem AWS. Isso simplifica o gerenciamento de aplicações e recursos, diminui o tempo para detectar e resolver problemas operacionais e ajuda você a gerenciar seus recursos da AWS de modo seguro e em grande escala. Esse padrão usa o Session Manager do AWS Systems Manager.
+ O [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) é um serviço de armazenamento de objetos baseado em nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados. O [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.
+ O [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) é um firewall para aplicativos web que ajuda você a monitorar solicitações HTTP e HTTPS que são encaminhadas aos recursos protegidos do seu aplicativo web

**Outras ferramentas**
+ O [Git](https://git-scm.com/docs) é um sistema de controle de versão distribuído e de código aberto.
+ O [Green Boost](https://awslabs.github.io/green-boost/overview/intro) é um kit de ferramentas para criar aplicativos web na AWS.
+ O [Next.js](https://nextjs.org/docs) é uma estrutura do React para adicionar atributos e otimizações.
+ [O Node.js](https://nodejs.org/en/docs/) é um ambiente de tempo de JavaScript execução orientado a eventos projetado para criar aplicativos de rede escaláveis.
+ O [pgAdmin](https://www.pgadmin.org/) é uma ferramenta de gerenciamento de código aberto para PostgreSQL. Ele fornece uma interface gráfica que ajuda você a criar, manter e usar objetos de banco de dados.
+ O [pnpm](https://pnpm.io/motivation) é um gerenciador de pacotes para dependências do projeto Node.js.

## Práticas recomendadas
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-best-practices"></a>

Consulte a seção [Épicos](#explore-full-stack-cloud-native-web-application-development-with-green-boost-epics) para obter mais informações sobre as seguintes recomendações:
+ Monitore a infraestrutura usando CloudWatch painéis e alarmes da Amazon.
+ Aplique as práticas recomendadas da AWS usando cdk-nag para executar a análise estática de infraestrutura como código (IaC).
+ Estabeleça o encaminhamento de portas de banco de dados por meio de tunelamento SSH (Secure Shell) com o Session Manager do Systems Manager, que é mais seguro do que ter um endereço IP exposto publicamente.
+ Gerencie vulnerabilidades executando o `pnpm audit`.
+ Aplique as melhores práticas usando [ESLint](https://eslint.org/)para realizar análises estáticas de TypeScript código e [Prettier para padronizar a formatação](https://prettier.io/) de código.

## Épicos
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-epics"></a>

### Implemente um aplicativo web CRUD com o Aurora compatível com PostgreSQL
<a name="deploy-a-crud-web-app-with-aurora-postgresql-compatible"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Instale a CLI do Green Boost. | Para instalar o Green Boost CLI, execute o seguinte comando.<pre>pnpm add -g gboost</pre> | Desenvolvedor de aplicativos | 
| Crie um aplicativo do GB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Instale dependências e implante o aplicativo. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Aguarde a conclusão da implantação (aproximadamente 20 minutos). Enquanto você espera, monitore as CloudFormation pilhas da AWS no CloudFormation console. Observe como as estruturações definidas no código são mapeadas para o recurso implantado. Analise a [visualização em árvore do CDK Construct](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html) no CloudFormation console. | Desenvolvedor de aplicativos | 
| Acesse o aplicativo. | Depois de implantar seu aplicativo GB localmente, você pode acessá-lo usando o CloudFront URL. O URL é impresso na saída do terminal, mas pode ser um pouco difícil encontrá-lo. Para encontrá-lo mais rapidamente, siga as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Como alternativa, você pode encontrar a CloudFront URL acessando o CloudFront console da Amazon:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Copie o **Nome de domínio** associado à distribuição. Ele se parece com `your-unique-id.cloudfront.net`. | Desenvolvedor de aplicativos | 

### Monitore usando a Amazon CloudWatch
<a name="monitor-by-using-amazon-cloudwatch"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Veja o CloudWatch painel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Habilitar alertas. | Um CloudWatch painel ajuda você a monitorar ativamente seu aplicativo web. Para monitorar passivamente seu aplicativo da web, você pode ativar os alertas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 

### Entenda a infraestrutura do aplicativo usando o AWS CDK
<a name="understand-the-app-infrastructure-by-using-aws-cdk"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um diagrama de arquitetura. | Gere um diagrama de arquitetura do seu aplicativo web usando [cdk-dia](https://github.com/pistazie/cdk-dia). A visualização da arquitetura ajuda a melhorar a compreensão e a comunicação entre os membros da equipe. Ele fornece uma visão geral clara dos componentes do sistema e seus relacionamentos.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Use o cdk-nag para aplicar as práticas recomendadas. | Use o [cdk-nag](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html) para ajudar você a manter a infraestrutura segura e compatível, aplicando as práticas recomendadas, reduzindo o risco de vulnerabilidades de segurança e configurações incorretas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 

### Avalie a configuração e o esquema do banco de dados
<a name="evaluate-the-database-configuration-and-schema"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Adquira variáveis ​​de ambiente. | Para obter as variáveis de ambiente necessárias, use as seguintes etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Estabeleça o encaminhamento de portas. | Para estabelecer o encaminhamento de portas, siga as etapas a seguir:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Ajuste o tempo limite do Session Manager do Systems Manager. | (Opcional) Se o tempo limite padrão da sessão de 20 minutos for muito curto, você poderá aumentá-lo em até 60 minutos no console do Systems Manager selecionando **Session Manager**, **Preferências**, **Editar**, **Tempo limite de sessão ociosa**. | Desenvolvedor de aplicativos | 
| Visualize o banco de dados. | O pgAdmin é uma ferramenta de código aberto fácil de usar para gerenciar bancos de dados PostgreSQL. Ele simplifica as tarefas do banco de dados, permitindo que você crie, gerencie e otimize bancos de dados com eficiência. Esta seção orienta você na [instalação do pgAdmin](https://www.pgadmin.org/download/) e no uso de seus atributos para o gerenciamento do banco de dados do PostgreSQL.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 

### Depure com Node.js
<a name="debug-with-node-js"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Depure o caso de uso do item criado. | Para depurar o caso de uso do item criado, siga estas etapas:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 

### Desenvolva o frontend
<a name="develop-the-frontend"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o servidor de desenvolvimento. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 

### Ferramentas com Green Boost
<a name="tooling-with-green-boost"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Configure o monorepo e o gerenciador de pacotes pnpm. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Execute scripts pnpm. | Execute os seguintes comandos na raiz do seu repositório:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Observe como esses comandos são executados em todos os espaços de trabalho. Os comandos são definidos no campo `package.json#scripts` de cada espaço de trabalho. | Desenvolvedor de aplicativos | 
| Use ESLint para análise de código estático. | Para testar a capacidade de análise de código estático do ESLint, faça o seguinte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Gerencie dependências e vulnerabilidades. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 
| Pré-comprometa hooks com o Husky. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Essas ferramentas são mecanismos para ajudar a impedir que códigos incorretos entrem em seu aplicativo. | Desenvolvedor de aplicativos | 

### Destrua a infraestrutura
<a name="tear-down-the-infrastructure"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Remova a implantação da sua conta. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Desenvolvedor de aplicativos | 

## Solução de problemas
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Não foi possível estabelecer o encaminhamento de porta | Certifique-se de que suas credenciais da AWS estejam configuradas adequadamente e tenham as permissões necessárias.Verifique novamente se as variáveis de ambiente bastion host ID (`DB_BASTION_ID`) e database endpoint (`DB_ENDPOINT`) estão definidas corretamente.Se você ainda encontrar problemas, consulte a documentação da AWS para a [solução de problemas de conexões SSH e do Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html). | 
| O site não está sendo carregado no `localhost:3000` | Confirme se a saída do terminal indica um encaminhamento de porta bem-sucedido, incluindo o endereço de encaminhamento.Certifique-se de que não haja processos conflitantes usando a porta 3000 em sua máquina local.Verifique se o aplicativo Green Boost está configurado e é executado corretamente na porta esperada (3000).Verifique se há extensões ou configurações de segurança em seu navegador que possam bloquear conexões locais. | 
| Mensagens de erro durante a implantação local (`pnpm deploy:local`) | Analise cuidadosamente as mensagens de erro para identificar a causa do problema.Verifique se as variáveis de ambiente e os arquivos de configuração necessários estão definidos corretamente. | 

## Recursos relacionados
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-resources"></a>
+ [Documentação do AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Documentação do Green Boost](https://awslabs.github.io/green-boost/learn/m1-deploy-gb-app)
+ [Documentação do Next.js](https://nextjs.org/docs)
+ [Documentação do Node.js](https://nodejs.org/en/docs/)
+ [Documentação do React](https://reactjs.org/docs/getting-started.html)
+ [TypeScript documentação](https://www.typescriptlang.org/docs/)

 

# Execute testes unitários para um aplicativo Node.js GitHub usando a AWS CodeBuild
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild"></a>

*Thomas Scott e Jean-Baptiste Guillois, Amazon Web Services*

## Resumo
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-summary"></a>

Esse padrão fornece um exemplo de código-fonte e dos principais componentes de teste de unidade para uma API de jogo Node.js. Também inclui instruções para executar esses testes unitários a partir de um GitHub repositório usando a AWS CodeBuild, como parte de seu fluxo de trabalho de integração contínua e entrega contínua (CI/CD).

O teste de unidade é um processo de desenvolvimento de software no qual diferentes partes de um aplicativo, chamadas de *unidades*, são testadas de forma individual e independente para operação correta. Os testes validam a qualidade do código e confirmam que ele funciona conforme o esperado. Outros desenvolvedores também podem se familiarizar facilmente com sua base de código consultando os testes. Os testes de unidade reduzem o tempo futuro de refatoração, ajudam os engenheiros a se familiarizarem com sua base de código com mais rapidez e fornecem confiança no comportamento esperado.

O teste de unidade envolve testar funções individuais, incluindo funções do AWS Lambda. Para criar testes de unidade, você precisa de uma estrutura de testes e de uma forma de validar testes (asserções). Os exemplos de código nesse padrão usam a estrutura de teste [Mocha](https://mochajs.org/) e a [biblioteca de asserções Chai](https://www.chaijs.com/). 

Para obter mais informações sobre testes de unidade e exemplos de componentes de teste, consulte a seção [Informações adicionais](#run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional).

## Pré-requisitos e limitações
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-prereqs"></a>
+ Uma conta ativa da AWS com CodeBuild as permissões corretas
+ Uma GitHub conta (veja [as instruções para se inscrever](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account))
+ Git (consulte as [instruções de instalação](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))
+ Um editor de código para fazer alterações e enviar seu código para GitHub

## Arquitetura
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-architecture"></a>

Esse padrão implementa a arquitetura mostrada no diagrama a seguir.

![\[Arquitetura de nuvem da AWS para execução de testes CodeBuild unitários com um GitHub repositório\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e18428ce-9ecf-4204-9f1f-5a6683a720b2/images/4f4a3d1a-705a-45a6-b937-9212b188d226.png)


## Ferramentas
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-tools"></a>

**Ferramentas**
+ O [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) é um sistema de controle de versões que pode ser usado no desenvolvimento de código.
+  CodeBuildA [AWS](https://docs.aws.amazon.com/codebuild/) é um serviço de integração contínua totalmente gerenciado que compila o código-fonte, executa testes e produz pacotes de software prontos para implantação. Com CodeBuild, você não precisa provisionar, gerenciar e escalar seus próprios servidores de compilação. CodeBuild escala continuamente e processa várias compilações simultaneamente, para que suas compilações não fiquem esperando em uma fila. Você pode começar a usar ambientes de compilação pré-empacotados rapidamente ou criar ambientes de compilação personalizados que usem suas próprias ferramentas de compilação. Com CodeBuild, você é cobrado por minuto pelos recursos computacionais que usa.

**Código **

O código-fonte desse padrão está disponível em GitHub, no repositório de [aplicativos Sample Game Unit Test](https://github.com/aws-samples/node-js-tests-sample). Você pode criar seu próprio GitHub repositório a partir dessa amostra (opção 1) ou usar o repositório de amostra diretamente (opção 2) para esse padrão. Siga as instruções de cada opção na próxima seção. A opção que você seguirá dependerá do seu caso de uso.

## Épicos
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-epics"></a>

### Opção 1 - Execute testes de unidade em seu GitHub repositório pessoal com CodeBuild
<a name="option-1---run-unit-tests-on-your-personal-github-repository-with-codebuild"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie seu próprio GitHub repositório com base no projeto de amostra. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 
| Crie um novo CodeBuild projeto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 
| Inicie a compilação. | Na página **Revisão**, escolha **Iniciar compilação** para executar a compilação. | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 

### Opção 2 - Executar testes unitários em um repositório público com CodeBuild
<a name="option-2---run-unit-tests-on-a-public-repository-with-codebuild"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um novo projeto de CodeBuild construção. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 
| Inicie a compilação. | Na página **Revisão**, escolha **Iniciar compilação** para executar a compilação. | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 

### Analise os testes de unidade
<a name="analyze-the-unit-tests"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Visualizar resultados do teste | No CodeBuild console, revise os resultados do teste de unidade do CodeBuild trabalho. Eles devem corresponder aos resultados mostrados na seção [Informações adicionais](#run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional).Esses resultados validam a integração do GitHub repositório com o. CodeBuild  | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 
| Aplique um webhook. | Agora você pode aplicar um webhook, para poder iniciar automaticamente uma compilação sempre que enviar alterações de código para a ramificação principal do seu repositório. Para obter instruções, consulte a [documentação do CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/userguide/github-webhook.html). | Desenvolvedor de aplicativos, administrador da AWS, AWS DevOps | 

## Recursos relacionados
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-resources"></a>
+ [Exemplo de aplicativo de teste de unidade de jogo](https://github.com/aws-samples/node-js-tests-sample) (GitHub repositório com código de amostra)
+ [ CodeBuild Documentação da AWS](https://docs.aws.amazon.com/codebuild/)
+ [GitHub eventos de webhook](https://docs.aws.amazon.com/codebuild/latest/userguide/github-webhook.html) (CodeBuild documentação)
+ [Criação de um novo repositório](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository) (GitHub documentação)

## Mais informações
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional"></a>

**Resultados do teste de unidade**

No CodeBuild console, você deve ver os seguintes resultados de teste após a criação bem-sucedida do projeto. 

![\[Resultados esperados do teste unitário\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/e18428ce-9ecf-4204-9f1f-5a6683a720b2/images/db861831-cfed-4e87-a498-0216606941f8.png)


**Exemplo de componentes de teste da unidade**

Esta seção descreve os quatro tipos de componentes de teste usados em testes de unidade: asserções, espiões, stubs e simulações. Ela inclui uma breve explicação e um exemplo de código de cada componente. 

**Asserções**

Uma asserção é usada para verificar um resultado esperado. Esse é um componente de teste importante porque valida a resposta esperada de uma determinada função. O exemplo de declaração a seguir valida que o ID retornado está entre 0 e 1000 ao inicializar um novo jogo.

```
const { expect }  = require('chai');
const { Game } = require('../src/index');

describe('Game Function Group', () => {
 it('Check that the Game ID is between 0 and 1000', function() {
      const game = new Game();
      expect(game.id).is.above(0).but.below(1000)
 });
});
```

**Espiões**

Um espião é usado para observar o que está acontecendo quando uma função está em execução. Por exemplo, convém validar se a função foi chamada corretamente. O exemplo a seguir mostra que os métodos iniciar e parar são chamados em um objeto da classe **Jogo**.

```
const { expect }  = require('chai');
const { spy } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () => {
   it('should verify that the correct function is called', () => {
      const spyStart = spy(Game.prototype, "start");
      const spyStop = spy(Game.prototype, "stop");
     
      const game = new Game();
      game.start();
      game.stop();
     
      expect(spyStart.called).to.be.true
      expect(spyStop.called).to.be.true
    });
});
```

**Stub**

Um stub é usado para substituir a resposta padrão de uma função. Isso é especialmente útil quando a função faz uma solicitação externa, porque você quer evitar fazer solicitações externas a partir de testes de unidade. (As solicitações externas são mais adequadas para testes de integração, que podem testar fisicamente as solicitações entre componentes diferentes.) No exemplo a seguir, um stub força um ID de retorno da função **getId**.

```
const { expect }  = require('chai');
const {.stub } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () =>  {
   it('Check that the Game ID is between 0 and 1000', function() {
      let generateIdStub = stub(Game.prototype, 'getId').returns(999999);

      const game = new Game();

      expect(game.getId).is.equal(999999);

      generateIdStub.restore();
    });
});
```

**Simulações**

Uma simulação é um método falso que tem um comportamento pré-programado para testar diferentes cenários. Uma simulação pode ser considerada uma forma estendida de um stub e pode realizar várias tarefas simultaneamente. No exemplo a seguir, uma simulação é usada para validar três cenários:
+ Função é chamada  
+ Função é chamada com argumentos
+ Função retorna o 9 inteiro

```
const { expect }  = require('chai');
const {.mock } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () =>  {
   it('Check that the Game ID is between 0 and 1000', function() {
      let mock = mock(Game.prototype).expects('getId').withArgs().returns(9);

      const game = new Game();
      const id = get.getId();

      mock.verify();
      expect(id).is.equal(9);
    });
});
```

# Estruture um projeto Python em arquitetura hexagonal usando o AWS Lambda
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda"></a>

*Furkan Oruc, Dominik Goby, Darius Kunce e Michal Ploski, Amazon Web Services*

## Resumo
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-summary"></a>

Esse padrão mostra como estruturar um projeto Python em arquitetura hexagonal usando o AWS Lambda. O padrão usa o AWS Cloud Development Kit (AWS CDK) como ferramenta de infraestrutura como código (IaC), o Amazon API Gateway como API REST e o Amazon DynamoDB como camada de persistência. A arquitetura hexagonal segue os princípios de design orientados por domínio. Na arquitetura hexagonal, o software consiste em três componentes: domínio, portas e adaptadores. Para obter informações detalhadas sobre arquiteturas hexagonais e seus benefícios, consulte o guia [Criação de arquiteturas hexagonais na AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/hexagonal-architectures/)*.*

## Pré-requisitos e limitações
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-prereqs"></a>

**Pré-requisitos **
+ Uma conta AWS ativa
+ Experiência em Python
+ Familiaridade com AWS Lambda, AWS CDK, Amazon API Gateway e DynamoDB
+ Uma GitHub conta (veja [as instruções para se inscrever](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account))
+ Git (consulte as [instruções de instalação](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))
+ Um editor de código para fazer alterações e enviar seu código para GitHub (por exemplo, [Visual Studio Code ou [JetBrains PyCharm](https://www.jetbrains.com/pycharm/))](https://code.visualstudio.com/)
+ Docker instalado e o daemon do Docker instalado e funcionando

**Versões do produto**
+ Git versão 2.24.3 ou superior
+ Python versão 3.7 ou superior
+ AWS CDK v2
+ Poetry versão 1.1.13 ou superior
+ AWS Lambda Powertools para Python versão 1.25.6 ou superior
+ pytest versão 7.1.1 ou superior
+ Moto versão 3.1.9 ou superior
+ pydantic versão 1.9.0 ou superior
+ Boto3 versão 1.22.4 ou superior
+ mypy-boto3-dynamodb versão 1.24.0 ou superior

## Arquitetura
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-architecture"></a>

**Pilha de tecnologias de destino**

A pilha de tecnologia de destino consiste em um serviço em Python que usa o API Gateway, Lambda e DynamoDB. O serviço usa um adaptador do DynamoDB para manter os dados. Ele fornece uma função que usa o Lambda como ponto de entrada. O serviço usa o Amazon API Gateway para expor uma API REST. A API usa o AWS Identity and Access Management (IAM) para a [autenticação de clientes](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html).

**Arquitetura de destino**

Para ilustrar a implementação, esse padrão implanta uma arquitetura de destino com tecnologia sem servidor. Os clientes podem enviar solicitações para um endpoint do API Gateway. O API Gateway encaminha a solicitação para a função do Lambda de destino que implementa o padrão de arquitetura hexagonal. A função do Lambda executa operações de criação, leitura, atualização e exclusão (CRUD) em uma tabela do DynamoDB.


| 
| 
| Este padrão passou por testes em um ambiente de PoC. Você deve realizar uma análise de segurança para identificar o modelo de ameaça e criar uma base de código segura antes de implantar qualquer arquitetura em um ambiente de produção.  | 
| --- |

![\[Arquitetura de destino para estruturar um projeto Python em arquitetura hexagonal\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/25bd7169-ea5e-4a21-a865-c91c30a3c0da/images/de0d4f0d-ad19-43ec-bd10-676b25477b64.png)


A API oferece suporte a cinco operações em uma entidade de produto:
+ `GET /products` devolve todos os produtos. 
+ `POST /products` cria um novo produto. 
+ `GET /products/{id}` retorna um produto específico.
+ `PUT /products/{id}` atualiza um produto específico. 
+ `DELETE /products/{id}` exclui um produto específico.

Você pode usar a seguinte estrutura de pastas para organizar seu projeto de acordo com o padrão de arquitetura hexagonal:  

```
app/  # application code
|--- adapters/  # implementation of the ports defined in the domain
     |--- tests/  # adapter unit tests
|--- entrypoints/  # primary adapters, entry points
     |--- api/  # api entry point
          |--- model/  # api model
          |--- tests/  # end to end api tests
|--- domain/  # domain to implement business logic using hexagonal architecture
     |--- command_handlers/  # handlers used to execute commands on the domain
     |--- commands/  # commands on the domain
     |--- events/  # events triggered via the domain
     |--- exceptions/  # exceptions defined on the domain
     |--- model/  # domain model
     |--- ports/  # abstractions used for external communication
     |--- tests/  # domain tests
|--- libraries/  # List of 3rd party libraries used by the Lambda function
infra/  # infrastructure code
simple-crud-app.py  # AWS CDK v2 app
```

## Ferramentas
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-tools"></a>

**Serviços da AWS**
+ [O Amazon API Gateway](https://aws.amazon.com/api-gateway/) é um serviço totalmente gerenciado que facilita aos desenvolvedores criar, publicar, manter, monitorar e proteger APIs em qualquer escala.
+ O [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) é um banco de dados NoSQL totalmente gerenciado, de valor-chave e com tecnologia sem servidor, projetado para executar aplicativos de alto desempenho em qualquer escala.
+ O [AWS Lambda](https://aws.amazon.com/lambda/) é um serviço computacional com tecnologia sem servidor e orientado a eventos que permite executar o código em virtualmente qualquer tipo de aplicação ou serviço de backend sem o provisionamento ou gerenciamento de servidores. Você pode iniciar funções do Lambda a partir de mais de 200 serviços da AWS e aplicativos de software como serviço (SaaS) e pagar somente pelo que usar.

**Ferramentas**
+ O [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)  é usado como sistema de controle de versão para desenvolvimento de código nesse padrão.
+ O [Python](https://www.python.org/) é usado como linguagem de programação para esse padrão. O Python fornece estruturas de dados de alto nível e uma abordagem à programação orientada a objetos. O AWS Lambda fornece um runtime integrado do Python que simplifica a operação dos serviços do Python.
+ O [Visual Studio Code](https://code.visualstudio.com/) é usado como IDE para desenvolvimento e teste desse padrão. Você pode usar qualquer IDE que ofereça suporte ao desenvolvimento em Python (por exemplo, [PyCharm](https://www.jetbrains.com/pycharm/)).
+ O [AWS Cloud Development Kit (AWS CDK](https://aws.amazon.com/cdk/)) é uma estrutura de desenvolvimento de software de código aberto que permite definir recursos de aplicações em nuvem usando linguagens de programação conhecidas. Esse padrão usa o CDK para escrever e implantar a infraestrutura de nuvem como código.
+ O [Poetry](https://python-poetry.org/) é usado para gerenciar dependências no padrão.
+ O [Docker](https://www.docker.com/) é usado pelo AWS CDK para criar o pacote e a camada do Lambda.

**Código **

O código desse padrão está disponível no repositório de amostras da arquitetura [hexagonal GitHub Lambda](https://github.com/aws-samples/lambda-hexagonal-architecture-sample).

## Práticas recomendadas
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-best-practices"></a>

Para usar esse padrão em um ambiente de produção, siga essas práticas recomendadas:
+ Use chaves gerenciadas pelo cliente no AWS Key Management Service (AWS KMS) para criptografar grupos de [log da Amazon e tabelas do CloudWatch Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) [DynamoDB](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html).
+ Configure o [AWS WAF para o Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html) para permitir acesso somente a partir da rede da sua organização.
+ Considere outras opções para autorização do API Gateway se o IAM não atender às suas necessidades. Por exemplo, você pode usar [grupos de usuários do Amazon Cognito](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) ou [autorizadores do Lambda do API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html).
+ Use [backups do DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html).
+ Configure as funções do Lambda com uma [implantação de nuvem privada virtual (VPC)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) para manter o tráfego de rede dentro da nuvem.
+ Atualize a configuração de origem permitida para o [compartilhamento de recursos de origem cruzada (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) para restringir o acesso somente ao domínio de origem solicitante.
+ Use [cdk-nag](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html) para verificar as práticas recomendadas de segurança no código do AWS CDK.
+ Considere o uso de ferramentas de digitalização de código para encontrar problemas de segurança comuns no código. Por exemplo, o [Bandit](https://bandit.readthedocs.io/en/latest/) é uma ferramenta projetada para encontrar problemas de segurança comuns no código Python. O [PIP-Audit](https://pypi.org/project/pip-audit/) verifica os ambientes do Python em busca de pacotes que contenham tenham vulnerabilidades conhecidas.

Esse padrão usa o [AWS X-Ray](https://aws.amazon.com/xray/?nc1=h_ls) para rastrear solicitações por meio do ponto de entrada, domínio e adaptadores do aplicativo. O AWS X-Ray ajuda os desenvolvedores a identificar gargalos e determinar altas latências para melhorar o desempenho do aplicativo.

## Épicos
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-epics"></a>

### Inicializar o projeto
<a name="initialize-the-project"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie seu próprio repositório. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Instale as dependências. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Configure seu IDE. | Recomendamos o Visual Studio Code, mas você pode usar qualquer IDE de sua escolha que ofereça suporte ao Python. As etapas a seguir são para o Visual Studio Code.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Execute testes de unidade, opção 1: usando o Visual Studio Code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Execute testes de unidade, opção 2: usando comandos shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 

### Implante e teste o aplicativo
<a name="deploy-and-test-the-application"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Solicite credenciais temporárias. | Para obter credenciais da AWS no shell durante a execução do `cdk deploy`, crie credenciais temporárias usando o Centro de Identidade do AWS IAM (sucessor do AWS Single Sign-On). Para obter instruções, consulte a publicação [Como recuperar credenciais de curto prazo para uso da CLI com o Centro de Identidade do AWS IAM](https://aws.amazon.com/blogs/security/aws-single-sign-on-now-enables-command-line-interface-access-for-aws-accounts-using-corporate-credentials/). | Desenvolvedor de aplicativos, AWS DevOps | 
| Implante o aplicativo . | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos, AWS DevOps | 
| Teste a API, opção 1: usando o console. | Use o [console do API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html) para testar a API. Para obter mais informações sobre as operações e request/response mensagens da [API, consulte a seção Uso da API do arquivo readme](https://github.com/aws-samples/lambda-hexagonal-architecture-sample/blob/main/README.md#api-usage) no GitHub repositório. | Desenvolvedor de aplicativos, AWS DevOps | 
| Teste a API, opção 2: usando o Postman. | Se você quiser usar uma ferramenta como o [Postman](https://www.postman.com/):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos, AWS DevOps | 

### Desenvolva o serviço
<a name="develop-the-service"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Escreva testes de unidade para o domínio comercial. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Implemente comandos e manipuladores de comandos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Escreva testes de integração para adaptadores secundários. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Implemente adaptadores secundários. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Escreva end-to-end testes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 
| Implemente adaptadores primários. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Desenvolvedor de aplicativos | 

## Recursos relacionados
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-resources"></a>

**Guia do APG**
+ [Criação de arquiteturas hexagonais na AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/hexagonal-architectures/)

**Referências da AWS**
+ [Documentação do AWS Lambda](https://docs.aws.amazon.com/lambda/)
+ [Documentação do AWS CDK](https://docs.aws.amazon.com/cdk/)
  + [Seu primeiro aplicativo AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [Documentação do API Gateway](https://docs.aws.amazon.com/apigateway/)
  + [Controlar o acesso a uma API com permissões do IAM](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html)
  + [Use o console do API Gateway para testar um método de API REST](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html)
+ [Documentação do Amazon DynamoDB](https://docs.aws.amazon.com/dynamodb/)

**Ferramentas**
+ [Site git-scm.com](https://git-scm.com/)
+ [Como instalar o Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+ [Criando um novo GitHub repositório](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository)
+ [Site em Python](https://www.python.org/)
+ [Powertools do AWS Lambda para Python](https://docs.powertools.aws.dev/lambda/python/latest/)
+ [Site do Postman](https://www.postman.com/)
+ [Biblioteca de objetos simulados em Python](https://docs.python.org/3/library/unittest.mock.html)
+ [Site do Poetry](https://python-poetry.org/)

**IDEs**
+ [Site do Visual Studio Code](https://code.visualstudio.com/)
+ [PyCharm site](https://www.jetbrains.com/pycharm/)

# Mais padrões
<a name="websitesandwebapps-more-patterns-pattern-list"></a>

**Topics**
+ [Acesse aplicativos de contêineres de forma privada no Amazon ECS usando o AWS Fargate, a PrivateLink AWS e um Network Load Balancer](access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.md)
+ [Acesse aplicativos de contêineres de forma privada no Amazon ECS usando a AWS PrivateLink e um Network Load Balancer](access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Associe um AWS CodeCommit repositório em um Conta da AWS com o Amazon SageMaker AI Studio Classic em outra conta](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Automatize a exclusão de AWS CloudFormation pilhas e recursos associados](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Restrinja o acesso com base no endereço IP ou geolocalização usando AWS WAF](aws-waf-restrict-access-geolocation.md)
+ [Crie um aplicativo móvel React Native de tecnologia sem servidor usando o AWS Amplify](build-a-serverless-react-native-mobile-app-by-using-aws-amplify.md)
+ [Crie e teste aplicativos iOS com AWS CodeCommit CodePipeline, AWS e AWS Device Farm](build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm.md)
+ [Configure o registro em log para aplicativos.NET no Amazon CloudWatch Logs usando NLog](configure-logging-for-net-applications-in-amazon-cloudwatch-logs-by-using-nlog.md)
+ [Consolidação da geração de URLs assinados previamente do Amazon S3 e o download de objetos por meio de um endpoint associado a endereços IP estáticos](consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.md)
+ [Crie uma definição de tarefa do Amazon ECS e monte um sistema de arquivos em EC2 instâncias usando o Amazon EFS](create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.md)
+ [Implemente um aplicativo baseado em gRPC em um cluster Amazon EKS e acesse-o com um Application Load Balancer](deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.md)
+ [Implemente uma ChatOps solução para gerenciar os resultados do escaneamento SAST usando o Amazon Q Developer em aplicativos de bate-papo, ações personalizadas e CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Implante canários CloudWatch Synthetics usando o Terraform](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Implante microsserviços Java no Amazon ECS usando o AWS Fargate](deploy-java-microservices-on-amazon-ecs-using-aws-fargate.md)
+ [Implemente um caso de uso do RAG AWS usando o Terraform e o Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Implante recursos em uma AWS Wavelength zona usando o Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Implementação do versionamento de APIs baseado em caminhos usando domínios personalizados no Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Migrar uma fila de mensagens do Microsoft Azure Service Bus para o Amazon SQS](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [Migre uma aplicação .NET do Microsoft Azure App Service para o AWS Elastic Beanstalk](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [Migrar um aplicativo web do Go on-premises para AWS Elastic Beanstalk usando o método binário](migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.md)
+ [Migrar um servidor SFTP local para usar AWS AWS Transfer for SFTP](migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp.md)
+ [Migre do IBM WebSphere Application Server para o Apache Tomcat na Amazon EC2](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)
+ [Migre do IBM WebSphere Application Server para o Apache Tomcat na Amazon EC2 com o Auto Scaling](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [Migrar aplicações Java on-premises para a AWS usando o App2Container da AWS](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [Migrar certificados SSL do Windows para um Application Load Balancer usando o ACM](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [Modernize aplicativos ASP.NET Web Forms na AWS](modernize-asp-net-web-forms-applications-on-aws.md)
+ [Monitore a atividade do aplicativo usando o CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Execute um contêiner Docker da API web ASP.NET Core em uma instância Amazon Linux EC2](run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.md)
+ [Envio de atributos personalizados para o Amazon Cognito e injeção desses atributos em tokens](send-custom-attributes-cognito.md)
+ [Ofereça conteúdo estático em um bucket do Amazon S3 por meio de uma VPC usando a Amazon CloudFront](serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.md)
+ [Configure uma PeopleSoft arquitetura altamente disponível na AWS](set-up-a-highly-available-peoplesoft-architecture-on-aws.md)
+ [Desenvolvimento e implantação simplificados de bots do Amazon Lex usando um fluxo de trabalho automatizado](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Solucione problemas de estados AWS Step Functions usando o Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)
+ [Uso do Network Firewall para capturar os nomes de domínio DNS da indicação do nome do servidor para o tráfego de saída](use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.md)
+ [Visualize os resultados do AI/ML modelo usando o Flask e o AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)