

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esegui il provisioning di AWS Service Catalog prodotti basati su AWS CloudFormation modelli utilizzando GitHub Actions
<a name="provision-aws-service-catalog-products-using-github-actions"></a>

*Ashish Bhatt e Ruchika Modi, Amazon Web Services*

## Riepilogo
<a name="provision-aws-service-catalog-products-using-github-actions-summary"></a>

Questo modello offre alle organizzazioni un approccio semplificato che utilizza [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)prodotti e portafogli per fornire prodotti e portafogli standardizzati e conformi a tutti i team. Servizi AWS [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)aiuta a combinare componenti essenziali nei prodotti e nei portafogli di Service Catalog per il provisioning dell'infrastruttura di rete di base. Cloud AWS[Questo modello promuove anche DevOps pratiche che integrano l'infrastruttura come codice (IaC) nei flussi di lavoro di sviluppo automatizzati utilizzando Actions. GitHub ](https://github.com/features/actions)

AWS Service Catalog consente alle organizzazioni di creare e gestire servizi IT approvati su AWS, offrendo vantaggi quali standardizzazione, controllo centralizzato, fornitura self-service e gestione dei costi. Automatizzando l'implementazione dei portafogli e dei prodotti Service Catalog tramite GitHub Actions, le aziende possono fare quanto segue:
+ Ottieni implementazioni coerenti e ripetibili. 
+ Usa il controllo della versione per IAc. 
+ Integra la gestione delle risorse cloud con i flussi di lavoro di sviluppo esistenti. 

Questa combinazione semplifica le operazioni cloud, rafforza la conformità e accelera la fornitura di servizi approvati, riducendo al contempo gli errori manuali e migliorando l'efficienza complessiva.

## Prerequisiti e limitazioni
<a name="provision-aws-service-catalog-products-using-github-actions-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS 
+ Accesso al [GitHub repository](https://docs.github.com/en/get-started/quickstart/create-a-repo)
+ Conoscenza di base di e AWS CloudFormation AWS Service Catalog
+ Un bucket Amazon Simple Storage Service (Amazon S3) per ospitare modelli CloudFormation 
+ Un ruolo AWS Identity and Access Management (IAM) denominato utilizzato per `github-actions` la connettività tra e GitHub AWS

**Limitazioni**
+ Il codice riutilizzabile di questo pattern è stato testato solo con GitHub Actions.
+ Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità per regione, vedi [Servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta [Endpoints and quotas del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

**Versioni del prodotto**

La soluzione di questo pattern è stata creata utilizzando le seguenti azioni del [GitHub Marketplace](https://github.com/marketplace) e le rispettive versioni:
+ `actions/checkout@v4`
+ `aws-actions/configure-aws-credentials@v2`
+ `aws-actions/aws-cloudformation-github-deploy@v1.2.0`

## Architecture
<a name="provision-aws-service-catalog-products-using-github-actions-architecture"></a>

Il diagramma seguente mostra l'architettura di questa soluzione.

![\[Utilizzo di GitHub Actions per fornire prodotti Service Catalog basati su CloudFormation modelli.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/49f82fa7-0c74-4581-bf92-95505dca264c/images/a13c7b41-534e-4a9e-bdca-2974fa40a49a.png)


1. Gli amministratori o gli ingegneri della piattaforma inviano CloudFormation modelli standardizzati a un GitHub repository, dove vengono mantenuti. Il GitHub repository contiene anche flussi di lavoro che automatizzano il provisioning dell'utilizzo di Actions. AWS Service Catalog GitHub 

1. GitHub Actions attiva un flusso di lavoro che si connette all' Cloud AWS utilizzo di un provider OpenID Connect (OIDC) per la fornitura di Service Catalog.

1. Service Catalog contiene il portafoglio e i prodotti che gli sviluppatori possono utilizzare direttamente per fornire AWS risorse standardizzate. Questo modello raggruppa AWS risorse come cloud privati virtuali (VPCs), sottoreti, gateway NAT e Internet e tabelle di routing.

1. Dopo che lo sviluppatore ha creato un prodotto Service Catalog, Service Catalog lo converte in risorse preconfigurate e AWS standardizzate. Di conseguenza, gli sviluppatori risparmiano tempo perché non devono fornire risorse individuali e configurarle manualmente.

## Tools (Strumenti)
<a name="provision-aws-service-catalog-products-using-github-actions-tools"></a>

**Servizi AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita in e in tutto il loro ciclo di vita. Account AWS Regioni AWSÈ un servizio Infrastructure as Code (IaC) che può essere facilmente utilizzato come uno dei tipi di prodotto con. AWS Service Catalog
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted.html)ti aiuta a gestire centralmente il catalogo di servizi IT approvati. AWS Gli utenti finali possono distribuire rapidamente soltanto i servizi IT approvati di cui hanno bisogno, in accordo con i vincoli stabiliti dall'organizzazione.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

**Altri**
+ [GitHub Actions](https://docs.github.com/en/actions) è una piattaforma di integrazione e distribuzione continua (CI/CD) strettamente integrata con i repository. GitHub Puoi utilizzare GitHub Actions per automatizzare la pipeline di compilazione, test e distribuzione.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [service-catalog-with-github-actions](https://github.com/aws-samples/service-catalog-with-github-actions). Il repository contiene i seguenti file di interesse:
+ `github/workflows`:
  + `e2e-test.yaml`— Questo file chiama`workflow.yaml`, che è il flusso di lavoro [riutilizzabile](https://docs.github.com/en/actions/sharing-automations/reusing-workflows). Questo flusso di lavoro viene attivato non appena viene eseguito un commit and push su una filiale.
  + `workflow.yaml`— Questo file contiene il flusso di lavoro riutilizzabile per questa soluzione ed è configurato `workflow_call` come trigger. Essendo un flusso di lavoro riutilizzabile, `workflow.yaml` può essere richiamato da qualsiasi altro flusso di lavoro.
+ `templates`:
  + `servicecatalog-portfolio.yaml`— Questo CloudFormation modello include risorse che forniscono il portafoglio Service Catalog e il prodotto Service Catalog. Il modello contiene un set di parametri che vengono utilizzati durante il provisioning del portafoglio e dei prodotti Service Catalog. Un parametro accetta l'URL di un file Amazon S3 in cui `vpc.yaml` viene caricato il modello. Sebbene questo modello includa il `vpc.yaml` file per il provisioning AWS delle risorse, puoi anche utilizzare il parametro URL del file S3 per la configurazione.
  + `vpc.yaml`— Questo CloudFormation modello contiene AWS risorse da aggiungere nel prodotto Service Catalog. AWS le risorse includono VPCs sottoreti, gateway Internet, gateway NAT e tabelle di routing. Il `vpc.yaml` modello è un esempio di come è possibile utilizzare qualsiasi CloudFormation modello con un modello di prodotto e portafoglio Service Catalog.

## Best practice
<a name="provision-aws-service-catalog-products-using-github-actions-best-practices"></a>
+ Consulta [le migliori pratiche di sicurezza AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-best-practices.html) nella AWS Service Catalog documentazione. 
+ Vedi [Rafforzamento della sicurezza per GitHub le azioni](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions) nella GitHub documentazione.

## Epiche
<a name="provision-aws-service-catalog-products-using-github-actions-epics"></a>

### Configura una workstation locale
<a name="set-up-local-workstation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configurare Git sulla workstation locale. | Per installare e configurare Git sulla tua workstation locale, usa le istruzioni [Getting Started — Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) nella documentazione di Git. | Sviluppatore di app | 
| Clona il repository del GitHub progetto. | Per clonare il repository del GitHub progetto, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps ingegnere | 

### Configura il provider OIDC
<a name="set-up-the-oidc-provider"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configurare un provider OIDC. | Crea un provider OpenID Connect (OIDC) che consenta ai flussi di lavoro GitHub Actions di accedere alle risorse AWS, senza dover archiviare le credenziali come segreti di lunga durata. AWS GitHub Per istruzioni, consulta [Configurazione di OpenID Connect in Amazon](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) Web Services GitHub nella documentazione.Dopo la configurazione di un provider OIDC, la policy di fiducia del ruolo IAM`github-actions`, menzionata in precedenza nei [Prerequisiti](#provision-aws-service-catalog-products-using-github-actions-prereqs), verrà aggiornata. | Amministratore AWS, AWS DevOps, AWS generale | 

### Pipeline Trigger GitHub Actions per implementare il portafoglio e i prodotti Service Catalog
<a name="trigger-github-actions-pipeline-to-deploy-sc-portfolio-and-products"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Aggiornare `e2e-test.yaml`. | Il `e2e-test.yaml` file attiva il flusso di lavoro riutilizzabile in. `workflow.yaml` Aggiorna e convalida i valori per i seguenti parametri di input in: `e2e-test.yaml`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps ingegnere | 

### Convalida l'implementazione
<a name="validate-deployment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida le risorse del Service Catalog. | Per convalidare le risorse del Service Catalog, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | AWS DevOps | 

### Eseguire la pulizia delle risorse
<a name="clean-up-resources"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Elimina lo CloudFormation stack. | Per eliminare lo CloudFormation stack, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html)Per ulteriori informazioni, consulta [Eliminare uno stack dalla CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) nella documentazione CloudFormation  | DevOps ingegnere, amministratore AWS | 

## Risoluzione dei problemi
<a name="provision-aws-service-catalog-products-using-github-actions-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| `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?` | Per assicurarti di avere abilitato le impostazioni corrette del repository, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | 

## Risorse correlate
<a name="provision-aws-service-catalog-products-using-github-actions-resources"></a>

**AWS documentazione**
+ [Panoramica del Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)

**Altre risorse**
+ [Informazioni sugli eventi che attivano i flussi di lavoro](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#about-events-that-trigger-workflows) (GitHub documentazione)
+ [Riutilizzo dei flussi di lavoro](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) (documentazione) GitHub 

## Informazioni aggiuntive
<a name="provision-aws-service-catalog-products-using-github-actions-additional"></a>

Per vedere gli screenshot relativi a [Epics](#provision-aws-service-catalog-products-using-github-actions-epics), vai alla cartella **Immagini nel repository** di questo pattern. GitHub Sono disponibili le schermate seguenti:
+ [AWS Service Catalog portfolio, sezione Amministrazione](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_portfolio.png)
+ [AWS Service Catalog prodotto, sezione Amministrazione](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product.png)
+ [AWS Service Catalog prodotto, User/Provisioning sezione](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product_User.png)