Memecahkan masalah penanganan parameter - AWS Systems Manager

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_parameter-name) tidak ditemukan.

Kemungkinan penyebabnya:

  • SSM Agentversi tidak mendukung interpolasi variabel lingkungan

  • interpolationTypetidak diatur ke ENV_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 allowedPattern untuk 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:

  1. 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
  2. Verifikasi pola parameter:

    parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs"
  3. Sertakan penanganan kesalahan:

    if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then echo "Parameter validation failed" exit 1 fi