SSM 文档语法
文档语法由用于创建文档的架构版本定义。我们建议您对命令文档使用架构版本 2.2 或更高版本。自动化运行手册使用架构版本 0.3。此外,自动化运行手册还支持使用 Markdown(一种标记语言),它允许您为文档和文档中的各个步骤添加 Wiki 样式的描述。有关使用 Markdown 的更多信息,请参阅在 Amazon 中使用 Markdown。
顶级元素提供 SSM 文档的结构。本主题中的信息与 Command
和 Automation
SSM 文档有关。
顶级元素
- schemaVersion
-
要使用的架构版本。
类型:版本
必需:是
- description
-
您提供的描述文档目的的信息。您还可以使用此字段来指定参数是否需要一个值才能运行文档,或者为参数提供值是否为可选项。可在本主题的所有示例中查看必需参数和可选参数。
类型:字符串
必需:否
- 参数
-
定义文档接受的参数的结构。对于经常引用的参数,建议在 Parameter Store (Amazon Systems Manager 的一种功能)中存储这些参数,然后进行引用。您可以在文档的这一部分引用
String
和StringList
Parameter Store 参数。您不能在文档的这一部分引用SecureString
Parameter Store 参数。您可以使用以下格式引用 Parameter Store 参数:{{ssm:
parameter-name
}}有关 Parameter Store 的更多信息,请参阅 Amazon Systems Manager Parameter Store。
类型:结构
parameters
结构接受以下字段和值:-
type
:(必需) 允许的值包括:String
、StringList
、Integer
、Boolean
、MapList
和StringMap
。要查看每种类型的示例,请参阅下一节中的 文档参数 type 示例。注意 要使用数字作为参数值,请使用
String
作为参数类型。 -
description
:(可选) 关于参数的描述。 -
default
:(可选)参数的默认值或对 中参数的引用。Parameter Store -
allowedValues
:(可选)参数允许的值数组。定义参数的允许值将验证用户输入。如果用户输入了不允许的值,则执行将无法启动。 -
allowedPattern
:(可选)验证用户输入是否与参数的定义模式匹配的正则表达式。如果用户输入与允许的模式不匹配,则执行无法启动。注意 Systems Manager 会执行两次
allowedPattern
验证。第一次验证是在您使用文档时利用 Java 正则表达式库在 API 级别进行。第二次验证是在处理文档之前通过使用 GO 正则表达式库 在 SSM Agent 上进行。 -
displayType
:(可选)用于在 Amazon Web Services Management Console 中显示textfield
或textarea
。textfield
是单行文本框。textarea
是多行文本区域。 -
minItems
:(可选) 允许的最小项目数。 -
maxItems
:(可选) 允许的最大项目数。 -
minChars
:(可选) 允许的最小参数字符数。 -
maxChars
:(可选) 允许的最大参数字符数。
必需:否
-
- runtimeConfig
-
(仅限 1.2 版架构) 由一个或多个 Systems Manager 插件应用的实例的配置。不保证插件按顺序运行。
类型:Dictionary<string,PluginConfiguration>
必需:否
- mainSteps
-
(仅架构版本 0.3、2.0 和 2.2)可以包含多个步骤(插件)的对象。插件在步骤内定义。步骤按文档中列出的先后顺序运行。
类型:Dictionary<string,PluginConfiguration>
必需:是
- outputs
-
(仅架构版本 0.3)通过执行本文档而生成的可用于其他进程的数据。例如,如果文档创建新的 AMI,您可以指定 “CreateImage.ImageId” 作为输出值,然后使用该输出以在后续自动化执行中创建新的实例。有关输出的更多信息,请参阅使用输入和输出。
类型:Dictionary<string,OutputConfiguration>
必需:否
- files
-
(仅架构版本 0.3)附加到文档并在自动化执行期间运行的脚本文件(及其校验和)。仅适用于包含
aws:executeScript
操作且已在一个或多个步骤中指定附件的文档。对于脚本运行时支持,自动化运行手册当前支持 Python 3.6、Python 3.7、Python 3.8、PowerShell Core 6.0 和 PowerShell 7.0 脚本。有关在自动化运行手册中包含脚本的更多信息,请参阅 创建运行脚本的运行手册 和 演练:使用文档生成器创建自定义运行手册。
创建自动化运行手册时,您可以使用
--attachments
选项(对于 Amazon CLI)或Attachments
(对于 API 和开发工具包)指定附件文件。您可以为本地文件和存储在 Amazon Simple Storage Service (Amazon S3) 存储桶中的文件指定文件位置。类型:Dictionary<string,FilesConfiguration>
必需:否
文档参数 type
示例
SSM 文档中的参数类型是静态的。这意味着参数类型在定义后无法更改。将参数用于 SSM 文档插件时,不能在插件的输入中动态更改参数的类型。例如,您不能在 aws:runShellScript
插件的 runCommand
输入中引用 Integer
参数,因为此输入接受字符串或字符串列表。要将参数用于插件输入,参数类型必须与接受的类型匹配。例如,您必须为aws:updateSsmAgent
插件的 allowDowngrade
输入指定 Boolean
类型参数。如果参数类型与插件的输入类型不匹配,则 SSM 文档无法验证,并且系统不会创建文档。在其他插件或 Amazon Systems Manager 自动化操作的输入中使用下游参数时也是如此。例如,您不能引用 aws:runDocument
插件的 documentParameters
输入内的 StringList
参数。documentParameters
输入接受字符串映射,即使下游 SSM 文档参数类型是 StringList
参数并与您要引用的参数匹配。
将参数用于 自动化操作时,大多数情况下创建 SSM 文档时不会验证参数类型。只有在使用 aws:runCommand
操作的情况下,才会在创建 SSM 文档时验证参数类型。在所有其他情况下,在运行操作之前验证该操作的输入时,会在自动化执行期间进行参数验证。例如,如果输入参数为 String
并将其引用为 aws:runInstances
操作 MaxInstanceCount
输入的值,则会创建 SSM 文档。但是,在运行该文档期间,验证 aws:runInstances
操作时自动化将失败,因为 MaxInstanceCount
输入需要 Integer
。
下面是每个参数的示例 type
。
- 字符串
-
使用引号括起来的零个或多个 Unicode 字符序列。例如,"i-1234567890abcdef0"。使用反斜杠转义。
- StringList
-
以逗号分隔的字符串项目列表。例如,["cd ~", "pwd"].
- Boolean
-
仅接受
true
或false
。不接受 "true" 或 0。 - 整数
-
整数。不接受小数(例如 3.14159)或使用引号的数字(例如 "3")。
- StringMap
-
键到值的映射。键只能为字符串。例如,{"Env": "Prod"}.
- MapList
-
StringMap 项目的列表。