Beheben von Fehlern mit der Parameterverarbeitung - AWS Systems Manager

AWS Systems ManagerChange Managersteht neuen Kunden nicht mehr offen. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der AWS Systems ManagerChange Manager Verfügbarkeit.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beheben von Fehlern mit der Parameterverarbeitung

Häufige Probleme bei der Parameterverarbeitung

Umgebungsvariablen sind während der Ausführung nicht verfügbar

Problem: Befehle schlagen fehl, weil Umgebungsvariablen (SSM_parameter-name) nicht gefunden werden.

Mögliche Ursachen:

  • Die Version von SSM Agent unterstützt keine Interpolation von Umgebungsvariablen.

  • interpolationType ist nicht auf ENV_VAR gesetzt.

  • Der Parametername stimmt nicht mit dem erwarteten Namen der Umgebungsvariablen überein.

Solution (Lösung):

  • Stellen Sie sicher, dass die SSM Agent-Version 3.3.2746.0 oder höher ist.

  • Fügen Sie eine Fallback-Logik für ältere Agentenversionen hinzu:

    if [ -z "${SSM_parameterName+x}" ]; then export SSM_parameterName="{{parameterName}}" fi
Parameterwerte mit Sonderzeichen

Problem: Befehle schlagen fehl, wenn Parameterwerte Leerzeichen, Anführungszeichen oder andere Sonderzeichen enthalten.

Solution (Lösung):

  • Verwenden Sie korrekte Anführungszeichen, wenn Sie auf Umgebungsvariablen verweisen:

    # Correct echo "$SSM_parameter-name" # Incorrect echo $SSM_parameter-name
  • Fügen Sie mit allowedPattern eine Eingabevalidierung hinzu, um Sonderzeichen einzuschränken.

Inkonsistentes Verhalten auf verschiedenen Plattformen

Problem: Die Parameterverarbeitung funktioniert in Linux- und Windows Server-Systemen unterschiedlich.

Solution (Lösung):

  • Verwenden Sie die plattformspezifische Syntax für Umgebungsvariablen:

    # PowerShell $env:SSM_parameter-name # Bash $SSM_parameter-name
  • Verwenden Sie plattformspezifische Vorbedingungsprüfungen in Ihrem Dokument.

Parameterwerte wurden nicht korrekt maskiert

Problem: Mangelnder Schutz vor Befehlseinschleusung trotz Interpolation von Umgebungsvariablen.

Solution (Lösung):

  • Achten Sie immer auf die ordnungsgemäße Maskierung, wenn Sie Parameterwerte in Befehle aufnehmen:

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

Tipps für die Parametervalidierung

Nutzen Sie diese Methoden, um Ihre Parameterverarbeitung zu validieren:

  1. Verfügbarkeit von Umgebungsvariablen testen:

    #!/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. Parametermuster überprüfen:

    parameters: myParameter: type: String allowedPattern: "^[a-zA-Z0-9_-]+$" description: "Test this pattern with sample inputs"
  3. Fehlerbehandlung einbeziehen:

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