資料元素和參數 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

資料元素和參數

本主題說明SSM文件中使用的資料元素。用於建立文件的結構描述版本會定義文件接受的語法和資料元素。建議命令文件使用結構描述版本 2.2 或更新版本。Automation Runbook 使用結構描述版本 0.3。此外,Automation Runbook 支援使用 Markdown (一種標示語言),可讓您新增維基樣式的描述至文件內,以及在文件內新增個別步驟。如需關於使用 Markdown 的詳細資訊,請參閱《AWS Management Console 入門指南》中的在主控台中使用 Markdown

下節說明您可以包含在SSM文件中的資料元素。

頂層資料元素

schemaVersion

要使用的結構描述版本。

類型:版本

必要:是

description

您提供來描述文件用途的資訊。您也可以使用此欄位來指定參數是否需要執行文件的值,或者提供參數的值是否為選用項目。您可以在本主題的範例中看到必要參數和選用參數。

類型:字串

必要:否

parameters

一種結構,定義文件接受的參數。

對於您經常使用的參數,我們建議您將這些參數儲存在中Parameter Store,功能 AWS Systems Manager。然後,您可以在文件中定義參考 Parameter Store 參數作為預設值的參數。若要參考 Parameter Store 參數,請使用下列語法。

{{ssm:parameter-name}}

您可以使用參考 Parameter Store 參數的參數,方式與任何其他文件參數相同。在下列範例中,commands 參數的預設值是 Parameter Store 參數 myShellCommands。透過將 commands 參數指定為 runCommand 字串,文件會執行在 myShellCommands 參數中儲存的命令。

YAML
--- schemaVersion: '2.2' description: runShellScript with command strings stored as Parameter Store parameter parameters: commands: type: StringList description: "(Required) The commands to run on the instance." default: ["{{ ssm:myShellCommands }}"] mainSteps: - action: aws:runShellScript name: runShellScriptDefaultParams inputs: runCommand: - "{{ commands }}"
JSON
{ "schemaVersion": "2.2", "description": "runShellScript with command strings stored as Parameter Store parameter", "parameters": { "commands": { "type": "StringList", "description": "(Required) The commands to run on the instance.", "default": ["{{ ssm:myShellCommands }}"] } }, "mainSteps": [ { "action": "aws:runShellScript", "name": "runShellScriptDefaultParams", "inputs": { "runCommand": [ "{{ commands }}" ] } } ] }
注意

您在文件的 parameters 部分可以參考 StringStringList Parameter Store 參數。您無法參考 SecureString Parameter Store 參數。

如需有關 Parameter Store 的詳細資訊,請參閱「AWS Systems Manager Parameter Store」。

類型:結構

parameters 結結構接受下列的欄位和數值:

  • type:(必要) 允許的值包括:StringStringListIntegerBooleanMapListStringMap。若要查看每個類型的範例,在下一個部分請參閱 SSM 文件參數 type 範例

    注意

    指令類型文件僅支援 StringStringList 參數類型。

  • description(選用) 參數說明。

  • default:(選擇性) 在 Parameter Store 中預設的參數值或參考值。

  • allowedValues:(選擇性) 參數允許的值陣列。定義參數的允許值會驗證使用者輸入。如果使用者輸入不允許的值,則無法開始執行。

    YAML
    DirectoryType: type: String description: "(Required) The directory type to launch." default: AwsMad allowedValues: - AdConnector - AwsMad - SimpleAd
    JSON
    "DirectoryType": { "type": "String", "description": "(Required) The directory type to launch.", "default": "AwsMad", "allowedValues": [ "AdConnector", "AwsMad", "SimpleAd" ] }
  • allowedPattern:(選擇性) 規則運算式,可驗證使用者輸入是否符合參數定義的模式。如果使用者輸入不符合允許的模式,則無法開始執行。

    注意

    Systems Manager 執行兩次 allowedPattern 驗證。當您使用文檔時,第一次驗證是使用 Java 正則表達式庫在API級別執行的。在處理文件之前,藉由使用 GO Regexp 程式庫,在 SSM Agent 上執行第二次驗證。

    YAML
    InstanceId: type: String description: "(Required) The instance ID to target." allowedPattern: "^i-[a-z0-9]{8,17}$" default: ''
    JSON
    "InstanceId": { "type": "String", "description": "(Required) The instance ID to target.", "allowedPattern": "^i-[a-z0-9]{8,17}$", "default": "" }
  • displayType: (選擇性) 用於textarea在中顯示 a textfield 或 a AWS Management Console。 textfield是單行文字方塊。 textarea是多行文字區域。

  • minItems:(選擇性) 允許項目數量的最小值。

  • maxItems:(選擇性) 允許項目數量的最大值。

  • minChars:(選擇性) 允許參數字元數量的最小值。

  • maxChars:(選擇性) 允許參數字元數量的最大值。

必要:否

variables

(僅限結構描述版本 0.3) 您可以在 Automation 執行手冊中的整個步驟中參考或更新的值。變數類似於參數,但有一個非常重要的差異。參數值在執行手冊的內容中是靜態的,但變數的值可以在執行手冊的內容中進行變更。更新變數的值時,資料類型必須與定義的資料類型相符。如需有關在自動化操作中更新變數值的資訊,請參閱 aws:updateVariable - 更新執行手冊變數的值

類型:布爾 | 整數 MapList | 字符串 | StringList | StringMap

必要:否

YAML
variables: payload: type: StringMap default: "{}"
JSON
{ "variables": [ "payload": { "type": "StringMap", "default": "{}" } ] }
runtimeConfig

(結構描述 1.2 版) 一個或多個 Systems Manager 外掛程式套用的執行個體組態。不能保證外掛程式按順序執行。

類型:字典 < 字串,> PluginConfiguration

必要:否

mainSteps

(僅限結構描述版本 0.3、2.0 和 2.2) 可以包含多個步驟 (外掛程式) 的物件。外掛程式在步驟中定義。步驟會按文件中列出的順序執行。

類型:字典 < 字串,> PluginConfiguration

必要:是

outputs

(僅限結構描述版本 0.3) 執行此文件所產生的資料,可用於其他程序。例如,如果您的文件建立了新文件AMI,您可以指定 "CreateImage。 ImageId"作為輸出值,然後使用此輸出在後續的自動化執行中建立新的執行個體。如需輸出的詳細資訊,請參閱 使用動作輸出作為輸入

類型:字典 < 字串,> OutputConfiguration

必要:否

files

(僅限結構描述 0.3) 連接至文件並在自動化執行期間執行的指令碼檔案 (及其檢查總和)。僅適用於包含 aws:executeScript 動作,以及已在一或多個步驟中指定附件的文件。

對於腳本運行時支持,自動化手冊支持腳本為 Python 3.7,Python 3.8, PowerShell 核心 6.0 和 PowerShell 7.0。如需有關在 Automation Runbook 中包含指令碼的詳細資訊,請參閱 在執行手冊中使用指令碼使用文件建置器建立執行手冊

建立包含附件的自動化工作流程簿時,您還必須使用--attachments選項 (用於 AWS CLI) 或 Attachments (用於API和SDK) 來指定附件檔案。您可以為本機檔案和存放在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的檔案指定檔案位置。如需詳細資訊,請參閱 AWS Systems Manager API參考檔中的附件

YAML
--- files: launch.py: checksums: sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
JSON
"files": { "launch.py": { "checksums": { "sha256": "18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE" } } }

類型:字典 < 字串,> FilesConfiguration

必要:否

SSM 文件參數 type 範例

SSM文件中的參數類型是靜態的。這意味著參數類型在定義後便無法變更。將參數與SSM文件外掛程式搭配使用時,無法在外掛程式的輸入中動態變更參數類型。例如,您無法在 aws:runShellScript 外掛程式的 runCommand 輸入中參考 Integer 參數,因為此輸入接受字串或字串清單。若要對外掛程式輸入使用參數,參數類型必須與接受的類型相符。例如,您必須為 aws:updateSsmAgent 外掛程式的 allowDowngrade 輸入指定 Boolean 類型參數。如果您的參數類型與外掛程式的輸入類型不相符,則SSM文件無法驗證,且系統不會建立文件。當在其他外掛程式或 AWS Systems Manager 自動化動作的輸入內下游使用參數時,也會發生這種情況。例如,您無法參考 aws:runDocument 外掛程式 documentParameters 輸入中的 StringList 參數。即使下游SSM文件參數類型是參數且符合您參考的StringList參數,documentParameters輸入也會接受字串對映。

將參數與自動化動作搭配使用時,在大多數情況下建立SSM文件時不會驗證參數類型。只有當您使用aws:runCommand動作時,才會在建立SSM文件時驗證參數類型。在所有其他情況下,則會在執行動作之前驗證動作的輸入之時,在自動化執行期間進行參數驗證。例如,如果您的輸入參數是 a,String而您將其參考為aws:runInstances動作MaxInstanceCount輸入的值,則會建立SSM文件。不過,執行文件時,自動化會在驗證 aws:runInstances 動作時會失敗,因為 MaxInstanceCount 輸入需要 Integer.

以下是每個參數 type 的範例。

字串

一連串零或多個 Unicode 字元以雙引號框住。例如,"i-1234567890abcdef0"。使用反斜線逸出。

YAML
--- InstanceId: type: String description: "(Optional) The target EC2 instance ID."
JSON
"InstanceId":{ "type":"String", "description":"(Optional) The target EC2 instance ID." }
StringList

由逗號分隔的字串項目清單。例如,["cd 〜", "pwd"]。

YAML
--- commands: type: StringList description: "(Required) Specify a shell script or a command to run." default: "" minItems: 1 displayType: textarea
JSON
"commands":{ "type":"StringList", "description":"(Required) Specify a shell script or a command to run.", "minItems":1, "displayType":"textarea" }
Boolean

僅接受 truefalse。不接受「true」或 0。

YAML
--- canRun: type: Boolean description: '' default: true
JSON
"canRun": { "type": "Boolean", "description": "", "default": true }
Integer

整數號碼。不接受十進位小數,例如 3.14159 或以雙引號括住的號碼,例如 "3"。

YAML
--- timeout: type: Integer description: The type of action to perform. default: 100
JSON
"timeout": { "type": "Integer", "description": "The type of action to perform.", "default": 100 }
StringMap

金鑰與值的映射。金鑰和值必須是字串。例如,{"Env": "Prod"}。

YAML
--- notificationConfig: type: StringMap description: The configuration for events to be notified about default: NotificationType: 'Command' NotificationEvents: - 'Failed' NotificationArn: "$dependency.topicArn" maxChars: 150
JSON
"notificationConfig" : { "type" : "StringMap", "description" : "The configuration for events to be notified about", "default" : { "NotificationType" : "Command", "NotificationEvents" : ["Failed"], "NotificationArn" : "$dependency.topicArn" }, "maxChars" : 150 }
MapList

StringMap 物件清單。

YAML
blockDeviceMappings: type: MapList description: The mappings for the create image inputs default: - DeviceName: "/dev/sda1" Ebs: VolumeSize: "50" - DeviceName: "/dev/sdm" Ebs: VolumeSize: "100" maxItems: 2
JSON
"blockDeviceMappings":{ "type":"MapList", "description":"The mappings for the create image inputs", "default":[ { "DeviceName":"/dev/sda1", "Ebs":{ "VolumeSize":"50" } }, { "DeviceName":"/dev/sdm", "Ebs":{ "VolumeSize":"100" } } ], "maxItems":2 }

檢視SSM命令文件內容

若要預覽 AWS Systems Manager (SSM) Command 文件的必要參數和選用參數,除了文件執行的動作外,您還可以在 Systems Manager 主控台中檢視文件的內容。

檢視SSM命令文件內容的步驟
  1. 在開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Documents (文件)

  3. 在搜尋方塊中,選取 Document type (文件類型),然後選取 Command (命令)。

  4. 選擇文件名稱,然後選擇 Content (內容) 標籤。

  5. 在內容欄位中,檢閱文件的可用參數和動作步驟。

    例如,下圖顯示 (1) version 與 (2) allowDowngradeAWS-UpdateSSMAgent 文件的可選參數,並且文件執行的第一個操作是 (3) aws:updateSsmAgent

    在 Systems Manager 主控台中檢視SSM文件內容