Menggunakan SDK for Ruby AWS OpsWorks pada Instans Stacks Linux - AWS OpsWorks

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

Menggunakan SDK for Ruby AWS OpsWorks pada Instans Stacks Linux

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 Support Tim di AWS re:Post atau melalui AWS Dukungan Premium.

Topik ini menjelaskan cara menggunakan SDK for Ruby AWS OpsWorks pada instance Stacks Linux untuk mengunduh file dari bucket Amazon S3. AWS OpsWorks Stacks secara otomatis menginstal SDK for Ruby di setiap instance Linux. Namun, saat Anda membuat objek klien layanan, Anda harus menyediakan kumpulan kredensyal AWS yang sesuai AWS::S3.new atau yang setara untuk layanan lain.

Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat Bagaimana Cara Mengosongkan Bucket S3? atau Bagaimana Saya Menghapus Bucket S3? .

Menggunakan SDK for Ruby pada Instance Vagrantmenunjukkan cara mengurangi risiko mengekspos kredensil Anda dengan menyimpan kredensil di objek node dan mereferensikan atribut dalam kode resep Anda. Saat Anda menjalankan resep pada instans Amazon EC2, Anda memiliki opsi yang lebih baik, peran IAM.

Peran IAM bekerja seperti pengguna IAM. Ini memiliki kebijakan terlampir yang memberikan izin untuk menggunakan berbagai layanan AWS. Namun, Anda menetapkan peran ke instans Amazon EC2, 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. Topik ini menjelaskan bagaimana Anda dapat menggunakan peran IAM untuk menjalankan resep dari Menggunakan SDK for Ruby pada Instance Vagrant instans Amazon EC2.

Anda dapat menjalankan resep ini dengan Test Kitchen menggunakan driver dapur-ec2, seperti yang dijelaskan dalam. Contoh 9: Menggunakan Instans Amazon EC2 Namun, menginstal SDK for Ruby di instans Amazon EC2 agak rumit dan bukan sesuatu yang perlu Anda perhatikan untuk Stacks. AWS OpsWorks Semua instance AWS OpsWorks Stacks Linux memiliki SDK for Ruby yang diinstal secara default. Untuk kesederhanaan, contoh karena itu menggunakan instance AWS OpsWorks Stacks.

Langkah pertama adalah mengatur peran IAM. Contoh ini mengambil pendekatan paling sederhana, yaitu menggunakan peran Amazon EC2 yang dibuat AWS OpsWorks Stacks saat Anda membuat tumpukan pertama Anda. Itu dinamaiaws-opsworks-ec2-role. Namun, AWS 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 Pengguna IAM.

Anda menentukan peran saat membuat atau memperbarui tumpukan. Siapkan tumpukan dengan lapisan khusus, seperti yang dijelaskan dalamMenjalankan Resep pada Instance Linux, dengan satu tambahan. Pada halaman Add Stack, konfirmasikan bahwa profil instans IAM Default diatur ke aws-opsworks-ec2-role. AWS OpsWorks Tumpukan kemudian akan menetapkan peran itu ke semua instance tumpukan.

Prosedur untuk menyiapkan buku masak mirip dengan yang digunakan olehMenjalankan Resep pada Instance Linux. Berikut ini adalah ringkasan singkat; Anda harus merujuk pada contoh itu untuk detailnya.

Untuk mengatur buku masak
  1. Buat direktori bernama s3bucket_ops dan navigasikan ke sana.

  2. Buat metadata.rb file dengan konten berikut dan simpan kes3bucket_ops.

    name "s3bucket_ops" version "0.1.0"
  3. Buat recipes direktori di dalamnyas3bucket_ops.

  4. Buat default.rb file dengan resep berikut dan simpan ke recipes direktori.

    Chef::Log.info("******Downloading a file from Amazon S3.******") ruby_block "download-object" do block do require 'aws-sdk' s3 = AWS::S3.new myfile = s3.buckets['cookbook_bucket'].objects['myfile.txt'] Dir.chdir("/tmp") File.open("myfile.txt", "w") do |f| f.syswrite(myfile.read) f.close end end action :run end
  5. Buat .zip arsip s3bucket_ops dan unggah arsip ke bucket Amazon S3. Untuk mempermudah, buat arsip publik, lalu rekam URL arsip untuk digunakan nanti. Anda juga dapat menyimpan buku masak Anda di arsip Amazon S3 pribadi, atau beberapa jenis repositori lainnya. Untuk informasi selengkapnya, lihat Repositori Buku Masak.

Resep ini mirip dengan yang digunakan oleh contoh sebelumnya, dengan pengecualian berikut.

  • Karena AWS OpsWorks Stacks telah menginstal SDK for Ruby, sumber daya telah dihapuschef_gem.

  • Resepnya tidak memberikan kredensi apa pun. AWS::S3.new

    Kredensil secara otomatis ditetapkan ke aplikasi berdasarkan peran instans.

  • Resepnya digunakan Chef::Log.info untuk menambahkan pesan ke log Chef.

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

Untuk membuat tumpukan
  1. Buka konsol AWS OpsWorks Stacks dan klik Add Stack.

  2. Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan klik Tambahkan Tumpukan.

    • Nama — RubySDK

    • Kunci SSH default - Sebuah key pair Amazon EC2

    Jika Anda perlu membuat key pair Amazon EC2, lihat Amazon EC2 Key Pairs. Perhatikan bahwa key pair harus memiliki wilayah AWS yang sama dengan instans. Contoh menggunakan wilayah AS Barat (Oregon) default.

  3. Klik Tambahkan lapisan dan tambahkan lapisan khusus ke tumpukan dengan pengaturan berikut.

    • Nama — S3Download

    • Nama pendek — s3download

    Tipe lapisan apa pun sebenarnya akan berfungsi untuk tumpukan Linux, tetapi contohnya tidak memerlukan paket apa pun yang diinstal oleh jenis lapisan lain, jadi lapisan khusus adalah pendekatan yang paling sederhana.

  4. Tambahkan instance 24/7 dengan pengaturan default ke layer dan mulai.

Anda sekarang dapat menginstal dan menjalankan resep

Untuk menjalankan resep
  1. Edit tumpukan untuk mengaktifkan buku masak khusus, dan tentukan pengaturan berikut.

    • Jenis repositori - Arsip Http

    • URL Repositori — URL arsip buku masak yang Anda rekam sebelumnya.

    Gunakan nilai default untuk pengaturan lain dan klik Simpan untuk memperbarui konfigurasi tumpukan.

  2. Jalankan perintah tumpukan Perbarui Buku Masak Kustom, yang menginstal versi buku masak kustom Anda saat ini pada instance tumpukan. Jika versi sebelumnya dari buku masak Anda ada, perintah ini menimpanya.

  3. Jalankan resep dengan menjalankan perintah tumpukan Execute Recipes dengan Recipes untuk mengeksekusi set kes3bucket_ops::default. Perintah ini memulai menjalankan Chef, dengan daftar run yang terdiri dari. s3bucket_ops::default

    catatan

    Anda biasanya memiliki AWS OpsWorks Stacks menjalankan resep Anda secara otomatis dengan menetapkannya ke acara siklus hidup yang sesuai. Anda dapat menjalankan resep tersebut dengan memicu acara secara manual. Anda dapat menggunakan perintah stack untuk memicu peristiwa Setup dan Configure, dan perintah deploy untuk memicu peristiwa Deploy dan Undeploy.

Setelah resep berjalan dengan sukses, Anda dapat memverifikasinya.

Untuk memverifikasi s3bucket_ops
  1. Langkah pertama adalah memeriksa log Chef. Tumpukan Anda harus memiliki satu instance bernama opstest1. Pada halaman Instans, klik tampilkan di kolom Log instance untuk menampilkan log Chef. Gulir ke bawah dan untuk menemukan pesan log Anda di dekat bagian bawah.

    ... [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache. [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache. [2014-07-31T17:01:46+00:00] INFO: ******Downloading a file from Amazon S3.****** [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3) ...
  2. Gunakan SSH untuk masuk ke instance dan daftar isi. /tmp