Solución de problemas de gestión de parámetros
Problemas comunes de gestión de parámetros
- Las variables de entorno no están disponibles durante la ejecución
-
Problema: los comandos fallan porque no se encuentran las variables de entorno (
SSM_
).parameter-name
Causas posibles:
-
La versión de SSM Agent no admite la interpolación de variables de entorno
-
interpolationType
no está configurado comoENV_VAR
-
El nombre del parámetro no coincide con el nombre de la variable de entorno esperada
Solución:
-
Compruebe que la versión de SSM Agent sea 3.3.2746.0 o posterior
-
Agregue una lógica alternativa para las versiones anteriores del agente:
if [ -z "${SSM_parameterName+x}" ]; then export SSM_parameterName="{{parameterName}}" fi
-
- Valores de parámetro que contienen caracteres especiales
-
Problema: los comandos fallan cuando los valores de los parámetros contienen espacios, comillas u otros caracteres especiales.
Solución:
-
Utilice las comillas adecuadas al hacer referencia a las variables de entorno:
# Correct echo "$SSM_
parameter-name
" # Incorrect echo $SSM_parameter-name
-
Agregue la validación de entrada mediante
allowedPattern
para restringir los caracteres especiales
-
- Comportamiento incoherente en todas las plataformas
-
Problema: la gestión de parámetros funciona de manera diferente en Linux y en los sistemas Windows Server.
Solución:
-
Utilice la sintaxis de variables de entorno específica de la plataforma:
# PowerShell $env:SSM_
parameter-name
# Bash $SSM_parameter-name
-
Utilice en su documento comprobaciones de condiciones previas específicas de la plataforma
-
- Los valores de los parámetros no se han filtrado correctamente
-
Problema: hay vulnerabilidades en la inyección de comandos a pesar de utilizar la interpolación de variables de entorno.
Solución:
-
Utilice siempre el método de escape adecuado al incluir valores de parámetros en los comandos:
# Correct mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\"" # Incorrect mysql_command="mysql -u $SSM_username -p$SSM_password"
-
Consejos de validación de parámetros
Utilice estas técnicas para validar su gestión de parámetros:
-
Pruebe la disponibilidad de las variables del entorno:
#!/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
-
Verifique los patrones de los parámetros:
parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs"
-
Incluya la gestión de errores:
if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then echo "Parameter validation failed" exit 1 fi