Résolution des problèmes de gestion des paramètres - AWS Systems Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes de gestion des paramètres

Problèmes courants de gestion des paramètres

Variables d’environnement non disponibles pendant l’exécution

Problème : les commandes échouent, car les variables d’environnement (SSM_parameter-name) sont introuvables.

Causes possibles :

  • La version de SSM Agent ne prend pas en charge l’interpolation des variables d’environnement

  • interpolationType n’est pas défini sur ENV_VAR

  • Le nom du paramètre ne correspond pas au nom de variable d’environnement attendu

Solution :

  • Vérifiez que SSM Agent est à la version 3.3.2746.0 ou ultérieure

  • Ajoutez une logique de secours pour les anciennes versions de l’agent :

    if [ -z "${SSM_parameterName+x}" ]; then export SSM_parameterName="{{parameterName}}" fi
Valeurs de paramètres contenant des caractères spéciaux

Problème : les commandes échouent lorsque les valeurs des paramètres contiennent des espaces, des guillemets ou d’autres caractères spéciaux.

Solution :

  • Utilisez des guillemets appropriés lorsque vous référencez les variables d’environnement :

    # Correct echo "$SSM_parameter-name" # Incorrect echo $SSM_parameter-name
  • Ajoutez la validation des entrées avec allowedPattern pour restreindre les caractères spéciaux

Comportement incohérent entre plateformes

Problème : la gestion des paramètres fonctionne différemment sur les systèmes Linux et Windows Server.

Solution :

  • Utilisez une syntaxe de variable d’environnement spécifique à la plateforme :

    # PowerShell $env:SSM_parameter-name # Bash $SSM_parameter-name
  • Utilisez des vérifications de conditions préalables spécifiques à la plateforme dans votre document

Les valeurs des paramètres ne sont pas correctement échappées

Problème : vulnérabilités d’injection de commandes malgré l’utilisation de l’interpolation de variables d’environnement.

Solution :

  • Utilisez toujours un échappement approprié lorsque vous incluez des valeurs de paramètre dans les commandes :

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

Conseils de validation des paramètres

Utilisez ces techniques pour valider votre gestion des paramètres :

  1. Disponibilité des variables de l’environnement de test :

    #!/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. Vérifiez les modèles des paramètres :

    parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs"
  3. Incluez la gestion des erreurs :

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