

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de l'Enterprise Blueprint Factory
<a name="using-factory"></a>

Cette section vous aide à créer, mettre à jour ou supprimer des plans dans votre environnement. Il fournit des instructions détaillées pour gérer un plan tout au long de son [cycle de vie.](architecture-blueprint-lifecycle.md)

Pour créer ou mettre à jour des plans personnalisés, vous devez savoir comment créer des modèles IaC, tels que des AWS CloudFormation [modèles ou des AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) [constructions](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html). Ce guide ne contient pas d'informations ni d'instructions sur la façon de définir les plans que vous publiez via Enterprise Blueprint Factory.

## Prérequis
<a name="using-factory-prereqs"></a>

Les conditions préalables à l'utilisation de l'Enterprise Blueprint Factory dans votre AWS environnement sont les suivantes :
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Autorisations pour assumer le `ServiceCatalogEndUserRole` Gestion des identités et des accès AWS rôle (IAM)
+ Un CloudFormation modèle ou une AWS CDK construction

## Création d'un plan
<a name="using-factory-create"></a>

Les pipelines Enterprise Blueprint Factory déploient les plans que vous définissez dans le fichier de configuration. Le développeur lance le pipeline de configuration en fusionnant le fichier de configuration dans le référentiel de configuration. Ensuite, l'Enterprise Blueprint Factory utilise le `ServiceCatalogLaunchConstraintRole` pour déployer le plan en tant que produit dans Service Catalog. Pour plus d'informations sur les actions effectuées par le pipeline de configuration et le pipeline de publication lorsque vous créez un plan, consultez la section [Création du plan](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-create) dans ce guide.

**Pour ajouter le plan au référentiel de produits**

1. Assurez-vous d'avoir configuré votre Enterprise Blueprint Factory conformément aux instructions de la section [Configuration de l'Enterprise Blueprint Factory](setup.md) de ce guide.

1. Vérifiez que la politique du `ServiceCataloglogLaunchConstraintRole` rôle vous permet de fournir les ressources définies dans le plan.

1. Dans le référentiel de produits (`ServiceCatalog-BlueprintProductRepo`), créez un dossier pour le nouveau plan.

1. Collez le modèle IaC (CloudFormation modèle ou AWS CDK construction) dans le dossier que vous avez créé.

1. Créez un fichier nommé **product\_config.json** dans le dossier que vous avez créé.

1. Ouvrez le fichier **product\_config.json** et collez-y le texte suivant :

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

   Où :
   + `<description>`est une brève description de la version du plan
   + `<folder name>`est le nom du dossier que vous avez créé dans le référentiel de produits
   + `<file name>`est le nom du modèle IaC
**Note**  
Vous pouvez mettre à jour la version du schéma ou les noms de version du produit en fonction des politiques de votre organisation.

1. Enregistrez et fermez le fichier **product\_config.json**.

1. Entrez les commandes suivantes pour fusionner les modifications dans le référentiel de produits :

   ```
   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
   ```

**Pour mettre à jour le fichier de configuration**

1. Dans le référentiel de configuration (`ServiceCatalog-ConfigRepo`), ouvrez le fichier **config.yml.**

1. Modifiez la `portfolios` section et `products` la section selon les besoins du nouveau plan. Pour plus d'informations, consultez [la section Fichier de configuration](architecture-components.md#architecture-config-file) de ce guide.

1. Enregistrez et fermez le **fichier config.yml.**

1. Entrez les commandes suivantes pour fusionner les modifications dans le référentiel de configuration :

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

   L'approbation de cette pull request lance le pipeline de configuration. Le pipeline de configuration crée un pipeline de lancement pour le produit.

**Pour consulter les journaux de déploiement**

1. Connectez-vous au compte administratif d'Enterprise Blueprint Factory.

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

1. Dans **Nom**, choisissez le pipeline de publication du produit. Par défaut, le nom du pipeline est`BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`.

1. Choisissez **Afficher l'historique**.

1. Consultez l'état du pipeline et de l'exécution de l'étape. Pour plus d'informations sur le statut, voir [Afficher le statut d'exécution](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console) dans la CodePipeline documentation.

1. En cas de défaillance du pipeline, examinez la cause de la panne. Pour obtenir des instructions sur la façon de configurer la surveillance de vos pipelines, consultez la section [Surveillance des pipelines](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html) dans la CodePipeline documentation. Si le pipeline de publication a échoué en raison d'une vérification cfn-lint ou cfn\_nag, corrigez l'erreur dans le modèle. Soumettez une autre pull request au dépôt du produit. Cela redémarre le pipeline de publication. Pour plus d'informations sur la correction des erreurs de modèle, consultez la section [Dépannage](#using-factory-troubleshooting) de ce guide.

1. Attendez que l'état du pipeline de publication soit atteint`Succeeded`.

**Pour valider le déploiement**

1. Connectez-vous à un compte client dans l'organisation.

1. Assumez le rôle `ServiceCatalogEndUserRole` IAM.

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

1. Dans le volet de navigation, sélectionnez **Products**.

1. Vérifiez que le nouveau produit est disponible dans la liste des produits.

## Mise à jour d'un plan
<a name="using-factory-update"></a>

Pour plus d'informations sur les actions effectuées par le pipeline de configuration et le pipeline de publication lorsque vous créez un plan, consultez la section [Mise à jour du plan](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-update) dans ce guide.

**Pour mettre à jour un plan**

1. Dans le référentiel du produit, accédez au dossier du produit.

1. Collez le modèle IaC mis à jour. Assurez-vous que le nom du fichier est identique à celui de la version précédente.

1. Ouvrez le fichier **product\_config.json**.

1. Pour`ProductVersionName`, mettez à jour le numéro de version.

1. Si vous souhaitez empêcher le déploiement futur de la version précédente du produit`Deprecated_Versions`, entrez les numéros de version précédents dans une liste séparée par des virgules.

1. Entrez les commandes suivantes pour fusionner les modifications dans le référentiel de produits :

   ```
   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'approbation de cette pull request lance le pipeline de lancement du produit.

**Pour consulter les journaux de déploiement**

1. Connectez-vous au compte administratif d'Enterprise Blueprint Factory.

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

1. Dans **Nom**, choisissez le pipeline de publication. Par défaut, le nom du pipeline est`BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`.

1. Choisissez **Afficher l'historique**.

1. Consultez l'état du pipeline et de l'exécution de l'étape. Pour plus d'informations sur le statut, voir [Afficher le statut d'exécution](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console) dans la CodePipeline documentation.

1. En cas de défaillance du pipeline, examinez la cause de la panne. Pour obtenir des instructions sur la façon de configurer la surveillance de vos pipelines, consultez la section [Surveillance des pipelines](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html) dans la CodePipeline documentation. Si le pipeline de publication a échoué en raison d'une vérification cfn-lint ou cfn\_nag, corrigez l'erreur dans le modèle. Soumettez une autre pull request au dépôt du produit. Cela redémarre le pipeline de publication. Pour plus d'informations sur la correction des erreurs de modèle, consultez la section [Dépannage](#using-factory-troubleshooting) de ce guide.

1. Attendez que l'état du pipeline de publication soit atteint`Succeeded`.

**Pour valider la mise à jour**

1. Connectez-vous à un compte client dans l'organisation.

1. Assumez le rôle `ServiceCatalogEndUserRole` IAM.

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

1. Dans le volet de navigation, sélectionnez **Products**.

1. Vérifiez que la nouvelle version du produit est disponible dans la liste des produits.

## Supprimer un plan
<a name="using-factory-delete"></a>

Lorsque vous supprimez un produit, Service Catalog supprime toutes les versions du produit de chaque portefeuille contenant le produit. Pour plus d'informations, consultez [la section Suppression de produits](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html) dans la documentation du Service Catalog. Pour plus d'informations sur les actions effectuées par le pipeline de configuration et le pipeline de publication lorsque vous créez un plan, consultez la section [Suppression du plan](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-delete) dans ce guide.

**Pour supprimer un plan**

1. Dans le référentiel de configuration, ouvrez le fichier **config.yml.**

1. Modifiez la section des produits, supprimez ou commentez le produit que vous souhaitez supprimer.

1. Enregistrez et fermez le **fichier config.yml.**

1. Entrez les commandes suivantes pour fusionner les modifications dans le référentiel de configuration :

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

   L'approbation de cette pull request lance le pipeline de configuration. Le pipeline de configuration supprime le produit et son pipeline de lancement.

1. Dans le référentiel du produit, supprimez le dossier du produit, y compris son contenu.

1. Entrez les commandes suivantes pour fusionner les modifications dans le référentiel de produits :

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

**Pour valider la suppression**

1. Connectez-vous à un compte client dans l'organisation.

1. Assumez le rôle `ServiceCatalogEndUserRole` IAM.

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

1. Dans le volet de navigation, sélectionnez **Products**.

1. Vérifiez que le produit supprimé n'est plus disponible.

## Résolution des problèmes
<a name="using-factory-troubleshooting"></a>

Lorsque vous créez ou mettez à jour un plan, les outils cfn-lint et cfn-nag valident le plan. Pour plus d'informations sur la validation dans le pipeline de publication, consultez la section [Pipeline de publication](architecture-components.md#architecture-release-pipeline) de ce guide. Toute erreur de syntaxe ou de sécurité signalée entraîne l'échec du pipeline. Pour déployer correctement le plan dans le pipeline de publication, vous devez corriger les erreurs contenues dans le plan.

Voici un exemple de sortie qui montre deux erreurs liées à la sécurité, une défaillance et un avertissement.

```
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
```

Pour corriger ces erreurs, dans le fichier de plan, vous devez remplacer le `*` principal dans la politique thématique d'Amazon Simple Notification Service (Amazon SNS) et associer une clé AWS Key Management Service (AWS KMS) au sujet. L'exemple de code suivant illustre ces mises à jour.

```
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
```