

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.

# Ajouter des ressources tierces à AWS Config
<a name="customresources-adding"></a>

Procédez comme suit pour ajouter une ressource tierce à AWS Config.

**Topics**
+ [Étape 1 : Configurer votre environnement de développement](#customresources-setupdevenvironment)
+ [Étape 2 : Modéliser votre ressource](#customresources-modelresource)
+ [Étape 3 : Générer des artefacts](#generateartifactsforcfnsubmit)
+ [Étape 4 : Enregistrer la ressource](#customresources-registerresource)
+ [Étape 5 : Publier la configuration des ressources](#customresources-publishresourceconfiguration)

## Étape 1 : Configurer votre environnement de développement
<a name="customresources-setupdevenvironment"></a>

Installez et configurez l’ CloudFormation AWS CLI. Vous AWS CLI permet de modéliser et d'enregistrer vos ressources personnalisées. Pour plus d'informations, voir [Ressources personnalisées](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) et [Qu'est-ce que l'interface de ligne de CloudFormation commande ?](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) .

## Étape 2 : Modéliser votre ressource
<a name="customresources-modelresource"></a>

Créez un schéma de fournisseur de ressources conforme à la configuration du type de ressource et valide.

1. Utilisez la commande `init` pour créer votre projet de fournisseur de ressources et générer les fichiers nécessaires.

   ```
   $ cfn init
   Initializing new project
   ```

1. La commande `init` lance un assistant qui vous guide tout au long de la configuration du projet, y compris lors de la spécification du nom de la ressource. Pour cette procédure pas à pas, spécifiez `MyCustomNamespace::Testing::WordPress`.

   ```
   Enter resource type identifier (Organization::Service::Resource): MyCustomNamespace::Testing::WordPress
   ```

1. Entrez un nom de package pour votre ressource.

   ```
   Enter a package name (empty for default 'com.custom.testing.wordpress'): com.custom.testing.wordpress 
   Initialized a new project in /workplace/user/custom-testing-wordpress
   ```
**Note**  
Afin de garantir la résolution appropriée de toutes les dépendances du projet, vous pouvez importer le projet généré dans votre IDE avec la prise en charge de Maven.  
Par exemple, si vous utilisez IntelliJ IDEA, il se peut que vous deviez suivre la procédure suivante :  
Dans le menu **Fichier**, choisissez **Nouveau**, puis **Projet provenant de sources existantes**.
Accédez au répertoire du projet
Dans la boîte de dialogue **Importer un projet**, choisissez **Importer un projet depuis un modèle externe**, puis sélectionnez **Maven**.
Choisissez **Suivant** et acceptez toutes les valeurs par défaut pour terminer l'importation du projet.

1. Ouvrez le fichier `mycustomnamespace-testing-wordpress.json` qui contient le schéma de votre ressource. Copiez et collez le schéma suivant dans `mycustomnamespace-testing-wordpress.json`.

   ```
   {
     "typeName": "MyCustomNamespace::Testing::WordPress",
     "description": "An example resource that creates a website based on WordPress 5.2.2.",
     "properties": {
       "Name": {
         "description": "A name associated with the website.",
         "type": "string",
         "pattern": "^[a-zA-Z0-9]{1,219}\\Z",
         "minLength": 1, "maxLength": 219
       },
       "SubnetId": {
         "description": "A subnet in which to host the website.",
         "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z",
         "type": "string"
       },
       "InstanceId": {
         "description": "The ID of the instance that backs the WordPress site.",
         "type": "string"
       },
       "PublicIp": {
         "description": "The public IP for the WordPress site.",
         "type": "string"
       }
     },
     "required": [ "Name", "SubnetId" ],
     "primaryIdentifier": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "readOnlyProperties": [ "/properties/PublicIp", "/properties/InstanceId" ],
     "additionalProperties": false
   }
   ```

1. Validez le schéma.

   ```
   $ cfn validate
   ```

1. Mettez à jour les fichiers générés automatiquement dans le package du fournisseur de ressources pour afficher les mises à jour du schéma du fournisseur de ressources. Lors du lancement du projet de fournisseur de ressources, il AWS CLI génère des fichiers de support et du code pour le fournisseur de ressources. Régénérez le code pour voir le schéma mis à jour.

   ```
   $ cfn generate
   ```
**Note**  
Lorsque vous utilisez Maven, dans le cadre du processus de création, la commande `generate` est automatiquement exécutée avant que le code ne soit compilé. Ainsi, vos modifications ne seront jamais désynchronisées avec le code généré.  
Sachez que la CloudFormation CLI doit se trouver dans un emplacement que Maven/the le système peut trouver. Pour plus d'informations, consultez [Configuration de votre environnement pour les extensions de développement](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html#resource-type-setup).

Pour plus d'informations sur l'ensemble du processus, consultez [Modélisation des fournisseurs de ressources à utiliser dans CloudFormation](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-model.html).

## Étape 3 : Générer des artefacts
<a name="generateartifactsforcfnsubmit"></a>

Exécutez la commande suivante pour générer des artefacts pour `cfn submit`.

```
$ mvn package
```

## Étape 4 : Enregistrer la ressource
<a name="customresources-registerresource"></a>

AWS Config ne nécessite pas que les gestionnaires de fournisseurs de ressources effectuent le suivi de la configuration de votre ressource. Exécutez la commande suivante pour enregistrer votre ressource.

```
$ cfn submit
```

Pour plus d'informations, consultez la section [Enregistrement des fournisseurs de ressources à utiliser dans les CloudFormation modèles](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-register.html).

## Étape 5 : Publier la configuration des ressources
<a name="customresources-publishresourceconfiguration"></a>

Déterminez la configuration pour MyCustomNamespace ::Testing : :WordPress.

```
{
  "Name": "MyWordPressSite",
  "SubnetId": "subnet-abcd0123",
  "InstanceId": "i-01234567",
  "PublicIp": "my-wordpress-site.com"
}
```

Déterminez l'identifiant de version du schéma à partir de CloudFormation `DescribeType`. 

Dans AWS Config, vous pouvez voir si cette configuration de ressource est acceptée. Pour évaluer la conformité, vous pouvez rédiger AWS Config des règles à l'aide de cette ressource.

(Facultatif) Pour automatiser l'enregistrement de la configuration, implémentez des collecteurs de configuration périodiques ou basés sur les modifications.