Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan tindakan siklus hidup simpul di AWS PCS
Anda menentukan tindakan siklus hidup node dalam konfigurasi grup simpul komputasi Anda. Topik ini menjelaskan cara mendefinisikan skrip, mengontrol apakah skrip berjalan ulang saat reboot, menyimpannya, meneruskan argumen, menangani kegagalan, menyimpan dalam cache, memvalidasi integritasnya, dan membaca lognya.
Persyaratan versi agen
Tindakan siklus hidup node memerlukan agen AWS PCS versi 1.5.0-1 atau yang lebih baru. Jika node komputasi Anda menggunakan AMI kustom dengan versi agen yang lebih lama, perbarui agen sebelum Anda mengonfigurasi tindakan siklus hidup. Untuk informasi selengkapnya, lihat AWS Versi agen PCS.
Cara mendefinisikan skrip
Setiap skrip memilikiname, a scriptSourcearguments, opsional, onError kebijakan, danexecutionPolicy. Bidang lokasi dan integritas dikelompokkan di bawahscriptSource.
{ "name": "My script", "scriptSource": { "scriptLocation": "s3://my-bucket/my-script.sh", "s3VersionId": "optional, S3 only", "checksum": "optional 64-char SHA-256 hex" }, "arguments": ["arg1", "arg2"], "onError": "TERMINATE", "executionPolicy": "FIRST_BOOT_ONLY" }
Menambahkan tindakan siklus hidup ke grup simpul komputasi
Anda dapat menambahkan tindakan siklus hidup saat membuat atau memperbarui grup simpul komputasi. Gunakan Konsol Manajemen AWS atau AWS CLI.
Mengontrol perilaku reboot
Tetapkan executionPolicy per skrip untuk mengontrol apakah itu berjalan kembali saat reboot.
Nilai |
Perilaku |
Kapan harus digunakan |
|---|---|---|
|
Jalankan skrip sekali, pada boot pertama node. Lewati pada setiap reboot berikutnya. |
One-time setup, seperti menginstal paket, bergabung dengan domain, atau menginisialisasi penyimpanan. Anda tidak harus membuat skrip ini menjadi idempoten. |
|
Jalankan skrip pada boot pertama dan pada setiap reboot. |
Konfigurasi yang harus diterapkan kembali setelah restart, seperti memasang kembali sistem file sementara atau menegaskan kembali status node. |
Skrip diatur untuk FIRST_BOOT_ONLY berjalan sekali dan dilewati saat reboot. Skrip diatur untuk EVERY_BOOT berjalan pada setiap boot dan harus idempotent (aman untuk dijalankan lebih dari sekali dengan hasil yang sama).
Lokasi penyimpanan skrip
Anda dapat menyimpan skrip di Amazon S3 atau menyajikannya melalui HTTPS. Skrip tidak dapat diunggah sebaris melalui API, dan setiap skrip tidak boleh lebih besar dari 2 MiB — agen menolak skrip apa pun yang melebihi ukuran ini.
-
Amazon S3 (
s3://) — Instans yang harus dimiliki profil IAMbucket/keys3:GetObjectpada objek. Dengan titik akhir VPC gateway S3, node di subnet pribadi dapat mengambil skrip melalui titik akhir VPC. Sematkan versi tertentu denganscriptSource.s3VersionId(hanya lokasi S3). -
HTTPS (
https://) - Host harus dapat dibaca publik (tidak ada otentikasi) dan node memerlukan akses internet keluar (gateway internet, gateway NAT, atau proxy HTTP). Ini berguna untuk skrip yang dihosting di GitHub atau repositori publik lainnya.hostname/path
Penyimpanan eksternal menyediakan kontrol versi, auditabilitas, dan penggunaan kembali di seluruh tim. Skrip sebaris atau yang diunggah tidak didukung.
Meneruskan argumen ke skrip
Meneruskan argumen sebagai array yang diurutkan. Mereka mencapai skrip Anda sebagai parameter baris perintah posisi.
arguments: ["fs-12345678", "/shared", "nfs4"] # script.sh fs-12345678 /shared nfs4 ($1=fs-12345678, $2=/shared, $3=nfs4)
Agen mengekspor variabel lingkungan ke setiap skrip. Variabel ini berisi metadata cluster dan node.
Variabel |
Deskripsi |
|---|---|
|
Pengidentifikasi klaster/nama |
|
Hitung pengidentifikasi/nama grup simpul |
|
Pengidentifikasi simpul |
|
|
#!/usr/bin/env bash echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"
Penanganan kesalahan
Setiap skrip memiliki onError bidang yang mengontrol apa yang terjadi ketika skrip keluar bukan nol atau dimatikan oleh sinyal.
Nilai |
Perilaku |
Kapan harus digunakan |
|---|---|---|
|
Tandai node gagal dan hentikan. |
Pengaturan penting (pemasangan penyimpanan, bergabung Active Directory). Mencegah pembayaran untuk node yang rusak. |
|
Hentikan skrip yang tersisa di panggung; biarkan node berjalan. |
Debugging — memeriksa instance setelah kegagalan. |
|
Catat kesalahan dan jalankan skrip berikutnya. |
Tugas opsional atau upaya terbaik. |
Skrip gagal jika keluar bukan nol atau dimatikan oleh sinyal (misalnya,SIGSEGV). Skrip tidak dicoba lagi. Jika operasi mungkin mengalami kegagalan sementara, tambahkan logika coba lagi di dalam skrip. Namun, pengambilan skrip (unduhan) dicoba ulang — hingga 3 upaya dengan backkoff eksponensial (maksimum sekitar 17 detik) — sebelum perilaku diterapkan. onError
Caching skrip dan pembaruan
Agen mengunduh setiap skrip ke instance pada boot pertama dan menyimpannya secara lokal. Dua bidang mengontrol perilaku saat reboot: scriptCachingPolicy mengontrol pengunduhan ulang dan executionPolicy mengontrol eksekusi ulang.
-
CACHE_ONCE(default) - Unduh sekali pada boot pertama; jangan pernah melakukan refetch. Perilaku identik di seluruh reboot. Memperbarui konten skrip memerlukan penggantian instance. -
REFRESH_ON_REBOOT— Re-download pada setiap reboot, mengganti cache. Ini memungkinkan Anda mengirimkan perbaikan skrip melalui reboot. Ini membutuhkan akses jaringan pada setiap boot; jika refresh gagal, unduhan diperlakukan sebagai kegagalan pengambilan danonErrorperilaku skrip berlaku (tidak ada fallback ke salinan cache). Skrip yang diperbarui hanya benar-benar berjalan kembali saat reboot jika ya.executionPolicyEVERY_BOOT
Konfigurasi siklus hidup (skrip mana yang dijalankan, argumennya, penanganan kesalahan, dan kebijakan eksekusi) selalu tidak dapat diubah per instance. Mengubahnya hanya UpdateComputeNodeGroup memengaruhi instance baru dan memicu DRAIN strategi sehingga menjalankan tugas selesai sebelum node diganti.
Integritas skrip (checksum)
Secara opsional berikan a SHA-256 checksum dalam skripscriptSource, sebagai string heksadesimal 64 karakter. Agen memvalidasinya saat mengunduh; ketidakcocokan diperlakukan sebagai kegagalan unduhan dan pemicu. onError Kami merekomendasikan checksum untuk produksi, terutama untuk skrip dari sumber bersama atau eksternal.
sha256sum mount-efs.sh # use the 64-char hex hash as the checksum value
Logging dan debugging
Setiap skrip menulis ke file lognya sendiri, dan agen menyimpan log operasionalnya sendiri.
# agent: download, caching, checksum, orchestration /var/log/amazon/pcs/lifecycle/actions/executor.log # each script's stdout/stderr /var/log/amazon/pcs/lifecycle/actions/<stage>/<script-name>.log
Nama file log menggunakan nama skrip seperti yang Anda tetapkan. Ruang dipertahankan. Misalnya, skrip bernama Mount EFS home directory write toMount EFS home
directory.log. Terhubung dengan SSH atau AWS Systems Manager Session Manager untuk membacanya - keduanya tersedia di pang nodeBootstrapped gung. Karena node yang gagal diganti, TERMINATE teruskan log di luar instans untuk debugging setelah penghentian: tambahkan skrip bootstrap node yang mengonfigurasi CloudWatch agen Amazon untuk mengirimkan direktori log siklus hidup ke Amazon Logs. CloudWatch configure-cloudwatch-logs.shSkrip AWS-melakukan ini. Lihat informasi yang lebih lengkap di Gunakan AWS-skrip yang dipelihara untuk tindakan siklus hidup simpul di AWS PCS.