Zuordnen von Zielen für eine Automatisierung - AWS Systems Manager

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, AWS Systems Manager wird für jedes Ziel eine untergeordnete Automatisierung erstellt. 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 entweder mit AWS Command Line Interface (AWS CLI) oder ausführen AWS Tools for Windows PowerShell, müssen Sie den Namen des Zielparameters genau so eingeben, wie er im Runbook definiert ist. Andernfalls gibt das System einen InvalidAutomationExecutionParametersException-Fehler aus. Sie können den DescribeDocumentAPI-Vorgang verwenden, um Informationen zu den verfügbaren Zielparametern in einem bestimmten Runbook abzurufen. Im Folgenden finden Sie einen AWS CLI Beispielbefehl, der Informationen über das AWS-DeleteSnapshot Dokument bereitstellt.

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

Im Folgenden finden Sie einige AWS CLI Beispielbefehle, die mithilfe eines Tags auf Ressourcen abzielen.

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

In diesem Beispiel werden alle Amazon EC2 EC2-Instances neu gestartet, die mit dem Schlüssel Department und dem Wert gekennzeichnet sind. HumanResources Der Zielparameter verwendet den InstanceIdParameter 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 Zielparameter verwendet den VolumeIdParameter.

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

Targeting AWS Resource Groups

Sie können eine einzelne AWS Ressourcengruppe als Ziel einer Automatisierung angeben. 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 bezieht sich auf das Beispiel PatchAMIs Resource Group. Der Befehl verwendet den AmiIdParameter für die --target-parameter-name Option. 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.

Mit einer Systems Manager Manager-Automatisierung auf eine AWS Ressourcengruppe abzielen

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 Zielparametername lautet InstanceId. Der Schlüssel verwendet ParameterValues. 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://DOC-EXAMPLE-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 auf allen Amazon EC2 EC2-Instances in der aktuellen AWS-Konto Version ausführen, AWS-Region indem Sie in der Zielliste Alle Instances auswählen. Wenn Sie beispielsweise alle Amazon EC2 EC2-Instances, Ihre AWS-Konto und die aktuelle AWS-Region, neu starten möchten, können Sie das AWS-RestartEC2Instance Runbook und dann Alle Instances aus 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 außerdem das InstanceIdFeld im Feld Eingabeparameter 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.