AWS OpsWorks Référence du sac de données Stacks - AWS OpsWorks

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.

AWS OpsWorks Référence du sac de données Stacks

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 ou via le AWS Support Premium.

AWS OpsWorks Stacks expose une grande variété de paramètres aux recettes sous forme de contenu de sac de données Chef. Cette référence répertorie le contenu des conteneurs de données.

Un conteneur de données est un concept Chef. Un conteneur de données est une variable globale qui est stockée en tant que données JSON sur une instance ; les données JSON sont accessibles à partir de Chef. Par exemple, un sac de données peut stocker des variables globales telles que l'URL source d'une application, le nom d'hôte de l'instance et l'identifiant VPC de la pile associée. AWS OpsWorks Stacks stocke ses sacs de données sur les instances de chaque pile. Sur les instances Linux, AWS OpsWorks Stacks stocke les sacs de données dans le /var/chef/runs/run-ID/data_bags répertoire. Sur les instances Windows, il stocke les conteneurs de données dans le répertoire drive:\chef\runs\run-id\data_bags. Dans les deux cas, Run-ID est un identifiant unique que AWS OpsWorks Stacks attribue à chaque exécution de Chef sur une instance. Ces répertoires incluent un ensemble de conteneurs de données (sous-répertoires). Chaque conteneur de données contient zéro ou plusieurs éléments de conteneurs de données, fichiers au format JSON contenant les ensembles des contenus des conteneurs de données.

Note

AWS OpsWorks Stacks ne prend pas en charge les sacs de données cryptés. Pour stocker des données sensibles sous une forme chiffrée, telle que mots de passe ou certificats, nous vous recommandons de les stocker dans un compartiment S3 privé. Vous pouvez ensuite créer une recette personnalisée qui utilise le Kit SDK Amazon pour Ruby pour récupérer les données. Pour obtenir un exemple, consultez Utilisation du kit SDK pour Ruby.

Le contenu d'un conteneur de données peut inclure les éléments suivants :

  • Contenu chaîne qui respecte la syntaxe Ruby standard et peut utiliser des guillemets simples ou doubles, même si les chaînes contenant des caractères spéciaux doivent avoir des guillemets doubles. Pour plus d'informations, consultez le site de la documentation Ruby.

  • Contenu booléen, qui est soit true soit false (sans guillemets).

  • Contenu numérique, qui correspond à des nombres entiers ou décimaux, tels que 4 ou 2.5 (sans guillemets).

  • Contenu liste, qui prend la forme de valeurs séparées par des virgules entre crochets (sans guillemets), comme [ '80', '443' ]

  • Objets JSON, qui comportent un contenu supplémentaire de conteneur de données, comme "my-app": {"elastic_ip": null,...}.

Les recettes Chef peuvent accéder aux conteneurs de données, aux éléments des conteneurs de données et au contenu des conteneurs de données via la recherche Chef ou directement. Ce qui suit explique comment utiliser les deux approches d'accès (même si la recherche Chef est privilégiée).

Pour accéder à un sac de données via Chef Search, utilisez la méthode de recherche en spécifiant l'index de recherche souhaité. AWS OpsWorks Stacks fournit les index de recherche suivants :

Une fois que vous connaissez le nom de l'index de recherche, vous pouvez accéder au contenu du sac données de cet index de recherche. Par exemple, le code de recette suivant utilise l'index de recherche aws_opsworks_app pour obtenir le contenu du premier élément du conteneur de données (le premier fichier JSON) du conteneur de données aws_opsworks_app (le répertoire aws_opsworks_app). Le code écrit ensuite deux messages dans le journal Chef, l'un avec le contenu du conteneur de données du nom court de l'application (une chaîne du fichier JSON) et l'autre avec le contenu du conteneur de données de l'URL source de l'application (une autre chaîne du fichier JSON) :

app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")

['shortname'] et ['app_source']['url'] spécifient le contenu du conteneur de données suivant du fichier JSON correspondant :

{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }

Pour obtenir la liste du contenu de conteneur de données que vous pouvez rechercher, consultez les rubriques de référence de cette section.

Vous pouvez également parcourir un ensemble d'éléments d'un conteneur de données. Par exemple, le code de recette suivant est similaire à l'exemple précédent ; il parcourt chacun des éléments du conteneur de données lorsqu'il y a plusieurs éléments :

search("aws_opsworks_app").each do |app| Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

Si vous savez qu'il existe un contenu de conteneur de données spécifique, vous pouvez trouver l'élément de conteneur de données correspondant avec la syntaxe suivante :

search("search_index", "key:value").first

Par exemple, le code de recette suivant utilise l'index de recherche aws_opsworks_app pour trouver l'élément de conteneur de données qui contient le nom court de mylinuxdemoapp. Il utilise ensuite le contenu de l'élément de conteneur de données pour écrire un message dans le journal Chef avec le nom court et l'URL source de l'application correspondante :

app = search("aws_opsworks_app", "shortname:mylinuxdemoapp").first Chef::Log.info("********** For the app with the short name '#{app['shortname']}', the app's URL is '#{app['app_source']['url']}' **********")

Pour l'index de recherche aws_opsworks_instance uniquement, vous pouvez spécifier self:true pour représenter l'instance sur laquelle la recette est exécutée. Le code de recette suivant utilise le contenu de l'élément du sac de données correspondant pour écrire un message dans le journal Chef avec l'ID et le système d'exploitation AWS OpsWorks générés par Stacks de l'instance correspondante :

instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")

Au lieu d'utiliser la recherche Chef pour accéder aux conteneurs de données, aux éléments des conteneurs de données et au contenu des conteneurs de données, vous pouvez y accéder directement. Pour ce faire, utilisez les méthodes data_bag et data_bag_item pour accéder respectivement aux conteneurs de données et aux éléments des conteneurs de données. Par exemple, le code de recette suivant fait les mêmes choses que les exemples précédents, sauf qu'il accède directement à un seul élément de conteneur de données, puis à plusieurs éléments de conteneur de données lorsqu'il y en a plusieurs :

# Syntax: data_bag_item("the data bag name", "the file name in the data bag without the file extension") app = data_bag_item("aws_opsworks_app", "mylinuxdemoapp") Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") data_bag("aws_opsworks_app").each do |data_bag_item| app = data_bag_item("aws_opsworks_app", data_bag_item) Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

Entre ces deux approches, nous vous recommandons d'utiliser la recherche Chef. Tous les exemples associés de ce guide illustrent cette approche.