

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

# 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.<br />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)<br />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`<br />`Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '*/home/runner/work/service-catalog-with-github-actions/service-catalog-with-github-actions`<br />`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)