Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Passaggio di dati alle applicazioni
Importante
Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disabilitato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post
Spesso risulta utile passare dati quali, ad esempio, coppie chiave-valore a un'applicazione nel server. A tale scopo, devi utilizzare dati JSON personalizzati per aggiungere i dati allo stack. AWS OpsWorks Stacks aggiunge i dati all'oggetto nodo di ogni istanza per ogni evento del ciclo di vita.
Si noti, tuttavia, che anche se le ricette possono recuperare i dati JSON personalizzati dall'oggetto nodo tramite gli attributi di Chef, le applicazioni non sono in grado di eseguire questa operazione. Un approccio che consenta di passare i dati JSON personalizzati a una o più applicazioni è implementare una ricetta personalizzata in grado di estrarre i dati dall'oggetto node
e quindi di scriverli in un file che l'applicazione è in grado di leggere. L'esempio utilizzato in questo argomento illustra come scrivere i dati a un file YAML. Puoi tuttavia utilizzare lo stesso approccio di base per altri formati, ad esempio JSON o XML.
Per passare i dati chiave-valore alle istanze dello stack, allo stack devi aggiungere dati JSON personalizzati, come quelli riportati di seguito. Per ulteriori informazioni su come aggiungere dati JSON personalizzati allo stack, consulta Utilizzo di Custom JSON.
{ "my_app_data": { "app1": { "key1": "value1", "key2": "value2", "key3": "value3" }, "app2": { "key1": "value1", "key2": "value2", "key3": "value3" } } }
L'esempio presuppone la presenza di due app i cui nomi brevi sono app1
e app2
, ciascuna delle quali include tre valori di dati. La ricetta corrispondente presuppone l'utilizzo dei nomi brevi delle app per identificare i dati associati; gli altri nomi sono arbitrari. Per ulteriori informazioni sui nomi brevi delle app, consulta Impostazioni.
La ricetta nell'esempio seguente mostra come estrarre i dati per ogni app dagli attributi deploy
e come inserirli in un file .yml
. La ricetta presuppone che i dati JSON personalizzati contengano dati per ogni applicazione.
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
Gli attributi deploy
includono un attributo per ogni app, denominato utilizzando il nome breve dell'app. Ogni attributo dell'app contiene un set di attributi che rappresentano una serie di informazioni relative all'app. In questo esempio viene utilizzata la directory di distribuzione dell'app, che è rappresentata dall'attributo [:deploy][:
. Per ulteriori informazioni su app_short_name
][:deploy_to][:deploy]
, consulta Attributi deploy.
Per ogni app in deploy
, la ricetta esegue le seguenti operazioni:
-
Crea un file denominato
app_data.yml
nella sottodirectoryshared/config
della directory[:deploy_to]
dell'applicazione.Per ulteriori informazioni su come AWS OpsWorks Stacks installa le app, consulta. Ricette di ditribuzione
-
Converte i valori JSON personalizzati dell'app nel formato YAML e scrive i dati formattati in
app_data.yml
.
Per passare i dati a un'app
-
Aggiungere un'app allo stack e annotare il relativo nome breve. Per ulteriori informazioni, consulta Aggiunta di app.
-
Aggiungere dati JSON personalizzati contenenti i dati dell'app agli attributi
deploy
, come descritto in precedenza. Per ulteriori informazioni su come aggiungere dati JSON personalizzati allo stack, consulta Utilizzo di Custom JSON. -
Creare un libro di ricette e aggiungervi una ricetta contenente il codice riportato nell'esempio precedente, modificato in base alle esigenze relativamente ai nomi di attributo utilizzati nei dati JSON personalizzati. Per ulteriori informazioni su come creare libri di ricette e ricette, consulta Libri di ricette e ricette. Se per questo stack sono già disponibili libri di ricette personalizzati, è possibile anche aggiungere la ricetta a un libro di ricette esistente oppure aggiungere il codice a una ricetta Deploy (Distribuzione) esistente.
-
Installare il libro di ricette sullo stack. Per ulteriori informazioni, consulta Installazione di libri di ricette personalizzati.
-
Assegna la ricetta all'evento Deploy lifecycle del livello del server dell'app. AWS OpsWorks Stacks eseguirà quindi la ricetta su ogni nuova istanza, dopo l'avvio. Per ulteriori informazioni, consulta Esecuzione di ricette.
-
Distribuire l'app. Questa operazione installa anche gli attributi di configurazione e distribuzione dello stack, che ora contengono i dati.
Nota
Se i file di dati devono essere disponibili prima della distribuzione dell'app, è anche possibile assegnare la ricetta all'evento Setup (Configurazione) del ciclo di vita del livello. Questo evento si verifica una volta, al completamento dell'avvio dell'istanza. Tuttavia, AWS OpsWorks Stacks non avrà ancora creato le directory di distribuzione, quindi la ricetta dovrebbe creare le directory richieste in modo esplicito prima di creare il file di dati. L'esempio seguente crea in modo esplicito la directory /shared/config
dell'app, quindi crea un file di dati in tale directory.
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
Per caricare i dati, puoi utilizzare il seguente codice 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
Puoi aggiornare i valori dei dati dell'app in qualsiasi momento mediante l'aggiornamento dei dati JSON personalizzati, come descritto di seguito.
Per aggiornare i dati dell'applicazione
-
Modificare i dati JSON personalizzati per aggiornare i valori dei dati.
-
Distribuisci nuovamente l'app, che indica a AWS OpsWorks Stacks di eseguire le ricette Deploy sulle istanze dello stack. Le ricette utilizzerà gli attributi derivati dagli attributi di configurazione e distribuzione aggiornati dello stack. Pertanto la ricetta personalizzata aggiornerà i file di dati con i valori correnti.