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_) non vengono trovate.parameter-namePossibili cause:
-
La versione dell'SSM Agent non supporta l'interpolazione delle variabili di ambiente
-
interpolationTypenon è impostato suENV_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
allowedPatternper 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:
-
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 -
Verifica i modelli dei parametri:
parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs" -
Includi la gestione degli errori:
if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then echo "Parameter validation failed" exit 1 fi