

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.

# Configurations d'enregistrement AWS Config pour des ressources tierces à l'aide du AWS CLI
<a name="customresources"></a>

Enregistrez les configurations pour les ressources tierces ou les types de ressources personnalisés tels que les serveurs sur site, les outils de surveillance SAAS et les systèmes de contrôle de version (similaires GitHub).

Vous pouvez publier les données de configuration de ressources tierces dans, consulter AWS Config et surveiller l'inventaire des ressources et l'historique de configuration à l'aide de la AWS Config console et APIs. Vous pouvez l'utiliser AWS Config pour gérer toutes vos ressources et évaluer la configuration des ressources pour en vérifier la conformité par rapport aux meilleures pratiques à l'aide de AWS Config règles. Vous pouvez également créer des AWS Config règles ou des packs de conformité pour évaluer ces ressources tierces par rapport aux meilleures pratiques, aux politiques internes et aux politiques réglementaires. 

**Note**  
Si vous avez configuré AWS Config pour enregistrer tous les types de ressources, les ressources tierces qui sont gérées (créées, mises à jour ou supprimées) CloudFormation sont automatiquement suivies en AWS Config tant qu'éléments de configuration.

**Prérequis :** les ressources tierces ou le type de ressource personnalisé doivent être enregistrés à l'aide de CloudFormation. 

**Topics**
+ [Ajouter des ressources](customresources-adding.md)
+ [Éléments de configuration d'enregistrement](add-custom-resource-type-cli.md)
+ [Lecture des éléments de configuration](view-custom-resource-type-cli.md)
+ [Suppression de ressources](delete-custom-resource-type.md)

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

# Enregistrez les éléments de configuration AWS Config pour les ressources tierces à l'aide du AWS CLI
<a name="add-custom-resource-type-cli"></a>

Enregistrez un élément de configuration pour une ressource tierce ou un type de ressource personnalisé à l'aide de la procédure suivante :

Assurez-vous d'enregistrer le type de ressource `MyCustomNamespace::Testing::WordPress` avec le schéma qui lui correspond.

1. Ouvrez une invite de commande ou une fenêtre de terminal.

1. Entrez la commande suivante :

   ```
   aws configservice put-resource-config --resource-type MyCustomNamespace::Testing::WordPress --resource-id resource-001 --schema-version-id 00000001 --configuration  '{
     "Id": "resource-001",
     "Name": "My example custom resource.",
     "PublicAccess": false
   }'
   ```

**Note**  
Tel que défini dans le schéma de type, `writeOnlyProperties` sera supprimé de la configuration avant d'être enregistré par AWS Config. Cela signifie que ces valeurs ne seront pas présentes lorsque la configuration sera obtenue par lecture APIs. Pour plus d’informations sur `writeOnlyProperties`, consultez [Schéma du type de ressource](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-schema.html).

# Lisez les éléments de configuration AWS Config destinés à des ressources tierces à l'aide du AWS CLI
<a name="view-custom-resource-type-cli"></a>

Lisez un élément de configuration pour une ressource tierce ou un type de ressource personnalisé en suivant la procédure suivante :

1. Ouvrez une invite de commande ou une fenêtre de terminal.

1. Entrez la commande suivante :

   ```
   aws configservice list-discovered-resources --resource-type MyCustomNamespace::Testing::WordPress
   ```

1. Appuyez sur Entrée.

   Vous devez voir des résultats similaires à ce qui suit :

   ```
   {
       "resourceIdentifiers": [
           {
               "resourceType": "MyCustomNamespace::Testing::WordPress",
               "resourceId": "resource-001"
           }
       ]
   }
   ```

1. Entrez la commande suivante :

   ```
   aws configservice batch-get-resource-config --resource-keys '[ { "resourceType": "MyCustomNamespace::Testing::WordPress", "resourceId": "resource-001" } ]'
   ```

1. Appuyez sur Entrée.

   Vous devez voir des résultats similaires à ce qui suit :

   ```
   {
       "unprocessedResourceKeys": [],
       "baseConfigurationItems": [
           {
               "configurationItemCaptureTime": 1569605832.673,
               "resourceType": "MyCustomNamespace::Testing::WordPress",
               "resourceId": "resource-001",
               "configurationStateId": "1569605832673",
               "awsRegion": "us-west-2",
               "version": "1.3",
               "supplementaryConfiguration": {},
               "configuration": "{\"Id\":\"resource-001\",\"Name\":\"My example custom resource.\",\"PublicAccess\":false}",
               "configurationItemStatus": "ResourceDiscovered",
               "accountId": "AccountId"
           }
       ]
   }
   ```

# Supprimez les ressources tierces de AWS Config l'utilisation du AWS CLI
<a name="delete-custom-resource-type"></a>

Entrez la commande suivante pour supprimer une ressource tierce :

```
aws configservice delete-resource-config --resource-type MyCustomNamespace::Testing::WordPress --resource-id resource-002
```

En cas de réussite, la commande s'exécute sans sortie supplémentaire.