

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# OpsWorks Referensi Tas Data Stacks
<a name="data-bags"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

OpsWorks Stacks memaparkan berbagai macam pengaturan ke resep sebagai konten kantong data Chef. Referensi ini mencantumkan konten tas data ini.

*Data bag* adalah konsep Chef. Data bag adalah variabel global yang disimpan sebagai data JSON pada sebuah instance; data JSON dapat diakses dari Chef. Misalnya, tas data dapat menyimpan variabel global seperti URL sumber aplikasi, nama host instance, dan pengidentifikasi VPC stack terkait. OpsWorks Stacks menyimpan tas datanya pada setiap instance tumpukan. Pada instance Linux, OpsWorks Stacks menyimpan kantong data di direktori. `/var/chef/runs/run-ID/data_bags` Pada instance Windows, ia menyimpan tas data di `drive:\chef\runs\run-id\data_bags` direktori. Dalam kedua kasus, *run-ID* adalah ID unik yang ditetapkan OpsWorks Stacks ke setiap Chef yang dijalankan pada sebuah instance. Direktori ini mencakup satu set tas data (subdirektori). Setiap tas data berisi nol atau lebih item tas data, yang merupakan file berformat JSON yang berisi kumpulan konten tas data.

**catatan**  
OpsWorks Stacks tidak mendukung kantong data terenkripsi. Untuk menyimpan data sensitif dalam bentuk terenkripsi, seperti kata sandi atau sertifikat, sebaiknya simpan di bucket S3 pribadi. Anda kemudian dapat membuat resep khusus yang menggunakan [Amazon SDK for](https://aws.amazon.com/documentation/sdk-for-ruby/) Ruby untuk mengambil data. Sebagai contoh, lihat [Menggunakan SDK untuk Ruby](cookbooks-101-opsworks-s3.md).

Isi tas data dapat mencakup salah satu dari yang berikut:
+ Konten **string** yang mengikuti sintaks Ruby standar dan dapat menggunakan tanda kutip tunggal atau ganda, meskipun string yang berisi karakter khusus tertentu harus memiliki tanda kutip ganda. Untuk informasi lebih lanjut, kunjungi situs dokumentasi [Ruby](http://www.ruby-lang.org/en/documentation/).
+ Konten **Boolean**, yang merupakan salah satu `true` atau `false` (tidak ada tanda kutip).
+ Konten **angka**, yang merupakan bilangan bulat atau angka desimal, seperti `4` atau `2.5` (tidak ada tanda kutip).
+ **Daftar** konten, yang mengambil bentuk nilai dipisahkan koma tertutup dalam tanda kurung siku (tanpa tanda kutip), seperti `[ '80', '443' ]`
+ **Objek JSON**, yang berisi konten tas data tambahan, seperti`"my-app": {"elastic_ip": null,...}`.

Resep koki dapat mengakses tas data, item tas data, dan konten tas data melalui pencarian Chef atau langsung. Berikut ini menjelaskan cara menggunakan kedua pendekatan akses (meskipun pencarian Chef lebih disukai).

Untuk mengakses tas data melalui pencarian Chef, gunakan metode [pencarian](https://docs.chef.io/dsl_recipe.html#search), tentukan indeks pencarian yang diinginkan. OpsWorks Stacks menyediakan indeks pencarian berikut:
+ [aws\$1opsworks\$1app, yang mewakili satu set aplikasi](data-bag-json-app.md) yang diterapkan untuk tumpukan.
+ [aws\$1opsworks\$1command](data-bag-json-command.md), yang mewakili satu set perintah yang dijalankan pada tumpukan. 
+ [aws\$1opsworks\$1ecs\$1cluster, yang mewakili satu set instance cluster](data-bag-json-ecs-cluster.md) Amazon Elastic Container Service (Amazon ECS) Container Service (Amazon ECS) untuk tumpukan. 
+ [aws\$1opsworks\$1elastic\$1load\$1balancer, yang mewakili satu set penyeimbang beban Elastic Load Balancing](data-bag-json-elb.md) untuk tumpukan.
+ [aws\$1opsworks\$1instance, yang mewakili satu set instance](data-bag-json-instance.md) untuk tumpukan.
+ [aws\$1opsworks\$1layer, yang mewakili satu set lapisan](data-bag-json-layer.md) untuk tumpukan.
+ [aws\$1opsworks\$1rds\$1db\$1instance, yang mewakili sekumpulan instance](data-bag-json-rds.md) Amazon Relational Database Service (Amazon RDS) untuk tumpukan.
+ [aws\$1opsworks\$1stack](data-bag-json-stack.md), yang mewakili tumpukan.
+ [aws\$1opsworks\$1user, yang mewakili satu set pengguna](data-bag-json-user.md) untuk tumpukan.

Setelah Anda mengetahui nama indeks pencarian, Anda dapat mengakses konten tas data untuk indeks pencarian tersebut. Misalnya, kode resep berikut menggunakan indeks `aws_opsworks_app` pencarian untuk mendapatkan konten item tas data pertama (file JSON pertama) di tas `aws_opsworks_app` data (`aws_opsworks_app`direktori). Kode kemudian menulis dua pesan ke log Chef, satu dengan konten tas data shortname aplikasi (string dalam file JSON), dan satu lagi dengan konten tas data URL sumber aplikasi (string lain dalam file 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']}' **********")
```

Di mana `['shortname']` dan `['app_source']['url']` tentukan konten tas data berikut dalam file JSON yang sesuai:

```
{
  ...
  "shortname": "mylinuxdemoapp",
  ...
  "app_source": {
    ...
    "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz",
  },
  ...  
}
```

Untuk daftar konten tas data yang dapat Anda cari, lihat topik referensi di bagian ini.

Anda juga dapat mengulangi melalui satu set item tas data dalam tas data. Misalnya, kode resep berikut mirip dengan contoh sebelumnya; itu berulang melalui masing-masing item tas data di tas data ketika ada lebih dari satu item tas data:

```
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
```

Jika Anda tahu bahwa konten tas data tertentu ada, Anda dapat menemukan item tas data yang sesuai dengan sintaks berikut:

```
search("search_index", "key:value").first
```

Misalnya, kode resep berikut menggunakan indeks `aws_opsworks_app` pencarian untuk menemukan item tas data yang berisi nama pendek aplikasi`mylinuxdemoapp`. Kemudian menggunakan konten item tas data untuk menulis pesan ke log Chef dengan nama pendek aplikasi yang sesuai dan URL sumber:

```
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']}' **********")
```

Hanya untuk indeks `aws_opsworks_instance` pencarian, Anda dapat menentukan `self:true` untuk mewakili contoh tempat resep sedang dijalankan. Kode resep berikut menggunakan konten item tas data yang sesuai untuk menulis pesan ke log Chef dengan ID dan sistem OpsWorks operasi Stacks-generated instance yang sesuai:

```
instance = search("aws_opsworks_instance", "self:true").first
Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")
```

Alih-alih menggunakan pencarian Chef untuk mengakses tas data, item tas data, dan konten tas data, Anda dapat mengaksesnya secara langsung. Untuk melakukan ini, gunakan metode [data\$1bag dan data\$1bag\$1item](https://docs.chef.io/dsl_recipe.html#data-bag) [untuk mengakses kantong data dan item](https://docs.chef.io/dsl_recipe.html#data-bag-item) tas data, masing-masing. Misalnya, kode resep berikut melakukan hal yang sama seperti contoh sebelumnya, kecuali bahwa ia secara langsung mengakses satu item tas data dan kemudian beberapa item tas data ketika ada lebih dari satu:

```
# 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
```

Dari dua pendekatan ini, kami sarankan Anda menggunakan pencarian Chef. Semua contoh terkait dalam panduan ini menunjukkan pendekatan ini.

**Topics**
+ [Tas Data Aplikasi (aws\$1opsworks\$1app)](data-bag-json-app.md)
+ [Tas Data Perintah (aws\$1opsworks\$1command)](data-bag-json-command.md)
+ [Tas Data Cluster Amazon ECS (aws\$1opsworks\$1ecs\$1cluster)](data-bag-json-ecs-cluster.md)
+ [Tas Data Elastic Load Balancing (aws\$1opsworks\$1elastic\$1load\$1balancer)](data-bag-json-elb.md)
+ [Tas Data Instance (aws\$1opsworks\$1instance)](data-bag-json-instance.md)
+ [Tas Data Lapisan (aws\$1opsworks\$1layer)](data-bag-json-layer.md)
+ [Tas Data Amazon RDS (aws\$1opsworks\$1rds\$1db\$1instance)](data-bag-json-rds.md)
+ [Tas Data Tumpukan (aws\$1opsworks\$1stack)](data-bag-json-stack.md)
+ [Tas Data Pengguna (aws\$1opsworks\$1user)](data-bag-json-user.md)