Risoluzione dei problemi di gestione dei parametri - AWS Systems Manager

AWS Systems ManagerChange Managernon è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, vedi modifica della AWS Systems ManagerChange Manager disponibilità.

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