Erstellen von SSM-Dokumentinhalten - 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.

Erstellen von SSM-Dokumentinhalten

Wenn die AWS Systems Manager öffentlichen Dokumente nicht alle Aktionen ausführen, die Sie für Ihre AWS Ressourcen ausführen möchten, können Sie Ihre eigenen SSM-Dokumente erstellen. Sie können SSM-Dokumente auch über die Konsole klonen. Beim Klonen von Dokumenten werden Inhalte aus einem vorhandenen Dokument in ein neues Dokument kopiert, das Sie ändern können. Beim Erstellen oder Klonen eines Dokuments darf der Inhalt des Dokuments 64 KB nicht überschreiten. Dieses Kontingent beinhaltet auch den zur Laufzeit für Eingabeparameter angegebenen Inhalt. Wenn Sie ein neues Command- oder Policy-Dokument erstellen, wird empfohlen, Schemaversion 2.2 oder höher zu verwenden, damit Sie die neuesten Features wie Dokumentbearbeitung, automatisches Versioning, Sequenzierung usw. nutzen können.

Schreiben von SSM-Dokumentinhalt

Um eigene SSM-Dokumentinhalte zu erstellen, müssen Sie die verschiedenen Schemas, Features, Plugins und die Syntax für SSM-Dokumente verstehen. Wir empfehlen Ihnen, sich mit den folgenden Ressourcen vertraut zu machen.

AWS Vordefinierte SSM-Dokumente können einige der von Ihnen benötigten Aktionen ausführen. Sie können diese Dokumente je nach Dokumenttyp mithilfe der Plugins aws:runDocument, aws:runCommand oder aws:executeAutomation in Ihrem benutzerdefinierten SSM-Dokument aufrufen. Sie können Teile dieser Dokumente auch in ein benutzerdefiniertes SSM-Dokument kopieren und den Inhalt entsprechend Ihren Anforderungen bearbeiten.

Tipp

Beim Erstellen von SSM-Dokumentinhalten können Sie den Inhalt ändern und das SSM-Dokument während des Tests mehrmals aktualisieren. Mit den folgenden Befehlen wird das SSM-Dokument mit dem neuesten Inhalt aktualisiert und die Standardversion des Dokuments wird auf die neueste Dokumentversion aktualisiert.

Anmerkung

Die Linux- und Windows-Befehle nutzen das jq-Befehlszeilen-Tool, um die JSON-Antwortdaten zu filtern.

Linux & macOS
latestDocVersion=$(aws ssm update-document \ --content file://path/to/file/documentContent.json \ --name "ExampleDocument" \ --document-format JSON \ --document-version '$LATEST' \ | jq -r '.DocumentDescription.LatestVersion') aws ssm update-document-default-version \ --name "ExampleDocument" \ --document-version $latestDocVersion
Windows
latestDocVersion=$(aws ssm update-document ^ --content file://C:\path\to\file\documentContent.json ^ --name "ExampleDocument" ^ --document-format JSON ^ --document-version "$LATEST" ^ | jq -r '.DocumentDescription.LatestVersion') aws ssm update-document-default-version ^ --name "ExampleDocument" ^ --document-version $latestDocVersion
PowerShell
$content = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String $latestDocVersion = Update-SSMDocument ` -Content $content ` -Name "ExampleDocument" ` -DocumentFormat "JSON" ` -DocumentVersion '$LATEST' ` | Select-Object -ExpandProperty LatestVersion Update-SSMDocumentDefaultVersion ` -Name "ExampleDocument" ` -DocumentVersion $latestDocVersion

Bewährte Methoden für die Sicherheit für SSM-Dokumente

Beachten Sie beim Erstellen von SSM-Dokumenten die folgenden bewährten Methoden, um das Einschleusen von Befehlen zu verhindern und eine sichere Parameterbearbeitung zu gewährleisten:

  • Verwenden Sie die Interpolation von Umgebungsvariablen für Zeichenfolgeparameter, die in Befehlen oder Skripten verwendet werden. Fügen Sie Ihren Zeichenfolgeparametern die Eigenschaft interpolationType mit dem Wert ENV_VAR hinzu:

    { "command": { "type": "String", "description": "Command to execute", "interpolationType": "ENV_VAR" } }

    Sie können die Sicherheit Ihrer SSM-Dokumente weiter verbessern, indem Sie angeben, dass doppelte Anführungszeichen in durch Interpolation gelieferten Werten nicht zulässig sind:

    { "command": { "type": "String", "description": "Command to execute", "interpolationType": "ENV_VAR", "allowedPattern": "^[^"]*$" } }
  • Wenn Sie interpretierte Sprachen wie Python, Ruby oder Node.js verwenden, verweisen Sie auf Parameter mit der entsprechenden Umgebungsvariablensyntax:

    # Python example import os command = os.environ['SSM_Message']
  • Um die Abwärtskompatibilität mit älteren Versionen von SSM Agent zu gewährleisten (vor Version 3.3.2746.0), fügen Sie eine Fallback-Logik für Umgebungsvariablen hinzu:

    if [ -z "${SSM_command+x}" ]; then export SSM_command="{{command}}" fi
  • Kombinieren Sie die Interpolation von Umgebungsvariablen mit allowedPattern, um eine zusätzliche Eingabevalidierung bereitzustellen. Im folgenden Beispiel verhindert der allowedPattern-Wert ^[^"]*$ doppelte Anführungszeichen im Zeichenfolgewert:

    { "command": { "type": "String", "interpolationType": "ENV_VAR", "allowedPattern": "^[a-zA-Z0-9_-]+$" } }
  • Bevor Sie Ihr SSM-Dokument implementieren, sollten Sie die folgenden Sicherheitsaspekte prüfen:

    • Alle Zeichenfolgeparameter, die Benutzereingaben akzeptieren, verwenden gegebenenfalls die Interpolation mit Umgebungsvariablen.

    • Die Eingabevalidierung wird nach Möglichkeit mit allowedPattern implementiert.

    • Das Dokument beinhaltet eine angemessene Fehlerbehandlung für die Parameterverarbeitung.

    • Für Umgebungen, die ältere Versionen von SSM Agent verwenden, wird die Abwärtskompatibilität beibehalten.

Informationen zu AWS diensteigenen Ressourcen, auf die Systems Manager zugreift, und zur Konfiguration von Datenperimeterrichtlinien finden Sie unter. Datenperimeter in AWS Systems Manager

Klonen eines SSM-Dokuments

Sie können AWS Systems Manager Dokumente mit der Systems Manager Documents Console klonen, um SSM-Dokumente zu erstellen. Durch das Klonen von SSM-Dokumenten werden Inhalte aus einem vorhandenen Dokument in ein neues Dokument kopiert, das Sie ändern können. Sie können kein Dokument klonen, das größer als 64 KB ist.

Klonen eines SSM-Dokuments
  1. Öffnen Sie die AWS Systems Manager Konsole unter. https://console.aws.amazon.com/systems-manager/

  2. Wählen Sie im Navigationsbereich die Option Dokumente aus.

  3. Geben Sie in das Suchfeld den Namen des Dokuments ein, das Sie klonen möchten.

  4. Wählen Sie den Namen des Dokuments aus, das Sie klonen möchten. Wählen Sie anschließend die Option Clone document (Dokument klonen) im Dropdownmenü Aktionen.

  5. Ändern Sie das Dokument nach Belieben und wählen Sie dann Create document (Dokument erstellen), um das Dokument zu speichern.

Nachdem Sie den SSM-Dokumentinhalt geschrieben haben, können Sie mithilfe eines der folgenden Methoden ein SSM-Dokument erstellen.

Erstellen eines SSM-Dokuments

Erstellen von zusammengesetzten Dokumenten

Ein zusammengesetztes Dokument AWS Systems Manager (SSM) ist ein benutzerdefiniertes Dokument, das eine Reihe von Aktionen ausführt, indem es ein oder mehrere sekundäre SSM-Dokumente ausführt. Zusammengesetzte Dokumente fördern Infrastruktur als Code, indem sie Ihnen ermöglichen, einen Standardsatz an SSM-Dokumenten für allgemeine Aufgaben wie das Bootstrapping von Software oder den Domain-Betritt von Instances zu erstellen. Sie können diese Dokumente dann gemeinsam nutzen, um die Wartung von SSM-Dokumenten AWS-Region zu reduzieren und die Konsistenz AWS-Konten zu gewährleisten.

Sie können beispielsweise ein zusammengesetztes Dokument erstellen, das die folgenden Aktionen ausführt:

  1. Installiert alle Patches in der Zulassungsliste.

  2. Installieren von Antivirensoftware

  3. Herunterladen von Skripts von GitHub und Ausführen der Skripts.

In diesem Beispiel umfasst das benutzerdefinierte SSM-Dokument die folgenden Plugins für die Ausführung dieser Aktionen:

  1. Das aws:runDocument-Plugin zum Ausführen des AWS-RunPatchBaseline-Dokuments, das alle aufgeführten Patches installiert.

  2. Das Plugin aws:runDocument zum Ausführen des Dokuments AWS-InstallApplication, das die Antivirensoftware installiert

  3. Das Plugin aws:downloadContent zum Herunterladen von Skripts von GitHub und Ausführen der Skripts.

Zusammengesetzte und sekundäre Dokumente können in Systems Manager, GitHub (öffentliche und private Repositorys) oder Amazon S3 gespeichert werden. Zusammengesetzte und sekundäre Dokumente lassen sich im JSON- oder YAML-Format erstellen.

Anmerkung

Zusammengesetzte Dokumente können maximal drei Dokumente tief ausgeführt werden. Dies bedeutet, dass ein zusammengesetztes Dokument ein untergeordnetes Dokument aufrufen kann, das wiederum ein letztes Dokument aufrufen kann.

Zum Erstellen eines zusammengesetzten Dokuments fügen Sie das aws:runDocument-Plugin einem benutzerdefinierten SSM-Dokument hinzu und geben die erforderlichen Eingaben an. Folgendes ist ein Beispiel eines zusammengesetzten Dokuments, das die folgenden Aktionen ausführt:

  1. Ausführen des aws:downloadContent-Plugins zum Herunterladen eines SSM-Dokuments von einem öffentlichen Repository auf GitHub in ein lokales Verzeichnis mit der Bezeichnung „bootstrap“. Das SSM-Dokument heißt StateManagerBootstrap .yml (ein YAML-Dokument).

  2. Führt das aws:runDocument Plugin aus, um das .yml-Dokument auszuführen. StateManagerBootstrap Es wurden keine Parameter angegeben.

  3. Führt das Plugin aws:runDocument aus, um das AWS-ConfigureDocker pre-defined SSM-Dokument auszuführen. Die angegebenen Parameter installieren Docker in der Instance.

{ "schemaVersion": "2.2", "description": "My composite document for bootstrapping software and installing Docker.", "parameters": { }, "mainSteps": [ { "action": "aws:downloadContent", "name": "downloadContent", "inputs": { "sourceType": "GitHub", "sourceInfo": "{\"owner\":\"TestUser1\",\"repository\":\"TestPublic\", \"path\":\"documents/bootstrap/StateManagerBootstrap.yml\"}", "destinationPath": "bootstrap" } }, { "action": "aws:runDocument", "name": "runDocument", "inputs": { "documentType": "LocalPath", "documentPath": "bootstrap", "documentParameters": "{}" } }, { "action": "aws:runDocument", "name": "configureDocker", "inputs": { "documentType": "SSMDocument", "documentPath": "AWS-ConfigureDocker", "documentParameters": "{\"action\":\"Install\"}" } } ] }
Weitere Informationen