AWS Systems ManagerChange Managertidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk informasi selengkapnya, lihat perubahan AWS Systems ManagerChange Manager ketersediaan.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah penanganan parameter
Masalah penanganan parameter umum
- Variabel lingkungan tidak tersedia selama eksekusi
-
Masalah: Perintah gagal karena variabel lingkungan (
SSM_) tidak ditemukan.parameter-nameKemungkinan penyebabnya:
-
SSM Agentversi tidak mendukung interpolasi variabel lingkungan
-
interpolationTypetidak diatur keENV_VAR -
Nama parameter tidak cocok dengan nama variabel lingkungan yang diharapkan
Solusi:
-
Verifikasi SSM Agent versi 3.3.2746.0 atau yang lebih baru
-
Tambahkan logika fallback untuk versi agen yang lebih lama:
if [ -z "${SSM_parameterName+x}" ]; then export SSM_parameterName="{{parameterName}}" fi
-
- Nilai parameter yang mengandung karakter khusus
-
Masalah: Perintah gagal ketika nilai parameter berisi spasi, tanda kutip, atau karakter khusus lainnya.
Solusi:
-
Gunakan kutipan yang tepat saat mereferensikan variabel lingkungan:
# Correct echo "$SSM_parameter-name" # Incorrect echo $SSM_parameter-name -
Tambahkan validasi masukan menggunakan
allowedPatternuntuk membatasi karakter khusus
-
- Perilaku tidak konsisten di seluruh platform
-
Masalah: Penanganan parameter bekerja secara berbeda di Linux dan Windows Server sistem.
Solusi:
-
Gunakan sintaks variabel lingkungan khusus platform:
# PowerShell $env:SSM_parameter-name# Bash $SSM_parameter-name -
Gunakan pemeriksaan prasyarat khusus platform dalam dokumen Anda
-
- Nilai parameter tidak lolos dengan benar
-
Masalah: Kerentanan injeksi perintah meskipun menggunakan interpolasi variabel lingkungan.
Solusi:
-
Selalu gunakan escaping yang tepat saat menyertakan nilai parameter dalam perintah:
# Correct mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\"" # Incorrect mysql_command="mysql -u $SSM_username -p$SSM_password"
-
Kiat validasi parameter
Gunakan teknik ini untuk memvalidasi penanganan parameter Anda:
-
Uji ketersediaan variabel lingkungan:
#!/bin/bash # Print all SSM_ environment variables env | grep ^SSM_ # Test specific parameter if [ -n "$SSM_parameter" ]; then echo "Parameter is available" else echo "Parameter is not available" fi -
Verifikasi pola parameter:
parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs" -
Sertakan penanganan kesalahan:
if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then echo "Parameter validation failed" exit 1 fi