Transmissão de dados para aplicativos - AWS OpsWorks

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Transmissão de dados para aplicativos

Importante

O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no AWS re:POST ou por meio do Premium AWS Support.

Muitas vezes, é útil transmitir dados como pares de chave-valor a um aplicativo no servidor. Para fazer isso, use um JSON personalizado para adicionar os dados à pilha. AWS OpsWorks O Stacks adiciona os dados ao objeto de nó de cada instância para cada evento do ciclo de vida.

Observe, no entanto, que embora as receitas personalizadas possam obter os dados do JSON personalizado no objeto de nó usando atributos do Chef, os aplicativos não conseguem fazer o mesmo. Uma abordagem para a obtenção de dados do JSON personalizado para um ou mais aplicativos é implementar uma receita personalizada que extraia os dados do objeto node e grave-os em um arquivo que o aplicativo possa ler. O exemplo neste tópico mostra como gravar os dados em um arquivo YAML, mas você pode usar a mesma abordagem básica para outros formatos, como JSON ou XML.

Para transmitir dados de chave-valor para instâncias da pilha, adicione um JSON personalizado, como o mostrado a seguir, à pilha. Para obter mais informações sobre como adicionar um JSON personalizado a uma pilha, consulte Usando o Custom JSON.

{ "my_app_data": { "app1": { "key1": "value1", "key2": "value2", "key3": "value3" }, "app2": { "key1": "value1", "key2": "value2", "key3": "value3" } } }

O exemplo pressupõe que você tenha dois aplicativos cujos nomes curtos são app1 e app2, sendo que cada um deles tem três valores de dados. A receita associada pressupõe que você use os nomes curtos dos aplicativos para identificar os dados associados; outros nomes são arbitrários. Para obter mais informações sobre os nomes abreviados de aplicativos, consulte Configurações.

A receita no exemplo a seguir mostra como extrair os dados para cada aplicativo dos atributos deploy e inseri-los em um arquivo .yml. A receita pressupõe que seu JSON personalizado contenha dados para cada aplicativo.

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

Os atributos deploy contêm um atributo para cada aplicativo, chamado pelo nome abreviado do aplicativo. Cada atributo do aplicativo contém um conjunto de atributos que representam várias informações sobre o aplicativo. Este exemplo usa o diretório de implementação do aplicativo, que é representado pelo atributo [:deploy][:app_short_name][:deploy_to]. Para obter mais informações sobre [:deploy], consulte Atributos deploy.

Para cada aplicativo em deploy, a receita faz o seguinte:

  1. Cria um arquivo chamado app_data.yml no subdiretório shared/config do diretório [:deploy_to] do aplicativo.

    Para obter mais informações sobre como o AWS OpsWorks Stacks instala aplicativos, consulte. Receitas de implantação

  2. Converte os valores do JSON personalizado para YAML e grava os dados formatados em app_data.yml.

Para transmitir dados para um aplicativo
  1. Adicione um aplicativo à pilha e anote o nome abreviado dele. Para ter mais informações, consulte Adição de aplicativos.

  2. Adicione um JSON personalizado com os dados do aplicativo aos atributos deploy, conforme descrito anteriormente. Para obter mais informações sobre como adicionar um JSON personalizado a uma pilha, consulte Usando o Custom JSON.

  3. Crie um livro de receitas e adicione uma receita a ele com código baseado no exemplo anterior, modificado conforme necessário em relação aos nomes dos atributos que você usou no JSON personalizado. Para obter mais informações sobre como criar livros de receitas e receitas, consulte Livros de receitas e receitas. Se você já tem receitas personalizadas para esta pilha, também pode adicionar a receita a um livro de receitas, ou até mesmo adicionar o código a uma receita Implantar existente.

  4. Instale o livro de receitas em sua pilha. Para ter mais informações, consulte Instalação de livros de receitas personalizados.

  5. Atribua a receita ao evento Deploy lifecycle da camada do servidor de aplicativos. AWS OpsWorks As pilhas então executarão a receita em cada nova instância, após a inicialização. Para ter mais informações, consulte Execução de receitas.

  6. Implante o aplicativo, o que também instala os atributos de configuração e implantação da pilha, que agora contém seus dados.

nota

Se for necessário implantar os arquivos de dados antes da implantação do aplicativo, também é possível associar a receita ao evento de ciclo de vida Configuração da camada, o que ocorre uma vez, logo após a conclusão da inicialização da instância. No entanto, o AWS OpsWorks Stacks ainda não criou os diretórios de implantação, portanto, sua receita deve criar os diretórios necessários explicitamente antes de criar o arquivo de dados. O exemplo a seguir cria explicitamente o diretório /shared/config do aplicativo e, em seguida, cria um arquivo de dados nesse diretório.

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 carregar os dados, você pode usar algo como o seguinte código do 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

Você pode atualizar os valores dos dados do aplicativo a qualquer momento atualizando o JSON personalizado, como mostrado a seguir.

Para atualizar os dados do aplicativo
  1. Edite o JSON personalizado para atualizar os valores de dados.

  2. Implante o aplicativo novamente, o que faz com que as AWS OpsWorks pilhas executem as receitas de implantação nas instâncias da pilha. As receitas usarão os atributos atualizados de configuração e implantação da pilha, portanto, sua receita atualizará os arquivos de dados com os valores atuais.