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 Dutzende von Instances manuell IDs in der Konsole auszuwählen oder sie in einen Befehl einzugeben, auf Instances abzielen, indem Sie Amazon Elastic Compute Cloud (AmazonEC2) -Tags mit dem Targets Parameter angeben.

Wenn Sie eine Automatisierung ausführen, die ein Ziel verwendet, AWS Systems Manager wird für jedes Ziel eine untergeordnete Automatisierung erstellt. Wenn Sie beispielsweise Amazon Elastic Block Store (AmazonEBS) -Volumes als Ziel angeben, indem Sie Tags angeben und diese Tags zu 100 EBS Amazon-Volumes aufgelöst werden, 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, darunter Amazon Elastic Compute Cloud (AmazonEC2) und Amazon Relational Database Service (AmazonRDS) -Instances, Amazon Elastic Block Store (AmazonEBS) -Volumes und -Snapshots, Resource Groups und Amazon Simple Storage Service (Amazon S3) -Buckets, um nur einige zu nennen. Sie können Ihre AWS Ressourcen schnell automatisieren, indem Sie auf ein Tag abzielen. 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 Dutzende von EC2 Instances mithilfe von Tags als Ziel verwenden möchten, wählen Sie den InstanceId Zielparameter aus. 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. Das bedeutet, dass, wenn das Tag-Schlüsselpaar verschiedene Arten von Ressourcen Finance:TestEnv zurückgibt (z. B. EC2 Instances, EBS Amazon-Volumes, EBS Amazon-Snapshots), nur EBS Amazon-Volumes verwendet werden.

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 DescribeDocumentAPIVorgang verwenden, um Informationen zu den verfügbaren Zielparametern in einem bestimmten Runbook abzurufen. Im Folgenden sehen Sie einen Beispiel AWS CLI -Befehl, der Informationen über das AWS-DeleteSnapshot-Dokument gibt.

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

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

Beispiel 1: Targeting auf ein Tag mithilfe eines Schlüssel-Wert-Paares zum Neustarten von Amazon-Instances EC2

In diesem Beispiel werden alle EC2 Amazon-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: Targeting auf ein Tag mithilfe eines Schlüssel-Wert-Paares zum Löschen von Amazon-Snapshots EBS

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 Parameter. VolumeId

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.

Nehmen wir zum Beispiel an, dass eine Ihrer Resource Groups den Namen P trägtatchedAMIs. 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. Das bedeutet, dass die Automatisierung, indem sie auf die atchedAMIs P-Ressourcengruppe abzielt, 25 Instanzen aus einer Liste der gepatchten AMIs Instanzen erstellt. 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 P atchAMIs 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, sodass mit diesem Befehl 25 t2.medium Amazon-Instances erstellt werden. EC2 Windows Server

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 Name des Zielparameters lautet InstanceId. Der Schlüssel verwendet ParameterValues. Die Werte sind zwei EC2 Amazon-InstancesIDs. 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 eine 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 example resource placeholder 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 TargetMaps Option eingeben möchten, geben Sie die Werte in einer Datei im folgenden JSON Format an. Die Verwendung einer JSON Datei verbessert auch die Lesbarkeit bei der Angabe mehrerer Parameterwerte.

[ {“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. Ersetze jeden example resource placeholder 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. Ersetze jedes example resource placeholder 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 EC2 Amazon-Instances verschiedener Typen aus verschiedenen Quellen erstellenAMIs. Um diese Aufgabe auszuführen, erstellt der Benutzer 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"] } ]

Der Benutzer kann die Automatisierung ausführen und die fünf in definierten EC2 Instanzen erstellen, AMI_instance_types.json indem er den folgenden Befehl ausführt.

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

Alle EC2 Amazon-Instances im Visier

Sie können eine Automatisierung auf allen EC2 Amazon-Instances in der aktuellen AWS-Konto Version ausführen, AWS-Region indem Sie in der Zielliste Alle Instances auswählen. Wenn Sie beispielsweise alle EC2 Amazon-Instances, Ihre AWS-Konto und die aktuelle AWS-Region, neu starten möchten, können Sie das AWS-RestartEC2Instance Runbook auswählen und dann Alle Instances aus der Liste Ziele auswählen.

Alle EC2 Amazon-Instances für ein Runbook ins Visier nehmen

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.