Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan SDK for Ruby pada Instans AWS OpsWorks 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 Dukungan Tim di AWS re:Post
Topik ini menjelaskan cara menggunakan SDK untuk Ruby pada instance AWS OpsWorks Stacks Linux untuk mengunduh file dari bucket Amazon S3. AWS OpsWorks Stacks secara otomatis menginstal SDK untuk Ruby pada setiap instance Linux. Namun, ketika Anda membuat objek klien layanan, Anda harus memberikan seperangkat AWS kredensi 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 kredensional Anda dengan menyimpan kredensional di objek node dan mereferensikan atribut dalam kode resep Anda. Saat Anda menjalankan resep di EC2 instans Amazon, Anda memiliki opsi yang lebih baik, IAMperan.
IAMPeran bekerja seperti IAM pengguna. Ini memiliki kebijakan terlampir yang memberikan izin untuk menggunakan berbagai AWS layanan. Namun, Anda menetapkan peran ke EC2 instans Amazon daripada 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 IAM peran untuk menjalankan resep dari EC2 instans Menggunakan SDK for Ruby pada Instance Vagrant Amazon.
Anda dapat menjalankan resep ini dengan Test Kitchen menggunakan driver dapur-ec2, seperti yang dijelaskan dalam. Contoh 9: Menggunakan EC2 Instans Amazon Namun, menginstal SDK untuk Ruby di Amazon EC2 instans agak rumit dan bukan sesuatu yang perlu Anda perhatikan untuk Stacks. AWS OpsWorks Semua instance AWS OpsWorks Stacks Linux memiliki SDK untuk Ruby diinstal secara default. Untuk kesederhanaan, contoh karena itu menggunakan instance AWS OpsWorks Stacks.
Langkah pertama adalah mengatur IAM peran. Contoh ini mengambil pendekatan paling sederhana, yaitu menggunakan EC2 peran Amazon 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 IAM identitas (konsol) di Panduan IAM Pengguna.
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 IAM instans 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
-
Buat direktori bernama
s3bucket_ops
dan navigasikan ke sana. -
Buat
metadata.rb
file dengan konten berikut dan simpan kes3bucket_ops
.name "s3bucket_ops" version "0.1.0"
-
Buat
recipes
direktori di dalamnyas3bucket_ops
. -
Buat
default.rb
file dengan resep berikut dan simpan kerecipes
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
-
Buat
.zip
arsips3bucket_ops
dan unggah arsip ke bucket Amazon S3. Untuk mempermudah, buat arsip publik, lalu rekam arsip URL 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 untuk Ruby,
chef_gem
sumber daya telah dihapus. -
Resepnya tidak memberikan kredensi apa pun.
AWS::S3.new
Kredensi 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
-
Buka konsol AWS OpsWorks Stacks
dan klik Add Stack. -
Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan klik Tambahkan Tumpukan.
-
Nama — Ruby SDK
-
SSHKunci default - Sebuah EC2 key pair Amazon
Jika Anda perlu membuat EC2 key pair Amazon, lihat Amazon EC2 Key Pairs. Perhatikan bahwa key pair harus milik AWS region yang sama dengan instance. Contoh menggunakan wilayah AS Barat (Oregon) default.
-
-
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.
-
-
Tambahkan instance 24/7 dengan pengaturan default ke layer dan mulai.
Anda sekarang dapat menginstal dan menjalankan resep
Untuk menjalankan resep
-
Edit tumpukan untuk mengaktifkan buku masak khusus, dan tentukan pengaturan berikut.
-
Jenis repositori - Arsip Http
-
Repositori URL — Arsip buku masak URL yang Anda rekam sebelumnya.
Gunakan nilai default untuk pengaturan lain dan klik Simpan untuk memperbarui konfigurasi tumpukan.
-
-
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.
-
Jalankan resep dengan menjalankan perintah tumpukan Execute Recipes dengan Recipes untuk mengeksekusi set ke
s3bucket_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
-
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) ...
-
Gunakan SSH untuk masuk ke instance dan daftar isi
/tmp
.