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.
Transferir datos a aplicaciones
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 existentes. 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
Suele ser útil transferir datos como pares clave-valor a una aplicación en el servidor. Para ello, utilice JSON personalizado para agregar los datos a la pila. AWS OpsWorks Stacks añade los datos al objeto de nodo de cada instancia para cada evento del ciclo de vida.
Tenga en cuenta que, aunque las recetas puedan obtener los datos JSON personalizados del objeto de nodo mediante atributos de Chef, las aplicaciones no pueden hacerlo. Un sistema para transferir datos de JSON personalizados a una o más aplicaciones es implementar una receta personalizada que extraiga los datos desde el objeto node
y los escriba en un archivo que la aplicación pueda leer. El ejemplo en este tema muestra cómo escribir los datos a un archivo YAML, pero puede utilizar el mismo sistema básico para otros formatos, como JSON o XML.
Para transferir datos clave-valor a las instancias de la pila, añada JSON personalizado como el siguiente a la pila. Para obtener más información acerca de cómo agregar JSON personalizado a una pila, consulte Uso de Custom JSON.
{ "my_app_data": { "app1": { "key1": "value1", "key2": "value2", "key3": "value3" }, "app2": { "key1": "value1", "key2": "value2", "key3": "value3" } } }
El ejemplo asume que tiene dos aplicaciones cuyos nombres abreviados son app1
y app2
, cada una de ellas con tres valores de datos. La receta que las acompaña asume que utiliza los nombres abreviados de las aplicaciones para identificar los datos asociados; los demás nombres son arbitrarios. Para obtener más información sobre los nombres abreviados de las aplicaciones, consulte Configuración.
La receta en el siguiente ejemplo muestra cómo extraer los datos para cada aplicación desde los atributos deploy
y colocarlos en un archivo .yml
. La receta asume que el JSON personalizado tiene datos para cada aplicación.
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
Los atributos deploy
contienen un atributo para cada aplicación con el nombre abreviado de la aplicación. Cada atributo de aplicación contiene un conjunto de atributos que representan distinta información sobre la aplicación. Este ejemplo utiliza el directorio de implementación de la aplicación, representado por el atributo [:deploy][:
. Para obtener más información sobre app_short_name
][:deploy_to][:deploy]
, consulte Atributos deploy.
Para cada aplicación en deploy
, la receta hace lo siguiente:
-
Crea un archivo llamado
app_data.yml
en el subdirectorioshared/config
del directorio[:deploy_to]
de la aplicación.Para obtener más información sobre cómo AWS OpsWorks Stacks instala las aplicaciones, consulta. Recetas de implementación
-
Convierte los valores JSON personalizados de la aplicación a YAML y escribe datos con formato en
app_data.yml
.
Para transferir datos a una aplicación
-
Añada una aplicación a la pila y anote su nombre abreviado. Para obtener más información, consulte Agregar aplicaciones.
-
Añada JSON personalizado con los datos de la aplicación a los atributos
deploy
, tal y como se ha descrito anteriormente. Para obtener más información sobre cómo agregar JSON personalizado a una pila, consulte Uso de Custom JSON. -
Cree un libro de recetas y añádale una receta con código basado en el ejemplo anterior; modifíquelo según sea necesario según los nombres de atributo que utilizó en el JSON personalizado. Para obtener más información acerca de cómo crear libros de recetas y recetas, consulte Cookbooks and Recipes. Si ya tiene libros de recetas personalizados para esta pila, también puede añadir la receta a un libro de recetas existente o incluso añadir el código a una receta ya implementada.
-
Instale el libro de recetas en la pila. Para obtener más información, consulte Instalación de libros de recetas personalizados.
-
Asigna la receta al evento de ciclo de vida de implementación de la capa de servidores de aplicaciones. AWS OpsWorks Luego, Stacks ejecutará la receta en cada nueva instancia, una vez que se haya iniciado. Para obtener más información, consulte Ejecución de recetas.
-
Implemente la aplicación, lo que también instala los atributos de configuración de la pila y de implementación que ahora contienen los datos.
nota
Si los archivos de datos deben existir antes de que se implemente la aplicación, también puede asignar la receta al evento Setup del ciclo de vida de la capa; esto sucede una vez, justo después de que la instancia termine de arrancar. Sin embargo, AWS OpsWorks Stacks aún no habrá creado los directorios de despliegue, por lo que tu receta debería crear los directorios necesarios de forma explícita antes de crear el archivo de datos. El siguiente ejemplo crea de forma explícita el directorio /shared/config
de la aplicación y, a continuación, crea un archivo de datos en dicho directorio.
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
Para cargar los datos, puede utilizar algo como el siguiente código Sinatra
#!/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
Puede actualizar los valores de los datos de la aplicación en cualquier momento actualizando el JSON personalizado como se indica a continuación.
Para actualizar los datos de la aplicación
-
Edite el JSON personalizado para actualizar los valores de los datos.
-
Vuelve a implementar la aplicación, lo que indica a AWS OpsWorks Stacks que ejecute las recetas de Deploy en las instancias de la pila. Las recetas utilizarán los atributos actualizados de configuración de la pila y de implementación, por lo que la receta personalizada actualizará los archivos de datos con los valores actuales.