View a markdown version of this page

Risoluzione dei problemi di gestione dei parametri - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di gestione dei parametri

Problemi comuni di gestione dei parametri

Variabili di ambiente non disponibili durante l'esecuzione

Problema: i comandi fanno errore, perché le variabili di ambiente (SSM_parameter-name) non vengono trovate.

Possibili cause:

  • La versione dell'SSM Agent non supporta l'interpolazione delle variabili di ambiente

  • interpolationType non è impostato su ENV_VAR

  • Il nome del parametro non corrisponde a quello della variabile di ambiente previsto

Soluzione::

  • Verifica che la versione dell'SSM Agent sia 3.3.2746.0 o successiva

  • Aggiungi la logica di fallback per le versioni precedenti dell'agente:

    if [ -z "${SSM_parameterName+x}" ]; then export SSM_parameterName="{{parameterName}}" fi
Valori di parametri contenenti caratteri speciali

Problema: i comandi fanno errore, quando i valori dei parametri contengono spazi, virgolette o altri caratteri speciali.

Soluzione::

  • Usa le virgolette corrette, quando fai riferimento alle variabili di ambiente:

    # Correct echo "$SSM_parameter-name" # Incorrect echo $SSM_parameter-name
  • Aggiungi la convalida dell'input utilizzando allowedPattern per limitare i caratteri speciali

Comportamento incoerente tra le piattaforme

Problema: la gestione dei parametri funziona in modo diverso su Linux e sui sistemi Windows Server.

Soluzione::

  • Utilizza la sintassi delle variabili di ambiente specifica della piattaforma:

    # PowerShell $env:SSM_parameter-name # Bash $SSM_parameter-name
  • Utilizza i controlli delle precondizioni specifici della piattaforma nel tuo documento

I valori dei parametri non sono stati correttamente esposti a escape

Problema: vulnerabilità di iniezione di comandi nonostante l'utilizzo dell'interpolazione delle variabili di ambiente.

Soluzione::

  • Usa sempre l'escape corretto, quando includi i valori dei parametri nei comandi:

    # Correct mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\"" # Incorrect mysql_command="mysql -u $SSM_username -p$SSM_password"

Consigli per la convalida dei parametri

Usa queste tecniche per convalidare la gestione dei parametri:

  1. Testa la disponibilità delle variabili di ambiente:

    #!/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. Verifica i modelli dei parametri:

    parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs"
  3. Includi la gestione degli errori:

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