

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
<a name="cng-node-lifecycle-actions-configure"></a>

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](pcs-agent-versions.md).

## Cara mendefinisikan skrip
<a name="cng-node-lifecycle-actions-configure-define"></a>

Setiap skrip memiliki`name`, a `scriptSource``arguments`, opsional, `onError` kebijakan, dan`executionPolicy`. Bidang lokasi dan integritas dikelompokkan di bawah`scriptSource`.

```
{
  "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
<a name="cng-node-lifecycle-actions-configure-add"></a>

Anda dapat menambahkan tindakan siklus hidup saat membuat atau memperbarui grup simpul komputasi. Gunakan Konsol Manajemen AWS atau AWS CLI.

------
#### [ Konsol Manajemen AWS ]

**Untuk menambahkan tindakan siklus hidup menggunakan konsol**

1. Buka konsol [AWS PCS](https://console.aws.amazon.com/pcs/home#/clusters).

1. Buka halaman buat atau perbarui untuk grup simpul komputasi.

1. Di ** bagian T ** indakan siklus hidup Node, pilih Tam ** bah skrip**. 

1. Pilih sumber skrip:

   1. **Tambahkan dari pust AWS aka skrip PCS ** — Referensi skrip AWS yang dikelola. Untuk informasi selengkapnya, lihat [Gunakan AWS-skrip yang dipelihara untuk tindakan siklus hidup simpul di AWS PCS](cng-node-lifecycle-actions-vetted-scripts.md).

   1. **Tambahkan melalui S3 ** - Referensikan skrip dengan URI Amazon S3.

   1. **Tambahkan melalui HTTPS ** — Referensikan skrip dengan URL HTTPS-nya.

1. Pilih tahap simpul.

1. Untuk skrip yang Anda tambahkan melalui S3 atau HTTPS, tentukan pengaturan ini:

   1. **Lokasi skrip ** — Masukkan URI S3 atau URL HTTPS untuk skrip.

   1. **Nama ** — Masukkan nama untuk skrip.

   1. (Opsional) ** Checksum ** — Masukkan SHA-256 checksum untuk memverifikasi integritas skrip. Untuk informasi selengkapnya, lihat [Integritas skrip (checksum)](#cng-node-lifecycle-actions-configure-checksums).

   1. (Opsional) Untuk skrip yang Anda tambahkan melalui S3, masukkan versi untuk mereferensikan versi objek tertentu.

1. Untuk semua sumber skrip, tentukan pengaturan ini:

   1. **Perilaku penanganan kesalahan ** — Pilih `TERMINATE``STOP_SEQUENCE`,, atau`CONTINUE`.

   1. **Kebijakan eksekusi ** — Pilih `FIRST_BOOT_ONLY` atau`EVERY_BOOT`.

   1. (Opsional) ** Argum ** en — Tambahkan argumen untuk diteruskan ke skrip.

1. Untuk menambahkan lebih banyak skrip, ulangi langkah-langkah ini.

1. Skrip berjalan dari atas ke bawah dalam tahap. Untuk mengubah urutan eksekusi, pilih Tind ** akan ** untuk skrip, lalu pilih Pindah ke ** atas ** atau P ** indahkan ke bawah**.

1. Untuk kebijakan ** Caching**, pilih `CACHE_ONCE` atau`REFRESH_ON_REBOOT`. Kebijakan caching berlaku untuk semua skrip. Untuk informasi selengkapnya, lihat [Caching skrip dan pembaruan](#cng-node-lifecycle-actions-configure-caching).

------
#### [ AWS CLI ]

Gunakan `--node-lifecycle-actions` parameter dengan `update-compute-node-group` perintah `create-compute-node-group` atau. Untuk struktur parameter, lihat [ NodeLifecycleActionsRequest ](https://docs.aws.amazon.com/pcs/latest/APIReference/API_NodeLifecycleActionsRequest.html) di Referensi API *AWS PCS*. Misalnya perintah, lihat[Contoh tindakan siklus hidup simpul untuk AWS PCS](cng-node-lifecycle-actions-examples.md).

------

## Mengontrol perilaku reboot
<a name="cng-node-lifecycle-actions-configure-reboot"></a>

Tetapkan `executionPolicy` per skrip untuk mengontrol apakah itu berjalan kembali saat reboot.


| **Nilai** | **Perilaku ** | **Kapan harus digunakan** | 
| --- | --- | --- | 
| `FIRST_BOOT_ONLY` (default) | 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. | 
| `EVERY_BOOT` | 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
<a name="cng-node-lifecycle-actions-configure-storage"></a>

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://{{bucket}}/{{key}}`) ** — Instans yang harus dimiliki profil IAM `s3:GetObject` pada objek. Dengan titik akhir VPC gateway S3, node di subnet pribadi dapat mengambil skrip melalui titik akhir VPC. Sematkan versi tertentu dengan `scriptSource.s3VersionId` (hanya lokasi S3).
+ **HTTPS (`https://{{hostname}}/{{path}}`) ** - 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.

Penyimpanan eksternal menyediakan kontrol versi, auditabilitas, dan penggunaan kembali di seluruh tim. Skrip sebaris atau yang diunggah tidak didukung.

## Meneruskan argumen ke skrip
<a name="cng-node-lifecycle-actions-configure-arguments"></a>

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** | 
| --- | --- | 
| `PCS_CLUSTER_ID` / `PCS_CLUSTER_NAME` | Pengidentifikasi klaster/nama | 
| `PCS_COMPUTE_NODE_GROUP_ID` / `PCS_COMPUTE_NODE_GROUP_NAME` | Hitung pengidentifikasi/nama grup simpul | 
| `PCS_NODE_ID` | Pengidentifikasi simpul | 
| `PCS_IS_FIRST_BOOT` | `1`pada boot pertama node, `0` pada setiap reboot berikutnya. Gunakan untuk perilaku cabang dalam `EVERY_BOOT` skrip. | 

```
#!/usr/bin/env bash
echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"
```

## Penanganan kesalahan
<a name="cng-node-lifecycle-actions-configure-errors"></a>

Setiap skrip memiliki `onError` bidang yang mengontrol apa yang terjadi ketika skrip keluar bukan nol atau dimatikan oleh sinyal.


| **Nilai** | **Perilaku ** | **Kapan harus digunakan** | 
| --- | --- | --- | 
| `TERMINATE` (default) | Tandai node gagal dan hentikan. | Pengaturan penting (pemasangan penyimpanan, bergabung Active Directory). Mencegah pembayaran untuk node yang rusak. | 
| `STOP_SEQUENCE` | Hentikan skrip yang tersisa di panggung; biarkan node berjalan. | Debugging — memeriksa instance setelah kegagalan. | 
| `CONTINUE` | 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
<a name="cng-node-lifecycle-actions-configure-caching"></a>

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 dan `onError` perilaku skrip berlaku (tidak ada fallback ke salinan cache). Skrip yang diperbarui hanya benar-benar berjalan kembali saat reboot jika ya. `executionPolicy` `EVERY_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)
<a name="cng-node-lifecycle-actions-configure-checksums"></a>

Secara opsional berikan a SHA-256 `checksum` dalam skrip`scriptSource`, 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
<a name="cng-node-lifecycle-actions-configure-logging"></a>

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 to`Mount 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.sh`Skrip AWS-melakukan ini. Lihat informasi yang lebih lengkap di [Gunakan AWS-skrip yang dipelihara untuk tindakan siklus hidup simpul di AWS PCS](cng-node-lifecycle-actions-vetted-scripts.md).