

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.

# Transmission de données aux applications
<a name="apps-data"></a>

**Important**  
Le AWS OpsWorks Stacks service a atteint sa fin de vie le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez l' AWS Support équipe sur [AWS Re:Post](https://repost.aws/) ou via le [AWS Support](https://aws.amazon.com/support) Premium.

Il est souvent utile de transmettre des données telles que les paires clé-valeur à une application sur le serveur. Pour ce faire, utilisez [JSON personnalisé](workingstacks-json.md) pour ajouter les données à la pile. OpsWorks Stacks ajoute les données à l'objet nœud de chaque instance pour chaque événement du cycle de vie. 

Cependant, notez que, même si les recettes peuvent obtenir le JSON personnalisé à partir de l'objet de nœud à l'aide des attributs Chef, les applications ne le peuvent pas. Une approche pour obtenir les données JSON personnalisées d'une ou de plusieurs applications consiste à mettre en place une recette personnalisée qui extrait les données à partir de l'objet `node` et les écrit dans un fichier que l'application peut lire. L'exemple dans cette rubrique montre comment écrire les données dans un fichier YAML, mais vous pouvez utiliser la même approche de base pour d'autres formats, tels que JSON ou XML.

Pour passer les données clé-valeur aux instances de la pile, ajoutez le JSON personnalisé comme suit à la pile. Pour plus d'informations sur l'ajout du JSON personnalisé à une pile, consultez [Utilisation du JSON personnalisé](workingstacks-json.md).

```
{
  "my_app_data": {
    "app1": {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
    },
    "app2": {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
    }
  }
}
```

L'exemple suppose que vous ayez deux applications dont les noms courts sont `app1` et `app2`, chacune ayant trois valeurs de données. La recette d'accompagnement présume que vous utilisiez les noms courts des applications pour identifier les données associées ; les autres noms sont arbitraires. Pour plus d'informations sur les noms courts d'application, consultez [Settings](workingapps-creating.md#workingapps-creating-settings).

La recette de l'exemple suivant montre comment extraire les données de chaque application à partir des attributs `deploy` et les placer dans un fichier `.yml`. La recette part du principe que votre JSON personnalisé contient les données de chaque application.

```
node[:deploy].each do |app, deploy|
  file File.join(deploy[:deploy_to], 'shared', 'config', 'app_data.yml') do
    content YAML.dump(node[:my_app_data][app].to_hash)
  end
end
```

Les attributs `deploy` contiennent un attribut pour chaque application, nommé d'après le nom court de l'application. Chaque attribut d'application contient un ensemble d'attributs qui représentent différentes informations sur l'application. Cet exemple utilise le répertoire de déploiement de l'application, représenté par l'attribut `[:deploy][:app_short_name][:deploy_to]`. Pour plus d’informations sur `[:deploy]`, consultez [Attributs deploy](attributes-json-deploy.md).

Pour chaque application de `deploy`, la recette effectue les opérations suivantes :

1. Crée un fichier nommé `app_data.yml` dans le sous-répertoire `shared/config` du répertoire `[:deploy_to]` de l'application.

   Pour plus d'informations sur la façon dont OpsWorks Stacks installe les applications, consultez. [Recettes Deploy](create-custom-deploy.md)

1. Convertit les valeurs JSON personnalisées de l'application en YAML et écrit les données mises en forme sur `app_data.yml`.

**Pour transmettre les données à une application**

1. Ajoutez une application à la pile et notez son nom court. Pour de plus amples informations, veuillez consulter [Ajout d'applications](workingapps-creating.md).

1. Ajoutez le JSON personnalisé avec les données de l'application aux attributs `deploy`, comme indiqué plus tôt. Pour plus d'informations sur l'ajout du JSON personnalisé à une pile, consultez [Utilisation du JSON personnalisé](workingstacks-json.md).

1. Créez un livre de recettes et ajoutez une recette avec le code basé sur l'exemple précédent, modifié en fonction des besoins pour les noms d'attributs que vous avez utilisés dans le JSON personnalisé. Pour plus d'informations sur la création de livres de recettes et de recettes, consultez [Livres de recettes et recettes](workingcookbook.md). Si vous avez déjà des livres personnalisés pour cette pile, vous pouvez aussi ajouter la recette à un livre de recettes existant, ou même ajouter le code à une recette Deploy existante.

1. Installez le livre de recettes sur votre pile. Pour de plus amples informations, veuillez consulter [Installation de livres de recettes personnalisés](workingcookbook-installingcustom-enable.md).

1. Attribuez la recette à l'événement Deploy Lifecycle de la couche du serveur d'applications. OpsWorks Stacks exécutera ensuite la recette sur chaque nouvelle instance, après son démarrage. Pour de plus amples informations, veuillez consulter [Exécution des recettes](workingcookbook-executing.md).

1. Déployez l'application, qui installe également les attributs de configuration et de déploiement de pile, lesquels contiennent désormais vos données.

**Note**  
Si les fichiers de données doivent être en place avant le déploiement de l'application, vous pouvez également assigner la recette à l'événement du cycle Setup de la couche, qui se produit une fois, juste après la fin du démarrage de l'instance. Cependant, OpsWorks Stacks n'aura pas encore créé les répertoires de déploiement. Votre recette doit donc créer les répertoires requis de manière explicite avant de créer le fichier de données. L'exemple suivant crée explicitement le répertoire `/shared/config` de l'application, puis crée un fichier de données dans ce répertoire.  

```
node[:deploy].each do |app, deploy|

 directory "#{deploy[:deploy_to]}/shared/config" do
      owner "deploy"
      group "www-data"
      mode 0774
      recursive true
      action :create
    end

  file File.join(deploy[:deploy_to], 'shared', 'config', 'app_data.yml') do
    content YAML.dump(node[:my_app_data][app].to_hash)
  end
end
```

Pour charger les données, vous pouvez utiliser, par exemple, le code [Sinatra](http://www.sinatrarb.com/) suivant :

```
#!/usr/bin/env ruby
# encoding: UTF-8
require 'sinatra'
require 'yaml'

get '/' do
  YAML.load(File.read(File.join('..', '..', 'shared', 'config', 'app_data.yml')))
End
```

Vous pouvez mettre à jour les valeurs des données de l'application à tout moment en modifiant le JSON personnalisé, comme suit.

**Pour mettre à jour les données de l'application**

1. Modifiez le JSON personnalisé pour mettre à jour les valeurs des données.

1. Déployez à nouveau l'application, qui indique à OpsWorks Stacks d'exécuter les recettes de déploiement sur les instances de la pile. Comme les recettes utilisent les attributs extraits des attributs de configuration et de déploiement mis à jour de la pile, votre recette personnalisée met à jour les fichiers de données avec les valeurs actuelles.