Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS OpsWorks Referencia de la bolsa de datos Stacks
importante
El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los actuales. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post
AWS OpsWorks Stacks ofrece una amplia variedad de ajustes para las recetas como contenido de la bolsa de datos de Chef. Esta referencia enumera el contenido de un contenedor de datos.
Un contenedor de datos es un concepto de Chef. Se trata de una variable global que se almacena como datos JSON en una instancia; desde Chef se puede obtener acceso a estos datos. Por ejemplo, una bolsa de datos puede almacenar variables globales, como la URL de origen de una aplicación, el nombre de host de la instancia y el identificador de VPC de la pila asociada. AWS OpsWorks Stacks almacena sus bolsas de datos en las instancias de cada pila. En las instancias de Linux, AWS OpsWorks Stacks almacena las bolsas de datos en el /var/chef/runs/
directorio. En instancias de Windows, almacena bolsas de datos en el directorio run-ID
/data_bags
. En ambos casos, el drive
:\chef\runs\run-id
\data_bagsRun-ID
es un identificador único que AWS OpsWorks Stacks asigna a cada ejecución de Chef en una instancia. Estos directorios incluyen un conjunto de contenedores de datos (subdirectorios). Cada contenedor de datos contiene cero o más elementos de contenedor de datos, que son archivos con formato JSON que contienen conjuntos de contenido de contenedores de datos.
nota
AWS OpsWorks Stacks no admite bolsas de datos cifradas. Para almacenar información confidencial de forma cifrada, como, por ejemplo, contraseñas o certificados, le recomendamos almacenarla en un bucket privado de S3. A continuación, puede crear una receta personalizada que utilice Amazon SDK para Ruby
Los contenedores de datos pueden tener los elementos siguientes:
-
Cadenas que apliquen la sintaxis de Ruby estándar y puedan utilizar comillas simples o dobles, aunque las cadenas que contengan determinados caracteres especiales deban estar entre comillas dobles. Para obtener más información, consulte el sitio de documentación de Ruby
. -
Contenido booleano,
true
ofalse
, (sin comillas). -
Números, ya sea enteros o decimales, como
4
o2.5
(sin comillas). -
Listas presentadas como valores separados por comas entre corchetes (sin comillas), por ejemplo
[ '80', '443' ]
. -
Objetos JSON, que contienen contenedores de datos, por ejemplo,
"my-app": {"elastic_ip": null,...}
.
Las recetas de Chef pueden obtener acceso a los contenedores de datos, los elementos de los contenedores de datos y el contenido de estos, ya sea por medio de una búsqueda Chef o directamente. A continuación se describe cómo utilizar ambos enfoques de acceso (aunque es preferible la búsqueda mediante Chef).
Para acceder a una bolsa de datos a través de la búsqueda de Chef, utilice el método de búsqueda
-
aws_opsworks_app; representa un conjunto de aplicaciones implementadas para una pila.
-
aws_opsworks_command; representa un conjunto de comandos que se han ejecutado en una pila.
-
aws_opsworks_ecs_cluster, que representa un conjunto de instancias de clúster de Amazon Elastic Container Service (Amazon ECS) para una pila.
-
aws_opsworks_elastic_load_balancer, que representa un conjunto de equilibradores de carga Elastic Load Balancing para una pila.
-
aws_opsworks_instance; representa un conjunto de instancias de una pila.
-
aws_opsworks_layer; representa un conjunto de capas de una pila.
-
aws_opsworks_rds_db_instance, que representa un conjunto de instancias de Amazon Relational Database Service (Amazon RDS) para una pila.
-
aws_opsworks_stack; representa una pila.
-
aws_opsworks_user; representa un conjunto de usuarios de una pila.
Una vez que sepa el nombre del índice de búsqueda, podrá obtener acceso al contenido del contenedor de datos del índice de búsqueda. Por ejemplo, el código de receta siguiente utiliza el índice de búsqueda aws_opsworks_app
para obtener el contenido del primer elemento del contenedor de datos (el primer archivo JSON) del contenedor de datos aws_opsworks_app
(el directorio aws_opsworks_app
). A continuación, el código escribe dos mensajes en el registro de Chef, uno con el contenido del contenedor de datos del nombre abreviado de la aplicación (una cadena del archivo JSON) y otro con el contenido del contenedor de datos de la dirección URL de origen de la aplicación (otra cadena del archivo 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']}' **********")
Donde ['shortname']
y ['app_source']['url']
especifican el contenido del contenedor de datos siguiente del archivo JSON correspondiente:
{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }
Para obtener la lista del contenido del contenedor de datos que puede buscar, consulte los temas de referencia de esta sección.
También puede iterar por un conjunto de elementos de un contenedor de datos. Por ejemplo, el código de receta siguiente es parecido al ejemplo anterior; recorre cada elemento del contenedor de datos cuando este tiene más de un elemento:
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 sabe que el contenedor de datos tiene un contenido concreto, puede encontrar el elemento del contenedor de datos correspondiente con la sintaxis siguiente:
search("
search_index
", "key
:value
").first
Por ejemplo, el código de receta siguiente utiliza el índice de búsqueda aws_opsworks_app
para encontrar el elemento del contenedor de datos que contiene el nombre abreviado mylinuxdemoapp
. A continuación, utiliza el contenido del elemento del contenedor de datos para escribir un mensaje en el registro de Chef con el nombre abreviado y la dirección URL de origen correspondientes de la aplicación:
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']}' **********")
Únicamente en el índice de búsqueda aws_opsworks_instance
puede especificar self:true
para representar la instancia en la que se está ejecutando la receta. El siguiente código de receta utiliza el contenido del elemento de la bolsa de datos correspondiente para escribir un mensaje en el registro de Chef con el ID AWS OpsWorks generado por Stacks y el sistema operativo de la instancia correspondiente:
instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")
En vez de utilizar la búsqueda de Chef para obtener acceso a los contenedores de datos, los elementos de los contenedores de datos y el contenido de estos, puede obtener acceso directo a ellos. Para ello, utilice los métodos 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
De estos dos enfoques, le recomendamos que utilice la búsqueda de Chef. Todos los ejemplos relacionados que aparecen en esta guía muestran este enfoque.
Temas
- Contenedor de datos de aplicación (aws_opsworks_app)
- Contenedor de datos de comandos (aws_opsworks_command)
- Contenedor de datos de clúster de Amazon ECS (aws_opsworks_ecs_cluster)
- Contenedor de datos de Elastic Load Balancing (aws_opsworks_elastic_load_balancer)
- Contenedor de datos de instancias (aws_opsworks_instance)
- Contenedor de datos de la capa (aws_opsworks_layer)
- Contenedor de datos de Amazon RDS (aws_opsworks_rds_db_instance)
- Contenedor de datos de la pila (aws_opsworks_stack)
- Contenedor de datos de usuario (aws_opsworks_user)