aws:executeScript – 執行指令碼 - AWS Systems Manager

aws:executeScript – 執行指令碼

執行使用指定的執行時間和處理程序提供的 Python 或 PowerShell 指令碼。(對於 PowerShell,不需要處理常式。)

aws:executeScript 動作包含下列預先安裝的 PowerShell Core 模組。

  • Microsoft.PowerShell.Host

  • Microsoft.PowerShell.Management

  • Microsoft.PowerShell.Security

  • Microsoft.PowerShell.Utility

  • PackageManagement

  • PowerShellGet

若要使用未預先安裝的 PowerShell Core 模組,您的指令碼必須使用 -Force 旗標安裝模組,如下列命令所示。

Install-Module ModuleName -Force

若要在指令碼中使用 PowerShell Core Cmdlet,建議您使用 AWS.Tools 模組,如下列命令所示。

重要

不支援安裝 AWSPowerShell.NetCore 模組。

  • Amazon Simple Storage Service (Amazon S3) cmdlet。

    Install-Module AWS.Tools.S3 -Force Get-S3Bucket -BucketName bucketname
  • Amazon EC2 cmdlet。

    Install-Module AWS.Tools.EC2 -Force Get-EC2InstanceStatus -InstanceId instanceId
  • 通用或與服務無關的 AWS Tools for Windows PowerShell Cmdlet。

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

如果指令碼除了使用 PowerShell Core Cmdlet 之外,還會初始化新物件,您也必須匯入模組,如下列命令所示。

Install-Module AWS.Tools.EC2 -Force Import-Module AWS.Tools.EC2 $tag = New-Object Amazon.EC2.Model.Tag $tag.Key = "myTag" $tag.Value = "myTagValue" New-EC2Tag -Resource i-12345678 -Tag $tag

如需在 Runbook 內容中安裝和匯入 AWS.Tools 模組,以及使用 PowerShell Core Cmdlet 的範例,請參閱 演練:使用文件建置器建立自訂 Runbook

注意

每個 aws:executeScript 動作最久可執行 600 秒 (10 分鐘)。您可以透過指定 aws:executeScript 步驟的 timeoutSeconds 參數來限制逾時。

Input

提供執行所提供的 Python 3.6、Python 3.7、Python 3.8、PowerShell Core 6.0 或 PowerShell 7.0 指令碼所需的執行時間和處理常式。

重要

JSON Runbook 不支援指令碼輸入參數。JSON Runbook 必須使用附件輸入參數提供指令碼內容。

YAML
action: "aws:executeScript" inputs: Runtime: "python3.6" Handler: "script_handler" InputPayload: "parameter1": "parameter_value1" "parameter2": "parameter_value2" Script: > def script_handler(events, context): (script commands) Attachment: "zip-file-name-1.zip"
JSON
{ "action": "aws:executeScript", "inputs": { "Runtime": "python3.6", "Handler": "script_handler", "InputPayload": { "parameter1": "parameter_value1", "parameter2": "parameter_value2" }, "Attachment": "zip-file-name-1.zip" } }
執行時間

用於執行所提供指令碼的執行時間語言。aws:executeScript 支援 Python 3.6 (python3.6)、Python 3.7 (python3.7)、Python 3.8 (python3.8)、PowerShell Core 6.0 (dotnetcore2.1) 和 PowerShell 7.0 (dotnetcore3.1) 指令碼。

支援的值:python3.6 |python3.7 | python3.8 | PowerShell Core 6.0 | PowerShell 7.0

類型:字串

必要:是

處理常式

執行指令碼的輸入,通常是一個函數名稱。您必須確保處理常式中定義的函數有兩個參數,eventscontext

注意

如果執行時間是 PowerShell 執行時間,則不允許此欄位。

類型:字串

必要:是 (Python) | 不允許 (PowerShell)

InputPayload

將傳遞給處理程序的第一個參數的 JSON 或 YAML 物件。這可以用來將輸入資料傳入至指令碼。

類型:字串

必要:否

指令碼

您想要在自動化期間執行的內嵌指令碼。(不支援 JSON Runbook。)

類型:字串

必要:No (Python) | Yes (PowerShell)

配件

動作可呼叫的獨立指令碼檔案或 .zip 檔案的名稱。若要為 Python 呼叫檔案,請在 Handler 中使用 filename.method_name 格式。對於 PowerShell,請使用內嵌指令碼呼叫附件。不支援 Gzip。

當在附件中包含 Python 庫時,建議在每個模組目錄中新增空的 __init__.py 檔案。這允許您從指令碼內容中的附件庫匯入模組。例如︰from library import module

類型:字串

必要:否

輸出

承載

由函數傳回之物件的 JSON 表示法。最多會傳回 100 KB。