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á.
AWS OpsWorks Referência do Stacks Data Bag
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
AWS OpsWorks Stacks expõe uma grande variedade de configurações de receitas como conteúdo do pacote de dados do Chef. Essa referência lista esse conteúdo de data bag.
Um data bag é um conceito do Chef. O data bag é uma variável global armazenada como dados JSON em uma instância; os dados JSON podem ser acessados no Chef. Por exemplo, um pacote de dados pode armazenar variáveis globais, como o URL de origem de um aplicativo, o nome do host da instância e o identificador VPC da pilha associada. AWS OpsWorks O Stacks armazena seus pacotes de dados nas instâncias de cada pilha. Em instâncias Linux, o AWS OpsWorks Stacks armazena pacotes de dados no /var/chef/runs/
diretório. Nas instâncias do Linux, ele armazena recipientes de dados no diretório run-ID
/data_bags
. Em ambos os casos, drive
:\chef\runs\run-id
\data_bagsRun-ID
é um ID exclusivo que o AWS OpsWorks Stacks atribui a cada execução do Chef em uma instância. Esses diretórios incluem um conjunto de data bags (subdiretórios). Cada data bag contém zero ou mais itens de data bag, que são arquivos formatados pelo JSON que contêm conjuntos de conteúdo de data bag.
nota
AWS OpsWorks O Stacks não suporta pacotes de dados criptografados. Para armazenar dados confidenciais de maneira criptografada, como senhas ou certificados, recomendamos armazená-los em um bucket do S3 privado. Você pode então criar uma receita personalizada que usa o Amazon SDK para Ruby
O conteúdo de data bag pode incluir:
-
Conteúdo String, que segue a sintaxe padrão do Ruby e pode usar aspas duplas ou simples, embora as strings com determinados caracteres especiais devam ter aspas duplas. Para obter mais informações, consulte o site de documentação do Ruby
. -
Conteúdo Booliano, que é
true
oufalse
(sem aspas). -
Conteúdo Número, que é um número inteiro ou decimal; por exemplo,
4
ou2.5
(sem aspas). -
Conteúdo Lista, que assume a forma de valores separados por vírgula dentro de colchetes (sem aspas); por exemplo,
[ '80', '443' ]
-
Objetos JSON, que possuem conteúdo de data bag adicional, como
"my-app": {"elastic_ip": null,...}
.
As receitas do Chef podem acessar data bags, itens de data bag e conteúdo de data bag por meio da pesquisa do Chef ou diretamente. Os dados a seguir descrevem como usar as duas abordagens de acesso (embora a pesquisa do Chef seja preferencial).
Para acessar uma bolsa de dados por meio da pesquisa do Chef, use o método de pesquisa
-
aws_opsworks_app, que representa um conjunto de aplicativos implantados de uma pilha.
-
aws_opsworks_command, que representa um conjunto de comandos que foram executados em uma pilha.
-
aws_opsworks_ecs_cluster, que representa um conjunto de instâncias de cluster do Amazon Elastic Container Service (Amazon ECS) de uma pilha.
-
aws_opsworks_elastic_load_balancer, que representa um conjunto de balanceadores de carga do Elastic Load Balancing de uma pilha.
-
aws_opsworks_instance, que representa um conjunto de instâncias de uma pilha.
-
aws_opsworks_layer, que representa um conjunto de camadas de uma pilha.
-
aws_opsworks_rds_db_instance, que representa um conjunto de instâncias do Amazon Relational Database Service (Amazon RDS) de uma pilha.
-
aws_opsworks_stack, que representa uma pilha.
-
aws_opsworks_user, que representa um conjunto de usuários de uma pilha.
Assim que você souber o nome do índice de pesquisa, acesse o conteúdo do data bag desse índice de pesquisa. Por exemplo, o código de receita a seguir usa o índice de pesquisa aws_opsworks_app
para obter o conteúdo do primeiro item de data bag (o primeiro arquivo JSON) no data bagaws_opsworks_app
(o diretório aws_opsworks_app
). Em seguida, o código grava duas mensagens no log do Chef, uma com o conteúdo de data bag de nome curto do aplicativo (uma string no arquivo JSON) e outra com o conteúdo de data bag de URL de origem do aplicativo (outra string no arquivo 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']}' **********")
Em que ['shortname']
e ['app_source']['url']
especificam o conteúdo de data bag a seguir no arquivo JSON correspondente:
{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }
Para obter uma lista do conteúdo de data bag que você pode pesquisar, consulte os tópicos de referência nesta seção.
Você também pode percorrer um conjunto de itens de data bag em um data bag. Por exemplo, o código de receita a seguir é semelhante ao exemplo anterior; ele percorre cada um dos itens de data bag no data bag quando há mais de um item de data bag:
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
Se você souber que existe um conteúdo de data bag específico, poderá encontrar o item de data bag correspondente com a seguinte sintaxe:
search("
search_index
", "key
:value
").first
Por exemplo, o código de receita a seguir usa o índice de pesquisa aws_opsworks_app
para encontrar o item de data bag que contém o nome curto de aplicativo mylinuxdemoapp
. Em seguida, ele usa o conteúdo do item de data bag para gravar uma mensagem no log do Chef com o nome curto e o URL de origem do aplicativo correspondente:
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']}' **********")
Para o índice de pesquisa aws_opsworks_instance
somente, você pode especificar self:true
para representar a instância em que a receita está sendo executada. O código de receita a seguir usa o conteúdo do item do pacote de dados correspondente para gravar uma mensagem no registro do Chef com o ID e o sistema operacional AWS OpsWorks gerados pelo Stacks da instância correspondente:
instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")
Em vez de usar a pesquisa do Chef para acessar data bags, itens de data bag e conteúdo de data bag, você pode acessá-los diretamente. Para fazer isso, use os 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
Entre essas duas abordagens, recomendamos que você use a pesquisa do Chef. Todos os exemplos relacionados neste guia demonstram essa abordagem.
Tópicos
- Data bag do aplicativo (aws_opsworks_app)
- Data bag do comando (aws_opsworks_command)
- Data bag do cluster do Amazon ECS (aws_opsworks_ecs_cluster)
- Data Bag do Elastic Load Balancing (aws_opsworks_elastic_load_balancer)
- Data bag da instância (aws_opsworks_instance)
- Data bag de camada (aws_opsworks_layer)
- Data bag do Amazon RDS (aws_opsworks_rds_db_instance)
- Data bag da pilha (aws_opsworks_stack)
- Data bag do usuário (aws_opsworks_user)