aws:executeScript - Führen Sie ein Skript aus - 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.

aws:executeScript - Führen Sie ein Skript aus

Führt das bereitgestellte Python- oder PowerShell Skript mit der angegebenen Laufzeit und dem angegebenen Handler aus. Jede aws:executeScript-Aktion kann bis zu einer maximalen Dauer von 600 Sekunden (10 Minuten) laufen. Sie können die Zeitüberschreitung über den Parameter timeoutSeconds für einen aws:executeScript-Schritt limitieren.

Verwenden Sie Rückgabe-Anweisungen in Ihrer Funktion, um Ihrer Ausgabenutzlast Ausgaben hinzuzufügen. Für Beispiele zum Definieren von Ausgaben für Ihre aws:executeScript-Aktion, siehe Beispiel 2: Skriptbasiertes Runbook. Sie können auch die Ausgabe von aws:executeScript Aktionen in Ihren Runbooks an die von Ihnen angegebene Amazon CloudWatch Logs-Protokollgruppe senden. Weitere Informationen finden Sie unter Ausgabe von Automatisierungsaktionen mit CloudWatch Protokollen protokollieren.

Wenn Sie die Ausgabe von aws:executeScript Aktionen an CloudWatch Logs senden möchten oder wenn die Skripts, die Sie für aws:executeScript Aktionen angeben, AWS API-Operationen aufrufen, ist für die Ausführung des Runbooks immer eine AWS Identity and Access Management (IAM-) Service-Rolle (oder Übernahme einer Rolle) erforderlich.

Die aws:executeScript Aktion enthält die folgenden vorinstallierten PowerShell Core-Module:

  • Microsoft. PowerShell. Gastgeber

  • Microsoft. PowerShell. Verwaltung

  • Microsoft. PowerShell. Sicherheit

  • Microsoft. PowerShell. Hilfsprogramm

  • PackageManagement

  • PowerShellGet

Um PowerShell Core-Module zu verwenden, die nicht vorinstalliert sind, muss Ihr Skript das Modul mit der -Force Markierung installieren, wie im folgenden Befehl gezeigt. Das AWSPowerShell.NetCore-Modul wird nicht unterstützt. ModuleNameErsetzen Sie es durch das Modul, das Sie installieren möchten.

Install-Module ModuleName -Force

Um PowerShell Core-Cmdlets in Ihrem Skript zu verwenden, empfehlen wir die Verwendung der AWS.Tools Module, wie in den folgenden Befehlen gezeigt. Ersetzen Sie jeden example resource placeholder durch Ihre Informationen.

  • Amazon S3 Cmdlets.

    Install-Module AWS.Tools.S3 -Force Get-S3Bucket -BucketName amzn-s3-demo-bucket
  • EC2 Amazon-Cmdlets.

    Install-Module AWS.Tools.EC2 -Force Get-EC2InstanceStatus -InstanceId instance-id
  • Allgemeine oder dienstunabhängige AWS Tools for Windows PowerShell Cmdlets.

    Install-Module AWS.Tools.Common -Force Get-AWSRegion

Wenn Ihr Skript zusätzlich zur Verwendung von PowerShell Core-Cmdlets neue Objekte initialisiert, müssen Sie das Modul auch importieren, wie im folgenden Befehl gezeigt.

Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $tag = New-Object Amazon.EC2.Model.Tag $tag.Key = "Tag" $tag.Value = "TagValue" New-EC2Tag -Resource i-02573cafcfEXAMPLE -Tag $tag

Beispiele für die Installation und den Import von AWS.Tools Modulen und die Verwendung von PowerShell Core-Cmdlets in Runbooks finden Sie unter. Visuelle Designerfahrung für Automation-Runbooks

Eingabe

Geben Sie die zum Ausführen Ihres Skripts erforderlichen Informationen an. Ersetzen Sie jeden example resource placeholder durch Ihre Informationen.

Anmerkung

Der Anhang für ein Python-Skript kann eine .py-Datei oder eine .zip-Datei sein, die das Skript enthält. PowerShell Skripten müssen in ZIP-Dateien gespeichert werden.

YAML
action: "aws:executeScript" inputs: Runtime: runtime Handler: "functionName" InputPayload: scriptInput: '{{parameterValue}}' Script: |- def functionName(events, context): ... Attachment: "scriptAttachment.zip"
JSON
{ "action": "aws:executeScript", "inputs": { "Runtime": "runtime", "Handler": "functionName", "InputPayload": { "scriptInput": "{{parameterValue}}" }, "Attachment": "scriptAttachment.zip" } }
Laufzeit

Die Laufzeitsprache, die für die Ausführung des bereitgestellten Skripts verwendet werden soll. aws:executeScriptunterstützt die Skripte Python 3.7 (Python3.7), Python 3.8 (Python3.8), Python 3.9 (Python3.9) Python 3.10 (Python3.10), Python 3.11 (Python3.11) Core 6.0 (dotnetcore2.1) und 7.0 (dotnetcore3.1). PowerShell PowerShell

Unterstützte Werte: python3.7 | python3.8 | python3.9 | python3.10 | python3.11 | PowerShell Core 6.0 | PowerShell 7.0

Typ: Zeichenfolge

Erforderlich: Ja

Handler

Der Name Ihrer Funktion. Sie müssen sicherstellen, dass die im Handler definierte Funktion über zwei Parameter verfügt: events und context. PowerShell Die Laufzeit unterstützt diesen Parameter nicht.

Typ: Zeichenfolge

Erforderlich: Ja (Python) | Nicht unterstützt (PowerShell)

InputPayload

Ein JSON- oder YAML-Objekt, das an den ersten Parameter des Handlers übergeben wird. Dies kann verwendet werden, um Eingabedaten an das Skript zu übergeben.

Typ: Zeichenfolge

Erforderlich: Nein

Python
description: Tag an instance schemaVersion: '0.3' assumeRole: '{{AutomationAssumeRole}}' parameters: AutomationAssumeRole: type: String description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.' InstanceId: type: String description: (Required) The ID of the EC2 instance you want to tag. mainSteps: - name: tagInstance action: 'aws:executeScript' inputs: Runtime: "python3.8" Handler: tagInstance InputPayload: instanceId: '{{InstanceId}}' Script: |- def tagInstance(events,context): import boto3 #Initialize client ec2 = boto3.client('ec2') instanceId = events['instanceId'] tag = { "Key": "Env", "Value": "Example" } ec2.create_tags( Resources=[instanceId], Tags=[tag] )
PowerShell
description: Tag an instance schemaVersion: '0.3' assumeRole: '{{AutomationAssumeRole}}' parameters: AutomationAssumeRole: type: String description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.' InstanceId: type: String description: (Required) The ID of the EC2 instance you want to tag. mainSteps: - name: tagInstance action: 'aws:executeScript' inputs: Runtime: PowerShell 7.0 InputPayload: instanceId: '{{InstanceId}}' Script: |- Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $input = $env:InputPayload | ConvertFrom-Json $tag = New-Object Amazon.EC2.Model.Tag $tag.Key = "Env" $tag.Value = "Example" New-EC2Tag -Resource $input.instanceId -Tag $tag
Script

Ein eingebettetes Skript, das während der Automatisierung ausgeführt werden soll.

Typ: Zeichenfolge

Erforderlich: Nein (Python) | Ja (PowerShell)

Attachment

Der Name einer eigenständigen Skriptdatei oder einer ZIP-Datei, die von der Aktion aufgerufen werden kann. Geben Sie denselben Wert wie den Name der Dokument-Anhangsdatei an, den Sie im Anforderungsparameter Attachments angeben. Weitere Informationen finden Sie unter Anhänge in der API-Referenz für AWS Systems Manager . Wenn Sie ein Skript mithilfe einer Anlage bereitstellen, müssen Sie auch einen files-Abschnitt in den Elementen der obersten Ebene Ihres Runbooks definieren. Weitere Informationen finden Sie unter Schema der Version 0.3.

Um eine Datei für Python aufzurufen, verwenden Sie das filename.method_name-Format in Handler.

Anmerkung

Der Anhang für ein Python-Skript kann eine .py-Datei oder eine .zip-Datei sein, die das Skript enthält. PowerShell Skripten müssen in ZIP-Dateien gespeichert werden.

Wenn Sie Python-Bibliotheken in Ihren Anhang einfügen, empfehlen wir, eine leere __init__.py-Datei in jedem Modulverzeichnis hinzuzufügen. Auf diese Weise können Sie die Module aus der Bibliothek in Ihrem Anhang innerhalb Ihres Skriptinhalts importieren. Zum Beispiel: from library import module

Typ: Zeichenfolge

Erforderlich: Nein

Output
Nutzlast

Die JSON-Darstellung des Objekts, das von Ihrer Funktion zurückgegeben wird. Bis zu 100 KB werden zurückgegeben. Wenn Sie eine Liste ausgeben, werden maximal 100 Elemente zurückgegeben.