

• Le AWS Systems Manager CloudWatch tableau de bord ne sera plus disponible après le 30 avril 2026. Les clients peuvent continuer à utiliser CloudWatch la console Amazon pour consulter, créer et gérer leurs CloudWatch tableaux de bord Amazon, comme ils le font aujourd'hui. Pour plus d'informations, consultez la [documentation Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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.

# Création d’associations qui exécutent des recettes Chef
<a name="systems-manager-state-manager-chef"></a>

Vous pouvez créer des associations State Manager qui exécutent des recettes Chef à l’aide du document SSM `AWS-ApplyChefRecipes`. State Manager est un outil d’ AWS Systems Manager. Vous pouvez cibler des nœuds gérés par Systems Manager basés sur Linux avec le document SSM `AWS-ApplyChefRecipes`. Ce document offre les avantages suivants pour l’exécution de recettes Chef :
+ Il prend en charge plusieurs versions de Chef (de Chef 11 à Chef 18).
+ Il installe automatiquement le logiciel client Chef sur les nœuds cibles.
+ Il exécute éventuellement des [contrôles de conformité Systems Manager](systems-manager-compliance.md) sur les nœuds cibles et stocke les résultats des contrôles de conformité dans un compartiment Amazon Simple Storage Service (Amazon S3).
+ Il exécute plusieurs livres de cuisine et recettes en une seule fois du document.
+ Il peut exécuter des recettes en mode `why-run`, pour afficher lesquelles changeront sur les nœuds cibles sans y apporter de modifications.
+ Il peut appliquer des attributs JSON personnalisés aux exécutions `chef-client`.
+ Applique éventuellement des attributs JSON personnalisés à partir d'un fichier source stocké à l'emplacement spécifié.

Vous pouvez utiliser des compartiments [Git](#state-manager-chef-git), [GitHub](#state-manager-chef-github), [HTTP](#state-manager-chef-http) ou [Amazon S3](#state-manager-chef-s3) comme sources de téléchargement pour les livres de recettes et les recettes Chef que vous spécifiez dans un document `AWS-ApplyChefRecipes`.

**Note**  
Les associations exécutant des recettes Chef ne sont pas prises en charge sur macOS.

## Prise en main
<a name="state-manager-chef-prereqs"></a>

Avant de créer un document `AWS-ApplyChefRecipes`, préparez votre référentiel de livres de recettes et de recettes Chef. Si vous n'avez pas encore de Chef livre de recettes que vous souhaitez utiliser, vous pouvez commencer par utiliser un `HelloWorld` livre de recettes de test préparé pour vous. AWS Le document `AWS-ApplyChefRecipes` pointe déjà vers ce livre de recettes par défaut. Vos livres de recettes doivent être configurés de la même manière que la structure de répertoire suivante. Dans l’exemple suivant, `jenkins` et `nginx` sont des exemples de livres de recettes Chef disponibles dans le [https://supermarket.chef.io/](https://supermarket.chef.io/) sur le site Web de Chef.

Bien que les livres de cuisine ne AWS puissent pas être officiellement pris en charge sur le [https://supermarket.chef.io/](https://supermarket.chef.io/)site Web, beaucoup d'entre eux fonctionnent avec le `AWS-ApplyChefRecipes` document. Voici des exemples de critères à déterminer lorsque vous testez un livre de recette de la communauté :
+ Le livre de recettes doit prendre en charge les systèmes d'exploitation basés sur Linux des nœuds gérés par Systems Manager que vous ciblez.
+ Le livre de recettes doit être valide pour la version client de Chef que vous utilisez (de Chef 11 à Chef 18).
+ Le livre de recettes est compatible avec Chef Infra Client et ne nécessite pas de serveur Chef.

Vérifiez que vous pouvez accéder au site web `Chef.io`, afin que tous les livres de recettes que vous spécifiez dans votre liste d’exécution puissent être installés lors de l’exécution du document Systems Manager (document SSM). L'utilisation d'un fichier `cookbooks` imbriqué est prise en charge, mais pas obligatoire ; vous pouvez stocker des livres de recettes directement dans le niveau racine.

```
<Top-level directory, or the top level of the archive file (ZIP or tgz or tar.gz)>
    └── cookbooks (optional level)
        ├── jenkins
        │   ├── metadata.rb
        │   └── recipes
        └── nginx
            ├── metadata.rb
            └── recipes
```

**Important**  
Avant de créer une association State Manager qui exécute des recettes Chef, sachez que l’exécution du document installe le logiciel client Chef sur vos nœuds gérés Systems Manager, sauf si vous définissez la valeur de la **version du client Chef** sur `None`. Cette opération utilise un script d’installation de Chef pour installer les composants Chef en votre nom. Avant d’exécuter un document `AWS-ApplyChefRecipes`, assurez‑vous que votre entreprise peut se conformer à toutes les exigences légales en vigueur, y compris les conditions de licence applicables à l’utilisation du logiciel Chef. Pour plus d’informations, consultez le [site web Chef](https://www.chef.io/).

Systems Manager peut fournir des rapports de conformité à un compartiment S3, à la console Systems Manager ou rendre les résultats de conformité disponibles en réponse aux commandes d'API Systems Manager. Pour exécuter des rapports de conformité Systems Manager, le profil d'instance attaché aux nœuds gérés par Systems Manager doit disposer des autorisations d'écriture dans le compartiment S3. Le profil d'instance doit être autorisé à utiliser l'API Systems Manager `PutComplianceItem`. Pour de plus amples informations sur Systems Manager, consultez [Conformité d'AWS Systems Manager](systems-manager-compliance.md).

### Journalisation de l'exécution du document
<a name="state-manager-chef-logging"></a>

Lorsque vous exécutez un document Systems Manager (document SSM) à l'aide d'une State Manager association, vous pouvez configurer l'association pour choisir la sortie du document à exécuter, et vous pouvez envoyer la sortie à Amazon S3 ou Amazon CloudWatch Logs (CloudWatch Logs). Pour faciliter le dépannage lorsqu'une association est terminée, vérifiez que l'association est configurée pour écrire la sortie de commande dans un compartiment Amazon S3 ou dans CloudWatch des journaux. Pour de plus amples informations, veuillez consulter [Utilisation d'associations dans Systems Manager](state-manager-associations.md).

## Appliquer des attributs JSON aux cibles lors de l'exécution d'une recette
<a name="apply-custom-json-attributes"></a>

Vous pouvez spécifier des attributs JSON que votre client Chef doit appliquer aux nœuds cibles lors de l’exécution d’une association. Lors de la configuration de l'association, vous pouvez fournir du code JSON brut ou indiquer le chemin d'accès à un fichier JSON stocké dans Amazon S3.

Utilisez les attributs JSON lorsque vous souhaitez personnaliser le mode d'exécution de la recette sans avoir à modifier la recette elle-même, par exemple :
+ **Remplacer un petit nombre d'attributs**

  Utilisez JSON personnalisé pour éviter d'avoir à gérer plusieurs versions d'une recette pour tenir compte de différences mineures.
+ **Fournir des valeurs variables**

  Utilisez le JSON personnalisé pour spécifier les valeurs susceptibles de changer par rapport à run-to-run. Par exemple, si vos livres de recettes Chef configurent une application tierce qui accepte les paiements, vous pouvez utiliser un JSON personnalisé pour spécifier l’URL du point de terminaison de paiement. 

**Spécifier des attributs en JSON brut**

Voici un exemple du format que vous pouvez utiliser pour spécifier des attributs JSON personnalisés pour votre recette Chef.

```
{"filepath":"/tmp/example.txt", "content":"Hello, World!"}
```

**Spécifier un chemin d'accès à un fichier JSON**  
Voici un exemple du format que vous pouvez utiliser pour spécifier le chemin d’accès aux attributs JSON personnalisés pour votre recette Chef.

```
{"sourceType":"s3", "sourceInfo":"someS3URL1"}, {"sourceType":"s3", "sourceInfo":"someS3URL2"}
```

## Utiliser Git comme source de livre de recettes
<a name="state-manager-chef-git"></a>

Le document `AWS-ApplyChefRecipes` utilise le plug‑in [aws:downloadContent](documents-command-ssm-plugin-reference.md#aws-downloadContent) pour télécharger les livres de recettes Chef. Pour télécharger du contenu à partir de Git, spécifiez les informations relatives à votre référentiel Git au format JSON, comme dans l'exemple suivant. Remplacez chaque *example-resource-placeholder* par vos propres informations.

```
{
   "repository":"GitCookbookRepository",
   "privateSSHKey":"{{ssm-secure:ssh-key-secure-string-parameter}}",
   "skipHostKeyChecking":"false",
   "getOptions":"branch:refs/head/main",
   "username":"{{ssm-secure:username-secure-string-parameter}}",
   "password":"{{ssm-secure:password-secure-string-parameter}}"
}
```

## Utiliser GitHub comme source de livre de recettes
<a name="state-manager-chef-github"></a>

Le document `AWS-ApplyChefRecipes` utilise le plug‑in [aws:downloadContent](documents-command-ssm-plugin-reference.md#aws-downloadContent) pour télécharger les livres de recettes. Pour télécharger du contenu à partir de GitHub, spécifiez les informations relatives à votre référentiel GitHub au format JSON, comme dans l’exemple suivant. Remplacez chaque *example-resource-placeholder* par vos propres informations.

```
{
   "owner":"TestUser",
   "repository":"GitHubCookbookRepository",
   "path":"cookbooks/HelloWorld",
   "getOptions":"branch:refs/head/main",
   "tokenInfo":"{{ssm-secure:token-secure-string-parameter}}"
}
```

## Utiliser HTTP comme source de livre de recettes
<a name="state-manager-chef-http"></a>

Vous pouvez stocker les livres de recettes Chef dans un emplacement HTTP personnalisé sous la forme d’un fichier individuel `.zip` ou `tar.gz`, ou d’une structure de répertoires. Pour télécharger du contenu depuis HTTP, spécifiez le chemin d'accès au fichier ou au répertoire au format JSON comme dans l'exemple suivant. Remplacez chaque *example-resource-placeholder* par vos propres informations.

```
{
   "url":"https://my.website.com/chef-cookbooks/HelloWorld.zip",
   "allowInsecureDownload":"false",
   "authMethod":"Basic",
   "username":"{{ssm-secure:username-secure-string-parameter}}",
   "password":"{{ssm-secure:password-secure-string-parameter}}"
}
```

## Utiliser Amazon S3 comme source de livre de recettes
<a name="state-manager-chef-s3"></a>

Vous pouvez également stocker et télécharger des livres de recettes Chef dans Amazon S3 sous la forme d’un fichier individuel `.zip` ou `tar.gz`, ou d’une structure de répertoires. Pour télécharger du contenu depuis Amazon S3, spécifiez le chemin d'accès au fichier au format JSON comme dans les exemples suivants. Remplacez chaque *example-resource-placeholder* par vos propres informations.

**Exemple 1 : Télécharger un livre de recettes spécifique**

```
{
   "path":"https://s3.amazonaws.com/chef-cookbooks/HelloWorld.zip"
}
```

**Exemple 2 : Télécharger le contenu d'un répertoire**

```
{
   "path":"https://s3.amazonaws.com/chef-cookbooks-test/HelloWorld"
}
```

**Important**  
Si vous spécifiez Amazon S3, le profil d'instance Gestion des identités et des accès AWS (IAM) sur vos nœuds gérés doit être configuré avec la `AmazonS3ReadOnlyAccess` politique. Pour plus d’informations, consultez la section [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md).

## Création d’une association qui exécute les recettes Chef (console)
<a name="state-manager-chef-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour créer une association State Manager qui exécute les livres de recettes Chef à l’aide du document `AWS-ApplyChefRecipes`.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **State Manager**.

1. Sélectionnez **State Manager**, puis **Create association (Créer une association)**.

1. Pour **Name (Nom)**, saisissez un nom qui vous aide à mémoriser l'objectif de l'association.

1. Dans la liste **Document**, sélectionnez **`AWS-ApplyChefRecipes`**.

1. Dans **Paramètres**, pour **Type de source**, sélectionnez **Git**, **GitHub**, **HTTP** ou **S3**.

1. Pour **Informations sur la source**, entrez les informations sur la source du livre de recettes en utilisant le format approprié pour le **Type de source** que vous avez sélectionné à l'étape 6. Pour plus d’informations, consultez les rubriques suivantes :
   + [Utiliser Git comme source de livre de recettes](#state-manager-chef-git)
   + [Utiliser GitHub comme source de livre de recettes](#state-manager-chef-github)
   + [Utiliser HTTP comme source de livre de recettes](#state-manager-chef-http)
   + [Utiliser Amazon S3 comme source de livre de recettes](#state-manager-chef-s3)

1. Dans la **Run list (Liste d'exécution)**, listez les recettes que vous souhaitez exécuter au format suivant, en séparant chaque recette par une virgule comme indiqué. N'ajoutez pas d'espace après la virgule. Remplacez chaque *example-resource-placeholder* par vos propres informations.

   ```
   recipe[cookbook-name1::recipe-name],recipe[cookbook-name2::recipe-name]
   ```

1. (Facultatif) Spécifiez les attributs JSON personnalisés que vous souhaitez que le client Chef transmette à vos nœuds cibles.

   1. Dans **Contenu des attributs JSON**, ajoutez tous les attributs que vous souhaitez que le client Chef transmette à vos nœuds cibles.

   1. Dans **Sources d’attributs JSON**, ajoutez les chemins d’accès à tous les attributs que vous souhaitez que le client Chef transmette à vos nœuds cibles.

   Pour de plus amples informations, veuillez consulter [Appliquer des attributs JSON aux cibles lors de l'exécution d'une recette](#apply-custom-json-attributes).

1. Pour **Version du client Chef**, spécifiez une version de Chef. Les valeurs valides vont de `11` à `18` ou `None`. Si vous spécifiez un nombre compris entre `11` et `18` (inclus), Systems Manager installe la version du client Chef correspondante sur vos nœuds cibles. Si vous spécifiez `None`, Systems Manager n’installe pas le client Chef sur les nœuds cibles avant d’exécuter les recettes du document.

1. (Facultatif) Pour **Arguments du client Chef**, spécifiez des arguments supplémentaires pris en charge pour la version de Chef que vous utilisez. Pour en savoir plus sur les arguments pris en charge, exécutez `chef-client -h` sur un nœud qui exécute le client Chef.

1. (Facultatif) Activez **Why-run** pour afficher les modifications qui seront apportées aux nœuds cibles si les recettes sont exécutées, sans modifier réellement les nœuds cibles.

1. Pour **Compliance severity (Sévérité de conformité)**, sélectionnez la sévérité des résultats de conformité de la configuration Systems Manager que vous voulez rapportés. Les rapports de conformité indiquent si l'état de l'association est conforme ou non conforme, ainsi que le niveau de sévérité que vous spécifiez. Les rapports de conformité de la configuration sont stockés dans un comp)artiment S3 que vous spécifiez comme valeur du paramètre de **Compliance report bucket (Compartiment de rapport de conformité** (étape 14). Pour de plus amples informations sur la conformité, consultez [En savoir plus sur la conformité](compliance-about.md) dans ce guide.

   Les analyses de conformité mesurent la dérive entre la configuration spécifiée dans vos recettes Chef et les ressources de nœud. Les valeurs valables sont `Critical`, `High`, `Medium`, `Low` `Informational` `Unspecified` ou `None`. Pour ignorer les rapports de conformité, sélectionnez `None`.

1. Pour **Compliance type (Type de conformité)**, spécifiez le type de conformité pour lequel vous souhaitez que les résultats soient rapportés. Les valeurs valides `Association` concernent State Manager les associations ou `Custom:`*custom-type*. La valeur par défaut est `Custom:Chef`.

1. Pour **Compartiment de rapport de conformité**, saisissez le nom d’un compartiment S3 dans lequel stocker des informations sur chaque Chef exécuté par ce document, y compris la configuration des ressources et les résultats de conformité.

1. Dans **Rate control** (Contrôle du débit), configurez des options pour l'exécution d'associations State Manager dans un parc de nœuds gérés. Pour plus d'informations sur l'utilisation des contrôles de débit, consultez [Comprendre les cibles et les contrôles du taux dans les associations State Manager](systems-manager-state-manager-targets-and-rate-controls.md).

   Dans **Concurrency (Simultanéité)**, sélectionnez une option :
   + Sélectionnez **targets (cibles)** pour entrer un nombre absolu de cibles pouvant exécuter l'association simultanément.
   + Sélectionnez **percentage (pourcentage)** pour saisir un pourcentage de l'ensemble de cibles pouvant exécuter l'association simultanément.

   Dans **Error threshold (Seuil d'erreur)**, sélectionnez une option :
   + Sélectionnez **errors (erreurs)** pour saisir un nombre absolu d'erreurs autorisées avant que State Manager ne cesse d'exécuter des associations sur des cibles supplémentaires.
   + Sélectionnez **percentage (pourcentage)** pour saisir un pourcentage d'erreurs autorisées avant que State Manager ne cesse d'exécuter des associations sur des cibles supplémentaires.

1. (Facultatif) Dans **Output options (Options de sortie)**, pour enregistrer la sortie de la commande dans un fichier, sélectionnez **Enable writing to an S3 bucket (Autoriser l'écriture dans un compartiment S3)** Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.
**Note**  
Les autorisations S3 qui donnent la possibilité d'écrire les données dans un compartiment S3 sont celles du profil d'instance attribué au nœud géré, et non celles de l'utilisateur IAM qui effectue cette tâche. Pour plus d’informations, consultez les sections [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md) et [Créer un rôle de service IAM pour un environnement hybride](hybrid-multicloud-service-role.md). En outre, si le compartiment S3 spécifié se trouve sur un autre Compte AWS, vérifiez que le profil d'instance ou la fonction de service IAM associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

1. Sélectionnez **Create Association (Créer une association)**.

## Création d’une association qui exécute des recettes Chef (CLI)
<a name="state-manager-chef-cli"></a>

La procédure suivante décrit comment utiliser le AWS Command Line Interface (AWS CLI) pour créer une State Manager association qui exécute les livres de recettes Chef à l'aide du `AWS-ApplyChefRecipes` document.

1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

   Pour de plus amples informations, consultez [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Exécutez l’une des commandes suivantes pour créer une association qui exécute des livres de recettes Chef sur les nœuds cibles disposant des balises spécifiées. Utilisez la commande adaptée au type de source de votre livre de cuisine et à votre système d'exploitation. Remplacez chaque *example-resource-placeholder* par vos propres informations.

   1. **Source Git**

------
#### [ Linux & macOS ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" \
          --targets Key=tag:TagKey,Values=TagValue \
          --parameters '{"SourceType":["Git"],"SourceInfo":["{\"repository\":\"repository-name\", \"getOptions\": \"branch:branch-name\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \
          --association-name "name" \
          --schedule-expression "cron-or-rate-expression"
      ```

------
#### [ Windows ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^
          --targets Key=tag:TagKey,Values=TagValue ^
          --parameters '{"SourceType":["Git"],"SourceInfo":["{\"repository\":\"repository-name\", \"getOptions\": \"branch:branch-name\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' ^
          --association-name "name" ^
          --schedule-expression "cron-or-rate-expression"
      ```

------

   1. **GitHub source**

------
#### [ Linux & macOS ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" \
          --targets Key=tag:TagKey,Values=TagValue \
          --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner-name\", \"repository\": \"name\", \"path\": \"path-to-directory-or-cookbook-to-download\", \"getOptions\": \"branch:branch-name\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \
          --association-name "name" \
          --schedule-expression "cron-or-rate-expression"
      ```

------
#### [ Windows ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^
          --targets Key=tag:TagKey,Values=TagValue \
          --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner-name\", \"repository\": \"name\", \"path\": \"path-to-directory-or-cookbook-to-download\", \"getOptions\": \"branch:branch-name\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' ^
          --association-name "name" ^
          --schedule-expression "cron-or-rate-expression"
      ```

------

      Voici un exemple.

------
#### [ Linux & macOS ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" \
          --targets Key=tag:OS,Values=Linux \
          --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ChefRecipeTest\", \"repository\": \"ChefCookbooks\", \"path\": \"cookbooks/HelloWorld\", \"getOptions\": \"branch:master\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' \
          --association-name "MyChefAssociation" \
          --schedule-expression "cron(0 2 ? * SUN *)"
      ```

------
#### [ Windows ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^
          --targets Key=tag:OS,Values=Linux ^
          --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ChefRecipeTest\", \"repository\": \"ChefCookbooks\", \"path\": \"cookbooks/HelloWorld\", \"getOptions\": \"branch:master\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' ^
          --association-name "MyChefAssociation" ^
          --schedule-expression "cron(0 2 ? * SUN *)"
      ```

------

   1. **Source HTTP**

------
#### [ Linux & macOS ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" \
          --targets Key=tag:TagKey,Values=TagValue \
          --parameters '{"SourceType":["HTTP"],"SourceInfo":["{\"url\":\"url-to-zip-file|directory|cookbook\", \"authMethod\": \"auth-method\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \
          --association-name "name" \
          --schedule-expression "cron-or-rate-expression"
      ```

------
#### [ Windows ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^
          --targets Key=tag:TagKey,Values=TagValue ^
          --parameters '{"SourceType":["HTTP"],"SourceInfo":["{\"url\":\"url-to-zip-file|directory|cookbook\", \"authMethod\": \"auth-method\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \
          --association-name "name" ^
          --schedule-expression "cron-or-rate-expression"
      ```

------

   1. **Source Amazon S3**

------
#### [ Linux & macOS ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" \
          --targets Key=tag:TagKey,Values=TagValue \
          --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_cookbook_to_download\"}"], "RunList":["{\"recipe[cookbook_name1::recipe_name]\", \"recipe[cookbook_name2::recipe_name]\"}"], "JsonAttributesContent": ["{Custom_JSON}"], "ChefClientVersion": ["version_number"], "ChefClientArguments":["{chef_client_arguments}"], "WhyRun": true_or_false, "ComplianceSeverity": ["severity_value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["amzn-s3-demo-bucket"]}' \
          --association-name "name" \
          --schedule-expression "cron_or_rate_expression"
      ```

------
#### [ Windows ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^
          --targets Key=tag:TagKey,Values=TagValue ^
          --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_cookbook_to_download\"}"], "RunList":["{\"recipe[cookbook_name1::recipe_name]\", \"recipe[cookbook_name2::recipe_name]\"}"], "JsonAttributesContent": ["{Custom_JSON}"], "ChefClientVersion": ["version_number"], "ChefClientArguments":["{chef_client_arguments}"], "WhyRun": true_or_false, "ComplianceSeverity": ["severity_value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["amzn-s3-demo-bucket"]}' ^
          --association-name "name" ^
          --schedule-expression "cron_or_rate_expression"
      ```

------

      Voici un exemple.

------
#### [ Linux & macOS ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" \
          --targets "Key=tag:OS,Values= Linux" \
          --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/HelloWorld\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' \
          --association-name "name" \
          --schedule-expression "cron(0 2 ? * SUN *)"
      ```

------
#### [ Windows ]

      ```
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^
          --targets "Key=tag:OS,Values= Linux" ^
          --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/HelloWorld\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' ^
          --association-name "name" ^
          --schedule-expression "cron(0 2 ? * SUN *)"
      ```

------

      Le système crée l'association et, à moins que votre expression cron ou rate spécifiée ne l'empêche, le système exécute l'association sur les nœuds cibles.
**Note**  
Les associations State Manager ne prennent pas en charge toutes les expressions cron et rate. Pour plus d'informations sur la création d'expressions cron et rate pour des associations, consultez [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

1. Exécutez la commande suivante pour afficher le statut de l'association que vous venez de créer. 

   ```
   aws ssm describe-association --association-id "ID"
   ```

## Affichage des détails de conformité des ressources Chef
<a name="state-manager-chef-compliance"></a>

Systems Manager capture les informations de conformité sur les ressources gérées par Chef dans la valeur de **compartiment de rapport de conformité** Amazon S3 que vous avez spécifiées lors de l’exécution du document `AWS-ApplyChefRecipes`. La recherche d’informations sur les défaillances de ressources Chef dans un compartiment S3 peut prendre un certain temps. Au lieu de cela, vous pouvez consulter ces informations sur la page **Compliance (Conformité)** de Systems Manager.

Une analyse de conformité Systems Manager collecte des informations sur les ressources de vos nœuds gérés qui ont été créées ou vérifiées lors de la dernière exécution de Chef. Les ressources peuvent inclure des fichiers, des répertoires, des services `systemd`, des packages `yum`, des fichiers modélisés, des packages `gem` et des livres de recettes dépendants, entre autres.

La section **Récapitulatif des ressources de conformité** affiche le nombre de ressources qui ont échoué. Dans l'exemple suivant, il **ComplianceType**s'agit de **Custom : Chef** et une ressource n'est pas conforme.

**Note**  
`Custom:Chef`est la **ComplianceType**valeur par défaut du `AWS-ApplyChefRecipes` document. Cette valeur est personnalisable.

![\[Affichage de comptages dans la section Compliance resources summary (Récapitulatif des ressources de conformité) de la page Compliance (Conformité).\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/state-manager-chef-compliance-summary.png)


La section **Présentation détaillée des ressources** contient des informations sur la AWS ressource qui n'est pas conforme. Cette section inclut également le type de ressource Chef sur lequel l’analyse de conformité a été exécutée, la sévérité du problème, le statut de conformité ainsi que des liens pour en savoir plus, le cas échéant.

![\[Affichage des détails de conformité pour une défaillance de ressource gérée par Chef\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/state-manager-chef-compliance-details.png)


Le lien **Afficher la sortie** affiche les 4 000 derniers caractères du statut détaillé. Systems Manager commence par l'exception comme premier élément, recherche les messages détaillés et les affiche jusqu'à ce qu'il atteigne le quota de 4 000 caractères. Ce processus affiche les messages de journal qui ont été générés avant que l'exception soit déclenchée, qui sont les plus pertinents pour la résolution.

Pour de plus amples informations sur la façon d'afficher les informations de conformité, consultez [Conformité d'AWS Systems Manager](systems-manager-compliance.md).

**Important**  
Si l'association State Manager échoue, aucune donnée de conformité n'est présentée. Par exemple, si Systems Manager tente de télécharger un livre de recettes Chef à partir d’un compartiment S3 auquel le nœud n’est pas autorisé à accéder, l’association échoue et aucune donnée de conformité n’est rapportée par Systems Manager.