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
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/
répertoire. Sur les instances Windows, il stocke les conteneurs de données dans le répertoire run-ID
/data_bags
. Dans les deux cas, drive
:\chef\runs\run-id
\data_bagsRun-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
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
soitfalse
(sans guillemets). -
Contenu numérique, qui correspond à des nombres entiers ou décimaux, tels que
4
ou2.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
-
aws_opsworks_app, qui représente un ensemble d'applications déployées pour une pile.
-
aws_opsworks_command, qui représente un ensemble de commandes exécutées sur une pile.
-
aws_opsworks_ecs_cluster, qui représente un ensemble d'instances de cluster Amazon Elastic Container Service (Amazon ECS) pour une pile.
-
aws_opsworks_elastic_load_balancer, qui représente un ensemble d'équilibreurs de charge Elastic Load Balancing pour une pile.
-
aws_opsworks_instance, qui représente un ensemble d'instances d'une pile.
-
aws_opsworks_layer, qui représente un ensemble de couches d'une pile.
-
aws_opsworks_rds_db_instance, qui représente un ensemble d'instances Amazon Relational Database Service (Amazon RDS) pour une pile.
-
aws_opsworks_stack, qui représente une pile.
-
aws_opsworks_user, qui représente un ensemble d'utilisateurs d'une pile.
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']}' **********")
Où ['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
# 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.
Rubriques
- Conteneur de données d'application (aws_opsworks_app)
- Conteneurs de données de commandes (aws_opsworks_command)
- Sac de données du cluster Amazon ECS (aws_opsworks_ecs_cluster)
- Sac de données Elastic Load Balancing (aws_opsworks_elastic_load_balancer)
- Conteneur de données de l'instance (aws_opsworks_instance)
- Conteneur de données de la couche (aws_opsworks_layer)
- Sac de données Amazon RDS (aws_opsworks_rds_db_instance)
- Conteneur de données de la pile (aws_opsworks_stack)
- Conteneur de données utilisateur (aws_opsworks_user)