Zuordnen von Zielen für eine Automatisierung - 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.

Zuordnen von Zielen für eine Automatisierung

Verwenden Sie den Targets-Parameter, um schnell zu definieren, auf welche Ressourcen eine Automatisierung abzielt. Wenn Sie beispielsweise eine Automatisierung ausführen möchten, die Ihre verwalteten Instances neu startet, können Sie, anstatt manuell Dutzende von Instance-IDs in der Konsole oder in einem Befehl einzugeben, Ziel-Instances festlegen, indem Sie Amazon Elastic Compute Cloud (Amazon EC2)-Tags mit dem Targets-Parameter verwenden.

Wenn Sie eine Automatisierung ausführen, die ein Ziel verwendet, erstellt AWS Systems Manager eine untergeordnete Automatisierung für jedes Ziel. Wenn Sie z. B. mithilfe von Tags Amazon Elastic Block Store (Amazon EBS)-Volume angeben und diese Tags auf 100 Amazon EBS-Volumes aufgelöst werden, dann erstellt Systems Manager 100 untergeordnete Automatisierungen. Die übergeordnete Automatisierung ist abgeschlossen, wenn alle untergeordneten Automatisierungen einen endgültigen Status erreicht haben.

Anmerkung

Alle input parameters, die Sie zur Laufzeit angeben (entweder im Abschnitt Input parameters (Eingabeparameter) der Konsole oder mithilfe der Option parameters auf der Befehlszeile) werden automatisch von allen untergeordneten Automatisierungen verarbeitet.

Sie können Ressourcen für eine Automatisierung gezielt einsetzen, indem Sie Tags, Resource Groups und Parameterwerte verwenden. Darüber hinaus können Sie mit der Option TargetMaps mehrere Parameterwerte über die Befehlszeile oder eine Datei als Ziel einrichten. Der folgende Abschnitt beschreibt die einzelnen Targeting-Optionen eingehender.

Anzielen eines Tags

Sie können einen einzelnen Tag als Ziel einer Automatisierung bestimmen. Viele AWS-Ressourcen unterstützen Tags, einschließlich Amazon Elastic Compute Cloud (Amazon EC2) und Amazon Relational Database Service (Amazon RDS) -Instances, Amazon Elastic Block Store (Amazon EBS) -Volumes und -Snapshots, Resource Groups und Amazon Simple Storage Service (Amazon S3) -Buckets. Sie können Automatisierungen schnell auf Ihren AWS-Ressourcen ausführen, indem Sie einen Tag anzielen. Ein Tag ist ein Schlüssel-Wert-Paar, z. B. Operating_System:Linux oder Department:Finance. Wenn Sie einer Ressource einen bestimmten Namen zuweisen, können Sie auch das Wort „Name“ als Schlüssel und den Namen der Ressource als Wert verwenden.

Wenn Sie einen Tag als Ziel für eine Automatisierung angeben, geben Sie auch einen Ziel-Parameter an. Der Ziel-Parameter verwendet die Option TargetParameterName. Durch Auswahl eines Zielparameters legen Sie den Typ der Ressource fest, für die die Automatisierung ausgeführt wird. Der Zielparameter, den Sie mit dem Tag angeben, muss ein im Runbook definierter gültiger Parameter sein. Wenn Sie beispielsweise Tags für Dutzende von EC2-Instances verwenden möchten, wählen Sie den Zielparameter InstanceId. Durch die Auswahl dieses Parameters legen Sie Instances als Ressourcentyp für die Automatisierung fest. Beim Erstellen eines benutzerdefinierten Runbooks müssen Sie den Zieltyp als /AWS::EC2::Instance angeben, um sicherzustellen, dass nur Instances verwendet werden. Andernfalls werden alle Ressourcen mit demselben Tag als Ziel ausgewählt. Wenn Sie auf Instances mit einem Tag abzielen, werden möglicherweise beendete Instances eingeschlossen.

Im folgenden Screenshot werden die AWS-DetachEBSVolume-Runbook verwendet. Der logische Ziel-Parameter ist VolumeId.

Verwenden eines Tags als Ziel für eine Systems-Manager-Automatisierung

Das AWS-DetachEBSVolume-Runbook enthält auch eine spezielle Eigenschaft namens Zieltyp, welche auf /AWS::EC2::Volume gesetzt wird. Dies bedeutet: Wenn das Tag-Schlüssel-Paar Finance:TestEnv unterschiedliche Ressourcentypen zurückgibt (zum Beispiel EC2-Instances, Amazon EBS-Volumes, Amazon EBS-Snapshots), werden nur Amazon EBS-Volumes verwendet.

Wichtig

Bei Zielparameternamen muss die Groß- und Kleinschreibung beachtet werden. Wenn Sie Automatisierungen mit AWS Command Line Interface (AWS CLI) oder AWS Tools for Windows PowerShell ausführen, müssen Sie den Namen des Zielparameters genau wie im Runbook definiert angeben. Andernfalls gibt das System einen InvalidAutomationExecutionParametersException-Fehler aus. Sie können die API-Operation DescribeDocument verwenden, um Informationen zu den in einem bestimmten Runbook verfügbaren Zielparametern anzuzeigen. Im Folgenden sehen Sie einen Beispiel AWS CLI-Befehl, der Informationen über das AWS-DeleteSnapshot-Dokument gibt.

aws ssm describe-document \ --name AWS-DeleteSnapshot

Hier sehen Sie einige AWS CLI-Beispielbefehle, die Ziel-Ressourcen mithilfe von Tags angeben.

Beispiel 1: Zielgerichtete Tags mit einem Schlüssel-Wert-Paar zum Neustarten von Amazon-EC2-Instances

Dieses Beispiel startet alle Amazon-EC2-Instances neu, die mit dem Schlüssel Department und dem Wert HumanResources markiert sind. Der Zielparameter verwendet den Parameter InstanceId aus dem Runbook. Im Beispiel wird ein zusätzlicher Parameter für die Ausführung der Automation mithilfe einer Automation-Servicerolle (auch als Übernahmerolle bezeichnet) verwendet.

aws ssm start-automation-execution \ --document-name AWS-RestartEC2Instance \ --targets Key=tag:Department,Values=HumanResources \ --target-parameter-name InstanceId \ --parameters "AutomationAssumeRole=arn:aws:iam::111122223333:role/AutomationServiceRole"

Beispiel 2: Zielgerichtete Tags mit einem Schlüssel-Wert-Paar zum Löschen von Amazon-EBS-Snapshots

Das folgende Beispiel verwendet das AWS-DeleteSnapshot-Runbook zum Löschen aller Snapshots mit dem Schlüssel Name und dem Wert January2018Backups. Der Ziel-Parameter verwendet den Parameter VolumeId.

aws ssm start-automation-execution \ --document-name AWS-DeleteSnapshot \ --targets Key=tag:Name,Values=January2018Backups \ --target-parameter-name VolumeId

Targeting von AWS Resource Groups

Sie können eine einzelne AWS-Ressourcengruppe als Ziel einer Automatisierung bestimmen. Systems Manager erstellt eine untergeordnete Automatisierung für jedes Objekt in der Ziel-Ressourcengruppe.

Beispiel: Angenommen, eine Ihrer Ressourcengruppen ist PatchedAMIs. Diese Ressourcengruppe enthält eine Liste von 25 Windows Amazon Machine Images (AMIs), die routinemäßig gepatcht werden. Wenn Sie eine Automatisierung ausführen, die das AWS-CreateManagedWindowsInstance-Runbook verwendet, und Sie diese auf diese Resource Group ausrichten, erstellt Systems Manager eine untergeordnete Automatisierung für jede der 25 AMIs. Dies bedeutet, dass die Automatisierung aufgrund der Ausrichtung auf die Resource Group PatchedAMIs 25 Instances aus einer Liste von gepatchten AMIserstellt. Die übergeordnete Automatisierung ist abgeschlossen, wenn alle untergeordneten Automatisierungen abgeschlossen sind oder einen endgültigen Status erreicht haben.

Der folgende AWS CLI-Befehl gilt für das Beispiel mit der Ressourcengruppe PatchAMIs. Der Befehl verwendet den Parameter AmiId für die Option --target-parameter-name. Der Befehl enthält keinen zusätzlichen Parameter, der festlegt, welche Art von Instance aus jeder AMI erstellt werden soll. Das AWS-CreateManagedWindowsInstance-Runbook verwendet standardmäßig den Instance-Typ t2.medium, so dass dieser Befehl 25 t2.medium Amazon-EC2-Instances für Windows Server erstellt.

aws ssm start-automation-execution \ --document-name AWS-CreateManagedWindowsInstance \ --targets Key=ResourceGroup,Values=PatchedAMIs \ --target-parameter-name AmiId

Das folgende Konsolenbeispiel verwendet eine Ressourcengruppe mit dem Namen t2-micro-instances.

Ausrichten einer AWS-Ressourcengruppe mit einer Systems Manager Automatisierung

Ausrichtung auf Parameterwerte

Sie können auch einen Parameterwert zur Ausrichtung verwenden. Geben Sie ParameterValues als Schlüssel und dann den spezifischen Ressourcenwert für die Ausführung der Automatisierung ein. Wenn Sie mehrere Werte angeben, führt Systems Manager eine untergeordnete Automatisierung für jeden angegebenen Wert aus.

Nehmen Sie beispielsweise an, dass das Runbook einen InstanceID-Parameter enthält. Wenn Sie die Werte des InstanceID-Parameters beim Ausführen von Automation verwenden, führt Systems Manager eine untergeordnete Automatisierung für jeden angegebenen Instance-ID-Wert aus. Die übergeordnete Automatisierung ist abgeschlossen, wenn Automatisierung die Ausführung jeder angegebenen Instance abgeschlossen hat oder wenn die Automatisierung fehlschlägt. Sie können maximal 50 Parameterwerte für die Ausrichtung verwenden.

Im folgenden Beispiel wird das AWS-CreateImage-Runbook verwendet. Der angegebene Ziel-Parametername ist InstanceId. Der Schlüssel verwendetParameterValues. Die Werte sind zwei Amazon-EC2-Instance-IDs. Dieser Befehl erstellt einen Automatisierung für jede Instance, wodurch eine AMI von jeder Instance erzeugt wird.

aws ssm start-automation-execution --document-name AWS-CreateImage \ --target-parameter-name InstanceId \ --targets Key=ParameterValues,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE
Anmerkung

AutomationAssumeRole ist kein gültiger Parameter. Wählen Sie dieses Element nicht aus, wenn Sie die Automatisierung ausführen, die auf einen Parameterwert abzielt.

Ausrichtung auf Parameterwert-Maps

Die Option TargetMaps erweitert die Möglichkeiten zur Ausrichtung auf ParameterValues. Sie können ein Array von Parameterwerten mithilfe von TargetMaps auf der Befehlszeile eingeben. Sie können maximal 50 Parameterwerte in der Befehlszeile angeben. Wenn Sie Befehle ausführen möchten, die mehr als 50 Parameterwerte angeben, können Sie die Werte in einer JSON-Datei eingeben. Sie können dann die Datei von der Befehlszeile aus aufrufen.

Anmerkung

Die TargetMaps-Option wird in der Konsole nicht unterstützt.

Verwenden Sie das folgende Format, um mehrere Parameterwerte angeben, indem Sie die Option TargetMaps in einem Befehl verwenden. Ersetzen Sie jeden Beispiel Platzhalter für Ressourcen mit Ihren eigenen Informationen.

aws ssm start-automation-execution \ --document-name runbook name \ --target-maps “parameter=value, parameter 2=value, parameter 3=value” “parameter 4=value, parameter 5=value, parameter 6=value

Wenn Sie mehr als 50 Parameterwerte für die Option TargetMaps angeben möchten, geben Sie die Werte mit dem folgenden JSON-Format an. Die Verwendung einer JSON-Datei verbessert auch die Lesbarkeit bei mehreren Parameterwerten.

[ {“parameter”: "value", “parameter 2”: "value", “parameter 3”: "value"}, {“parameter 4”: "value", “parameter 5”: "value", "parameter 6": "value"} ]

Speichen Sie die Datei mit der Dateierweiterung .json. Sie können die Datei mit dem folgenden Befehl ausführen. Ersetzen Sie jeden Beispiel Platzhalter für Ressourcen mit Ihren eigenen Informationen.

aws ssm start-automation-execution \ --document-name runbook name \ –-parameters input parameters \ --target-maps path to file/file name.json

Sie können die auch aus einem Amazon Simple Storage Service (Amazon S3)-Bucket herunterladen, sofern Sie über die Berechtigung zum lesen von Daten aus dem Bucket verfügen. Verwenden Sie das folgende Befehlsformat. Ersetzen Sie jeden Beispiel Platzhalter für Ressourcen mit Ihren eigenen Informationen.

aws ssm start-automation-execution \ --document-name runbook name \ --target-maps http://amzn-s3-demo-bucket.s3.amazonaws.com/file_name.json

Hier sehen Sie ein Beispiel für ein Szenario, das Ihnen dabei hilft, die Option TargetMaps zu verstehen. In diesem Szenario möchte ein Benutzer Amazon EC2-Instances verschiedener Typen aus verschiedenen AMIs erstellen. Für diese Aufgabe erstellt der Benutzer erstellt ein Runbook mit dem Namen AMI_Testing. Dieses Runbook definiert zwei Eingabeparameter: instanceType und imageId.

{ "description": "AMI Testing", "schemaVersion": "0.3", "assumeRole": "{{assumeRole}}", "parameters": { "assumeRole": { "type": "String", "description": "Role under which to run the automation", "default": "" }, "instanceType": { "type": "String", "description": "Type of EC2 Instance to launch for this test" }, "imageId": { "type": "String", "description": "Source AMI id from which to run instance" } }, "mainSteps": [ { "name": "runInstances", "action": "aws:runInstances", "maxAttempts": 1, "onFailure": "Abort", "inputs": { "ImageId": "{{imageId}}", "InstanceType": "{{instanceType}}", "MinInstanceCount": 1, "MaxInstanceCount": 1 } } ], "outputs": [ "runInstances.InstanceIds" ] }

Dann gibt der Benutzer die folgenden Ziel-Parameterwerte in einer Datei mit dem Namen AMI_instance_types.json an.

[ { "instanceType" : ["t2.micro"], "imageId" : ["ami-b70554c8"] }, { "instanceType" : ["t2.small"], "imageId" : ["ami-b70554c8"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] } ]

Mit dem folgenden Befehl kann der Benutzer die Automatisierung ausführen und die fünf EC2-Instances erstellen, die in AMI_instance_types.json definiert sind.

aws ssm start-automation-execution \ --document-name AMI_Testing \ --target-parameter-name imageId \ --target-maps file:///home/TestUser/workspace/runinstances/AMI_instance_types.json

Ausrichtung auf alle Amazon-EC2-Instances

Sie können eine Automatisierung für alle Amazon-EC2-Instances im aktuellen AWS-Konto und AWS-Region ausführen, indem Sie Alle Instances in der Liste Ziele auswählen. Wenn Sie zum Beispiel alle Amazon-EC2-Instances Ihres AWS-Konto und der aktuellen AWS-Region neu starten möchten, können Sie das AWS-RestartEC2Instance-Runbook und dann Alle Instances in der Liste Ziele auswählen.

Ausrichtung auf alle Amazon-EC2-Instances für ein Runbook

Nachdem Sie Alle Instances gewählt haben, versieht Systems Manager das Instance-Feld einem Sternchen (*) und macht das Feld für Änderungen nicht verfügbar (das Feld ist ausgegraut). Systems Manager macht auch das InstanceId-Feld im Eingabeparameter-Feld für Änderungen nicht verfügbar. Diese Felder für Änderungen nicht verfügbar zu machen, ist ein erwartetes Verhalten, wenn Sie sich dafür entscheiden, alle Instances abzudecken.