

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

# Utilizzo di Enterprise Blueprint Factory
<a name="using-factory"></a>

Questa sezione consente di creare, aggiornare o eliminare i blueprint nel proprio ambiente. Fornisce istruzioni dettagliate per la gestione di un blueprint durante l'intero [ciclo di vita.](architecture-blueprint-lifecycle.md)

[Per creare o aggiornare blueprint personalizzati, è necessario conoscere come creare modelli IaC, come AWS CloudFormation[modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) o costrutti. AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html) Questa guida non include informazioni o istruzioni su come definire i blueprint rilasciati tramite Enterprise Blueprint Factory.

## Prerequisiti
<a name="using-factory-prereqs"></a>

Di seguito sono riportati i prerequisiti per l'utilizzo di Enterprise Blueprint Factory nell'ambiente in uso: AWS 
+ AWS Command Line Interface [(AWS CLI), [installato e configurato](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Autorizzazioni per assumere il ruolo `ServiceCatalogEndUserRole` AWS Identity and Access Management (IAM)
+ Un CloudFormation modello o AWS CDK un costrutto

## Creazione di un blueprint
<a name="using-factory-create"></a>

Le pipeline di Enterprise Blueprint Factory distribuiscono i blueprint definiti nel file di configurazione. Lo sviluppatore avvia la pipeline di configurazione unendo il file di configurazione nel repository di configurazione. Quindi, Enterprise Blueprint Factory utilizza il `ServiceCatalogLaunchConstraintRole` per distribuire il blueprint come prodotto in Service Catalog. [Per ulteriori informazioni sulle azioni eseguite dalla pipeline di configurazione e dalla pipeline di rilascio quando si crea un blueprint, vedere Creazione di Blueprint in questa guida.](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-create)

**Per aggiungere il blueprint all'archivio del prodotto**

1. Assicurati di aver configurato Enterprise Blueprint Factory secondo le istruzioni riportate in [Configurazione di Enterprise Blueprint Factory](setup.md) in questa guida.

1. Conferma che la politica per il `ServiceCataloglogLaunchConstraintRole` ruolo consenta di fornire le risorse definite nel blueprint.

1. Nell'archivio del prodotto (`ServiceCatalog-BlueprintProductRepo`), crea una cartella per il nuovo blueprint.

1. Incolla il modello IAc (CloudFormation modello o AWS CDK costrutto) nella cartella che hai creato.

1. Crea un file denominato **product\_config.json** nella cartella che hai creato.

1. Apri il file **product\_config.json** e incolla quanto segue nel file:

   ```
   {
       "SchemaVersion": "1.0",
       "ProductVersionName": "1.0.1",
       "Deprecated_Versions" : [],
       "ProductVersionDescription": "<description>",
       "ProductType": "CLOUD_FORMATION_TEMPLATE",
       "Properties": {
           "TemplateFilePath": "./<folder name>/<file name>"
       }
   }
   ```

   Dove:
   + `<description>`è una breve descrizione della versione del blueprint
   + `<folder name>`è il nome della cartella creata nell'archivio del prodotto
   + `<file name>`è il nome del modello IAc
**Nota**  
È possibile aggiornare la versione dello schema o i nomi delle versioni del prodotto in modo che corrispondano alle politiche dell'organizzazione.

1. Salvate e chiudete il **file product\_config.json**.

1. Immettete i seguenti comandi per unire le modifiche nell'archivio del prodotto:

   ```
   cd ServiceCatalog-BlueprintProductRepo
   git add <folder name>/<file name> <folder name>\product_config.json
   git commit -m "The first version of <file name> blueprint"
   git push origin main
   ```

**Per aggiornare il file di configurazione**

1. Nel repository di configurazione (`ServiceCatalog-ConfigRepo`), aprite il file **config.yml.**

1. Modificate la `portfolios` sezione e la `products` sezione secondo necessità per il nuovo blueprint. Per ulteriori informazioni, consulta [il file di configurazione](architecture-components.md#architecture-config-file) in questa guida.

1. Salvate e chiudete il **file config.yml.**

1. Immettete i seguenti comandi per unire le modifiche nel repository di configurazione:

   ```
   cd ServiceCatalog-ConfigRepo
   git add config.yml
   git commit -m "<description of change>"
   git push origin main
   ```

   L'approvazione di questa pull request avvia la pipeline di configurazione. La pipeline di configurazione crea una pipeline di rilascio per il prodotto.

**Per esaminare i registri di distribuzione**

1. Accedere all'account amministrativo di Enterprise Blueprint Factory.

1. Apri la [AWS CodePipeline console](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. In **Nome**, scegli la pipeline di rilascio per il prodotto. Per impostazione predefinita, il nome della pipeline è. `BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`

1. Scegli **View history (Visualizza cronologia)**.

1. Visualizza lo stato della pipeline e dell'esecuzione della fase. Per ulteriori informazioni sullo stato, consulta [Visualizza lo stato di esecuzione](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console) nella CodePipeline documentazione.

1. Se la pipeline fallisce, esamina la causa dell'errore. Per istruzioni su come configurare il monitoraggio per le pipeline, consulta [Monitoraggio delle pipeline nella documentazione](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html). CodePipeline Se la pipeline di rilascio non è riuscita a causa di un controllo cfn-lint o cfn\_nag, correggi l'errore nel modello. Invia un'altra pull request al repository del prodotto. Questo riavvia la pipeline di rilascio. Per ulteriori informazioni sulla correzione degli errori del modello, consultate la sezione [Risoluzione dei problemi](#using-factory-troubleshooting) di questa guida.

1. Attendi che lo stato della pipeline di rilascio sia raggiunto. `Succeeded`

**Per convalidare la distribuzione**

1. Accedi a un account consumatore dell'organizzazione.

1. Assumi il ruolo di `ServiceCatalogEndUserRole` IAM.

1. Aprire la [console Service Catalog](https://console.aws.amazon.com/servicecatalog/).

1. Nel riquadro di navigazione, scegli **Prodotti**.

1. Verifica che il nuovo prodotto sia disponibile nell'elenco dei prodotti.

## Aggiornamento di uno schema
<a name="using-factory-update"></a>

Per ulteriori informazioni sulle azioni eseguite dalla pipeline di configurazione e dalla pipeline di rilascio quando si crea un blueprint, consulta Blueprint update in questa [guida](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-update).

**Per aggiornare un blueprint**

1. Nell'archivio del prodotto, accedi alla cartella del prodotto.

1. Incolla il modello iAc aggiornato. Assicurati che il nome del file sia lo stesso della versione precedente.

1. Apri il file **product\_config.json**.

1. Per`ProductVersionName`, aggiorna il numero di versione.

1. Se desideri evitare che la versione precedente del prodotto venga distribuita in futuro`Deprecated_Versions`, inserisci i numeri di versione precedenti in un elenco separato da virgole.

1. Immettete i seguenti comandi per unire le modifiche nell'archivio del prodotto:

   ```
   cd ServiceCatalog-BlueprintProductRepo
   git add <folder name>/<file name> <folder name>\product_config.json
   git commit -m "Version <number> of <file name> blueprint"
   git push origin main
   ```

   L'approvazione di questa pull request avvia la pipeline di rilascio del prodotto.

**Per esaminare i registri di distribuzione**

1. Accedere all'account amministrativo di Enterprise Blueprint Factory.

1. Apri la [AWS CodePipeline console](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. In **Nome**, scegli la pipeline di rilascio. Per impostazione predefinita, il nome della pipeline è. `BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`

1. Scegli **View history (Visualizza cronologia)**.

1. Visualizza lo stato della pipeline e dell'esecuzione della fase. Per ulteriori informazioni sullo stato, consulta [Visualizza lo stato di esecuzione](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console) nella CodePipeline documentazione.

1. Se la pipeline fallisce, esamina la causa dell'errore. Per istruzioni su come configurare il monitoraggio per le pipeline, consulta [Monitoraggio delle pipeline nella documentazione](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html). CodePipeline Se la pipeline di rilascio non è riuscita a causa di un controllo cfn-lint o cfn\_nag, correggi l'errore nel modello. Invia un'altra pull request al repository del prodotto. Questo riavvia la pipeline di rilascio. Per ulteriori informazioni sulla correzione degli errori del modello, consultate la sezione [Risoluzione dei problemi](#using-factory-troubleshooting) di questa guida.

1. Attendi che lo stato della pipeline di rilascio sia raggiunto. `Succeeded`

**Per convalidare l'aggiornamento**

1. Accedi a un account consumatore dell'organizzazione.

1. Assumi il ruolo di `ServiceCatalogEndUserRole` IAM.

1. Aprire la [console Service Catalog](https://console.aws.amazon.com/servicecatalog/).

1. Nel riquadro di navigazione, scegli **Prodotti**.

1. Verifica che la nuova versione del prodotto sia disponibile nell'elenco dei prodotti.

## Eliminazione di un blueprint
<a name="using-factory-delete"></a>

Quando elimini un prodotto, Service Catalog rimuove tutte le versioni del prodotto da ogni portafoglio che contiene il prodotto. Per ulteriori informazioni, vedere [Eliminazione dei prodotti](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html) nella documentazione del Service Catalog. Per ulteriori informazioni sulle azioni eseguite dalla pipeline di configurazione e dalla pipeline di rilascio quando si crea un blueprint, consulta la sezione Eliminazione del blueprint in questa [guida](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-delete).

**Per eliminare un blueprint**

1. Nel repository di configurazione, apri il file **config.yml**.

1. Modifica la sezione prodotti, rimuovi o commenta il prodotto che desideri eliminare.

1. Salva e chiudi il **file config.yml.**

1. Immettete i seguenti comandi per unire le modifiche nel repository di configurazione:

   ```
   cd ServiceCatalog-ConfigRepo
   git add config.yml
   git commit -m "<description of change>"
   git push origin main
   ```

   L'approvazione di questa pull request avvia la pipeline di configurazione. La pipeline di configurazione elimina il prodotto e la relativa pipeline di rilascio.

1. Nell'archivio del prodotto, elimina la cartella del prodotto, incluso il suo contenuto.

1. Immettete i seguenti comandi per unire le modifiche nell'archivio del prodotto:

   ```
   cd ServiceCatalog-BlueprintProductRepo
   git add .
   git commit -m "Delete <file name> blueprint"
   git push origin main
   ```

**Per convalidare l'eliminazione**

1. Accedi a un account consumatore dell'organizzazione.

1. Assumi il ruolo di `ServiceCatalogEndUserRole` IAM.

1. Aprire la [console Service Catalog](https://console.aws.amazon.com/servicecatalog/).

1. Nel riquadro di navigazione, scegli **Prodotti**.

1. Conferma che il prodotto eliminato non è più disponibile.

## Risoluzione dei problemi
<a name="using-factory-troubleshooting"></a>

Quando crei o aggiorni un blueprint, gli strumenti cfn-lint e cfn-nag convalidano il blueprint. [Per ulteriori informazioni sulla convalida nella pipeline di rilascio, consulta Release pipeline in questa guida.](architecture-components.md#architecture-release-pipeline) Qualsiasi errore di sintassi o di sicurezza segnalato causa il fallimento della pipeline. Per distribuire correttamente il blueprint tramite la pipeline di rilascio, è necessario correggere gli errori nel blueprint.

Di seguito è riportato un esempio di output che mostra due errori relativi alla sicurezza, un errore e un avviso.

```
BP-SNS.yml
---------------------------------------------------
BP-SNS.yml
---------------------------------------------------
| WARN W47
|
| Resource: ["ExampleTopic"]
| Line numbers: [5]
|
| SNS Topic should specify KmsMasterKeyId property
---------------------------------------------------
| FAIL F18
|
| Resource: ["ExampleTopicPolicy"]
| Line numbers: [10]
|
| SNS topic policy should not allow * principal

Failures count: 1
Warnings count: 1
```

Per correggere questi errori, nel file blueprint, devi sostituire il `*` principale nella policy tematica di Amazon Simple Notification Service (Amazon SNS) e associare una chiave AWS Key Management Service (AWS KMS) all'argomento. Il seguente esempio di codice illustra questi aggiornamenti.

```
ExampleTopic:
    Type: AWS::SNS::Topic  
    Properties:
      TopicName: ExampleTopic
  ExampleTopicPolicy:
    Type: AWS::SNS::TopicPolicy
    Properties: 
      KmsMasterKeyId: alias/aws/sns  # Added KMS key
      PolicyDocument:
        Id: Id1
        Version: '2012-10-17'
        Statement:
        - Sid: Sid2
          Effect: Allow
          Principal:            
            "Service" : "s3.amazonaws.com"  # Replaced "AWS": '*'
          Action: 'sns:Publish'
          Resource: !Ref ExampleTopic
      Topics: 
        - !Ref ExampleTopic
```