

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

# Menggunakan SDK for Ruby OpsWorks pada Instans Windows Stacks
<a name="cookbooks-101-opsworks-s3-windows"></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.

**catatan**  
Contoh ini mengasumsikan bahwa Anda telah melakukan [Menjalankan Resep pada Instance Windows](cookbooks-101-opsworks-opsworks-windows.md) contoh. Jika tidak, Anda harus melakukan contoh itu terlebih dahulu. Secara khusus, ini menjelaskan cara mengaktifkan akses RDP ke instance Anda.  
Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat [Bagaimana Cara Mengosongkan Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

Topik ini menjelaskan cara menggunakan instans Windows OpsWorks Stacks untuk mengunduh file dari bucket S3. [AWS SDK untuk Ruby](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/)

Jika aplikasi Ruby perlu mengakses sumber daya AWS, Anda harus menyediakannya dengan satu set kredensi AWS dengan izin yang sesuai. Untuk resep, opsi terbaik Anda untuk memberikan kredensil AWS adalah dengan menggunakan peran AWS Identity and Access Management ([IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)). Peran IAM bekerja seperti pengguna IAM, ia memiliki kebijakan terlampir yang memberikan izin untuk menggunakan berbagai layanan. AWS Namun, Anda menetapkan peran ke instans Amazon Elastic Compute Cloud EC2 (Amazon), bukan ke individu. Aplikasi yang berjalan pada instance itu kemudian dapat memperoleh izin yang diberikan oleh kebijakan terlampir. Dengan peran, kredensyal tidak pernah muncul dalam kode Anda, bahkan secara tidak langsung. 

Langkah pertama adalah mengatur peran IAM. Contoh ini mengambil pendekatan paling sederhana, yaitu menggunakan EC2 peran Amazon yang dibuat OpsWorks Stacks saat Anda membuat tumpukan pertama Anda. Itu dinamai`aws-opsworks-ec2-role`. Namun, OpsWorks Stacks tidak melampirkan kebijakan ke peran itu, jadi secara default tidak memberikan izin. 

Anda harus melampirkan `AmazonS3ReadOnlyAccess` kebijakan ke `aws-opsworks-ec2-role` peran untuk memberikan izin yang sesuai. Untuk informasi selengkapnya tentang cara melampirkan kebijakan ke peran, lihat [Menambahkan izin identitas (konsol) IAM di Panduan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) Pengguna *IAM*.

Anda menentukan peran saat membuat atau memperbarui tumpukan. Siapkan tumpukan dengan lapisan khusus, seperti yang dijelaskan dalam[Menjalankan Resep pada Instance Windows](cookbooks-101-opsworks-opsworks-windows.md), dengan satu tambahan. Pada halaman **Add Stack**, konfirmasikan bahwa **profil instans IAM Default** diatur ke **aws-opsworks-ec2-role**. OpsWorks Tumpukan kemudian akan menetapkan peran itu ke semua instance tumpukan.

Prosedur untuk menyiapkan buku masak mirip dengan yang digunakan oleh[Menjalankan Resep pada Instance Linux](cookbooks-101-opsworks-opsworks-instance.md). Berikut ini adalah ringkasan singkat; lihat contoh itu untuk detailnya.

**Untuk mengatur buku masak**

1. Buat direktori bernama `s3bucket_ops` dan navigasikan ke sana.

1. Buat `metadata.rb` file dengan konten berikut dan simpan ke`s3bucket_ops`.

   ```
   name "s3download"
   version "0.1.0"
   ```

1. Buat `recipes` direktori di dalamnya`s3download`.

1. Buat `default.rb` file dengan resep berikut, dan simpan ke `recipes` direktori. Ganti *windows-cookbooks* dengan nama bucket S3 yang akan Anda gunakan untuk menyimpan file yang akan diunduh.

   ```
   Chef::Log.info("******Downloading an object from S3******")
   
   chef_gem "aws-sdk-s3" do
     compile_time false
     action :install
   end
   
   ruby_block "download-object" do
     block do
       require 'aws-sdk-s3'
       
       Aws.use_bundled_cert!
   
       s3_client = Aws::S3::Client.new(region:'us-west-2')
   
       s3_client.get_object(bucket: 'windows-cookbooks',
                        key: 'myfile.txt',
                        response_target: '/chef/myfile.txt')
     end
     action :run
   end
   ```

1. Buat `.zip` arsip `s3download` dan unggah file ke bucket S3. Jadikan file publik dan rekam URL untuk digunakan nanti.

1. Buat file teks bernama `myfile.txt` dan unggah ke bucket S3. Ini adalah file yang akan diunduh resep Anda, sehingga Anda dapat menggunakan ember yang nyaman.

Resepnya melakukan tugas-tugas berikut.

1: Instal SDK for Ruby v2.  
Contoh menggunakan SDK for Ruby untuk men-download objek. Namun, OpsWorks Stacks tidak menginstal SDK ini pada instance Windows, jadi bagian pertama resep menggunakan [https://docs.chef.io/chef/resources.html#chef-gem](https://docs.chef.io/chef/resources.html#chef-gem)sumber daya untuk menangani tugas itu. Anda menggunakan sumber daya ini untuk menginstal permata untuk digunakan oleh Chef, yang mencakup resep.

2: Unduh file.  
Bagian ketiga dari resep menggunakan [https://docs.chef.io/chef/resources.html#ruby-block](https://docs.chef.io/chef/resources.html#ruby-block)sumber daya untuk menjalankan kode `myfile.txt` SDK for Ruby v2 untuk mengunduh dari `windows-cookbooks` bucket S3 yang diberi nama ke direktori instans. `/chef` `windows-cookbooks`Ubah nama bucket yang berisi`myfile.txt`. 

**catatan**  
Resep adalah aplikasi Ruby, jadi Anda dapat memasukkan kode Ruby ke dalam badan resep; itu tidak harus ada di sumber daya. `ruby_block` Namun, Chef mengeksekusi kode Ruby di tubuh resep terlebih dahulu, diikuti oleh setiap sumber daya, secara berurutan. Untuk contoh ini, jika Anda meletakkan kode unduhan di badan resep, itu akan gagal karena tergantung pada SDK for Ruby, `chef_gem` dan sumber daya yang menginstal SDK belum dieksekusi. Kode dalam `ruby_block` sumber daya dijalankan ketika sumber daya dijalankan, dan itu terjadi setelah `chef_gem` sumber daya menginstal SDK for Ruby.

Buat tumpukan untuk contoh ini sebagai berikut. Anda juga dapat menggunakan tumpukan Windows yang ada. Cukup perbarui buku masak, seperti yang dijelaskan nanti.

**Buat tumpukan**

1. Buka [konsol OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) dan pilih **Add Stack**. **Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan pilih Tambah Tumpukan.**
   + **Nama** — S3Download
   + **Wilayah** - AS Barat (Oregon)

     Contoh ini akan bekerja di wilayah mana pun, tetapi kami sarankan menggunakan US West (Oregon) untuk tutorial.
   + **Sistem operasi default** - Microsoft Windows Server 2012 R2

1. Pilih **Tambahkan lapisan** dan [tambahkan lapisan khusus](workinglayers-custom.md) ke tumpukan dengan pengaturan berikut.
   + **Nama** — S3Download
   + **Nama pendek** — s3download

1. [Tambahkan instance 24/7](workinginstances-add.md) [dengan pengaturan default ke layer S3Download dan mulai.](workinginstances-starting.md)

Anda sekarang dapat menginstal dan menjalankan resep

**Untuk menjalankan resep**

1. [Edit tumpukan untuk mengaktifkan buku masak khusus](workingcookbook-installingcustom-enable.md), dan tentukan pengaturan berikut.
   + **Jenis repositori - Arsip** **S3**.
   + URL **Repositori — URL** arsip buku masak yang Anda rekam sebelumnya.

   Terima nilai default untuk pengaturan lain dan pilih **Simpan** untuk memperbarui konfigurasi tumpukan.

1. [Jalankan perintah tumpukan Update Custom Cookbooks](workingstacks-commands.md), yang menginstal versi terbaru buku masak kustom Anda pada instance online stack. Jika versi sebelumnya dari buku masak Anda ada, perintah ini menimpanya.

1. Jalankan resep dengan menjalankan perintah tumpukan **Execute Recipes** **dengan Recipes untuk mengeksekusi** set ke**s3download::default**. Perintah ini memulai menjalankan Chef, dengan daftar run yang terdiri dari. `s3download::default`
**catatan**  
Anda biasanya memiliki OpsWorks Stacks [menjalankan resep Anda secara otomatis](workingcookbook-assigningcustom.md) dengan menetapkannya ke acara siklus hidup yang sesuai. Anda juga dapat menjalankan resep tersebut dengan memicu acara secara manual. Anda dapat menggunakan perintah stack untuk memicu peristiwa Setup dan Configure, dan [perintah deploy](workingapps-deploying.md) untuk memicu peristiwa Deploy dan Undeploy.

Setelah resep berjalan dengan sukses, Anda dapat memverifikasinya.

**Untuk memverifikasi s3download**

1. Langkah pertama adalah memeriksa log Chef. Tumpukan Anda harus memiliki satu instance bernama s3download1. Pada halaman **Instans**, pilih **tampilkan** di kolom **Log instance untuk menampilkan log** Chef. Gulir ke bawah untuk menemukan pesan log Anda di dekat bagian bawah.

   ```
   ...
   [2015-05-01T21:11:04+00:00] INFO: Loading cookbooks [s3download@0.0.0]
   [2015-05-01T21:11:04+00:00] INFO: Storing updated cookbooks/s3download/recipes/default.rb in the cache.
   [2015-05-01T21:11:04+00:00] INFO: ******Downloading an object from S3******
   [2015-05-01T21:11:04+00:00] INFO: Processing chef_gem[aws-sdk] action install (s3download::default line 3)
   [2015-05-01T21:11:05+00:00] INFO: Processing ruby_block[download-object] action run (s3download::default line 8) 
   ...
   ```

1. [Gunakan RDP untuk masuk ke instance](workinginstances-rdp.md) dan memeriksa isi. `c:\chef`