支持的操作模块EC2 TOE组件管理器 - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

支持的操作模块EC2 TOE组件管理器

本部分包含每个操作模块,这些模块由EC2 TOEEC2 Image Builder 用于配置生成映像的实例的组件管理应用程序。还包括每个操作模块的相应功能详细信息和输入/输出值。

EC2 TOE组件是使用明文 YAML 文档创作的。有关文档语法的更多信息,请参阅在中使用组件文档EC2 TOE.

注意

所有操作模块都使用与系统管理器代理相同的账户运行,即root在 Linux 上NT Authority\SYSTEM在 Windows 上。

常规执行模块

以下部分包含执行常规执行命令和说明的操作模块的详细信息。

ExecuteBash

这些区域有:ExecuteBash操作模块用于通过内联 Shell 代码/命令运行 bash 脚本。该模块支持 Linux。

您在命令块中指定的所有命令和指令将转换为文件(例如,input.sh) 然后用 bash 外壳一起运行。运行 Shell 文件的结果是该步骤的退出代码。

这些区域有:ExecuteBash模块处理如果脚本以退出代码退出194. 在启动后,该应用程序执行下列操作之一:

  • 如果退出代码是由 Systems Manager 运行的,该应用程序将向调用方返回退出代码。Systems Manager 代理处理系统重新启动并运行启动重启的步骤,如中所述通过脚本重启托管实例.

  • 该应用程序保存当前executionstate,配置重新启动触发器以重新运行该应用程序,然后重新启动系统。

在系统重新启动后,该应用程序运行启动重新启动的相同步骤。如果需要使用该功能,您必须编写幂等脚本以处理多次调用同一 Shell 命令的操作。

Input
原语 描述 Type 必填
commands 包含根据 bash 语法运行的指令或命令列表。允许使用多行 YAML。 List

输入示例:安装和验证 Corretto

name: InstallAndValidateCorretto action: ExecuteBash inputs: commands: - sudo yum install java-11-amazon-corretto-headless -y - | function fail_with_message() { 1>&2 echo $1 exit 1 } ARCH=`/usr/bin/arch` JAVA_PATH=/usr/lib/jvm/java-11-amazon-corretto.$ARCH/bin/java if [ -x $JAVA_PATH ]; then echo "Amazon Corretto 11 JRE is installed." else fail_with_message "Amazon Corretto 11 JRE is not installed. Failing." fi JAVAC_PATH=/usr/lib/jvm/java-11-amazon-corretto.$ARCH/bin/javac if [ -x $JAVAC_PATH ]; then echo "Amazon Corretto 11 JDK is installed." else fail_with_message "Amazon Corretto 11 JDK is not installed. Failing." fi
Output
字段 描述 Type
stdout 命令执行的标准输出。 string

输出示例

{ “stdout”: “This is the standard output from running the shell\n" }

如果你开始重启并返回退出代码194作为操作模块的一部分,生成将在启动重新引导的同一操作模块步骤处继续执行。如果您在没有退出代码的情况下开始重新引导,生成过程可能会失败。

ExecuteBinary

这些区域有:ExecuteBinary操作模块用于通过命令行参数列表运行二进制文件。

这些区域有:ExecuteBinary模块处理如果二进制文件以退出代码退出194(Linux) 或3010(Windows)。在发生这种情况时,该应用程序执行下列操作之一:

  • 如果退出代码是由 Systems Manager 运行的,该应用程序将向调用方返回退出代码。Systems Manager Agent 处理重新启动系统并运行启动重启的步骤,如中所述通过脚本重启托管实例.

  • 该应用程序保存当前executionstate,配置重新启动触发器以重新运行该应用程序,然后重新启动系统。

系统重新启动后,应用程序将运行启动重启的步骤相同。如果需要使用该功能,您必须编写幂等脚本以处理多次调用同一 Shell 命令的操作。

Input
原语 描述 Type 必填
path 要执行的二进制文件的路径。 字符串
arguments 包含在运行二进制文件时使用的命令行参数列表。 字符串列表

输入示例:安装 .NET

name: "InstallDotnet" action: ExecuteBinary inputs: path: C:\PathTo\dotnet_installer.exe arguments: - /qb - /norestart
Output
字段 描述 Type
stdout 命令执行的标准输出。 string

输出示例

{ "stdout": "success" }

ExecutePowerShell

这些区域有:ExecutePowerShell操作模块用于通过内联 Shell 代码/命令运行 PowerShell 脚本。该模块支持 Windows 平台和 Windows PowerShell。

在命令块中指定的所有命令/指令将转换为脚本文件(例如,input.ps1)然后使用 Windows PowerShell 运行。运行 Shell 文件的结果是退出代码。

这些区域有:ExecutePowerShell模块处理如果 shell 命令以退出代码退出3010. 在启动后,该应用程序执行下列操作之一:

  • 如果是由系统管理器代理运行的,则向调用方返回退出代码。Systems Manager 代理处理系统重新启动并运行启动重启的步骤,如中所述通过脚本重启托管实例.

  • 保存当前executionstate,配置重新启动触发器以重新运行该应用程序,然后重新引导系统。

在系统重新启动后,该应用程序运行启动重新启动的相同步骤。如果需要使用该功能,您必须编写幂等脚本以处理多次调用同一 Shell 命令的操作。

Input
原语 描述 Type 必填
commands 包含根据 PowerShell 语法运行的指令或命令列表。允许使用多行 YAML。 字符串列表

是。必须指定 commandsfile,但不能同时指定。

file 包含 PowerShell 脚本文件的路径。PowerShell 将使用-file命令行参数。路径必须指向 .ps1 文件。 字符串

是。必须指定 commandsfile,但不能同时指定。

输入示例:使用 PowerShell 命令安装软件

name: InstallMySoftware action: ExecutePowerShell inputs: commands: - Set-SomeConfiguration -Value 10 - Write-Host 'Successfully set the configuration.' name: ExecuteMyScript action: ExecutePowerShell inputs: file: 'C:\PathTo\MyScript.ps1'
Output
字段 描述 Type
stdout 命令执行的标准输出。 string

输出示例

{ “stdout”: “This is the standard output from the shell execution\n" }

如果你运行重启并返回退出代码3010作为操作模块的一部分,生成将在启动重新引导的同一操作模块步骤处继续执行。如果运行重新引导而没有退出代码,生成过程可能会失败。

文件下载和上传模块

以下部分包含执行下载和上传命令和说明的操作模块的详细信息。

下载并上传操作模块

S3Download

使用S3Download操作模块中,您可以将 Amazon S3 对象或一组对象下载到使用destination路径。如果指定位置中已存在任何文件,并且overwrite标志设为 true,S3Download覆盖文件。

您的source位置可以指向 Amazon S3 中的特定对象,也可以使用带星号通配符的 key prefix (*) 来下载一组与 key prefix 路径匹配的对象。当你 key prefix 的source位置,S3Download操作模块下载与前缀匹配的所有内容(包括文件和文件夹)。确保 key prefix 以正斜杠结尾,后跟星号 (/*),以便你下载与前缀匹配的所有内容。例如:s3://my-bucket/my-folder/*

注意

目标路径中的所有文件夹必须在下载之前存在,否则下载失败。

如果S3Download在下载期间,针对指定 key prefix 的操作失败,文件夹内容不会回滚到失败之前的状态。目标文件夹与失败时的原样保持不变。

支持的使用案例

这些区域有:S3Download操作模块支持以下用例:

  • 如下载路径中指定的那样,Amazon S3 对象将下载到本地文件夹。

  • Amazon S3 对象(在 Amazon S3 文件路径中带有 key prefix)将下载到指定的本地文件夹,该文件夹以递归方式将与 key prefix 匹配的所有 Amazon S3 对象复制到本地文件夹。

IAM 要求

与实例配置文件关联的 IAM 角色必须有权运行S3Download操作模块。必须将以下 IAM 策略附加到与实例配置文件关联的 IAM 角色:

  • 单个文件:针对存储桶/对象(例如 arn:aws:s3:::BucketName/*)的 s3:GetObject

  • 多个文件:针对存储桶/对象(例如 arn:aws:s3:::BucketName)的 s3:ListBucket 以及针对存储桶/对象(例如 arn:aws:s3:::BucketName/*)的 s3:GetObject

Input

原语

描述

Type

必需

默认值

source

作为下载源的 Amazon S3 存储桶。您可以指定指向特定对象的路径,也可以使用以正斜杠结尾的 key prefix,后跟星号通配符 (/*),以下载一组与 key prefix 匹配的对象。

字符串

不适用

destination

下载 Amazon S3 对象的本地路径。

字符串

不适用

expectedBucketOwner

中提供的存储桶的预期拥有者账户 IDsource路径。我们建议您验证源中指定的 Amazon S3 存储桶的所有权。

字符串

不适用

overwrite

如果设置为 true,如果指定本地路径的目标文件夹中已存在同名文件夹中,则下载文件将覆盖本地文件。如果设置为 false,则保护本地系统上的现有文件不被覆盖,操作模块失败并出现下载错误。

例如:Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.

Boolean

true

注意

对于以下示例,可以将 Windows 文件夹路径替换为 Linux 路径。例如,可以将 C:\myfolder\package.zip 替换为 /myfolder/package.zip

输入示例:将 Amazon S3 对象复制到本地文件

以下示例说明了如何将 Amazon S3 对象复制到本地文件。

name: DownloadMyFile action: S3Download inputs: - source: s3://mybucket/path/to/package.zip destination: C:\myfolder\package.zip expectedBucketOwner: 123456789022 overwrite: false - source: s3://mybucket/path/to/package.zip destination: C:\myfolder\package.zip expectedBucketOwner: 123456789022 overwrite: true - source: s3://mybucket/path/to/package.zip destination: C:\myfolder\package.zip expectedBucketOwner: 123456789022

输入示例:将带有 key prefix 的 Amazon S3 存储桶中的所有 Amazon S3 对象复制到本地文件夹

以下示例说明如何将带有 key prefix 的 Amazon S3 存储桶中的所有 Amazon S3 对象复制到本地文件夹。Amazon S3 没有文件夹概念,因此,将复制与 key prefix 匹配的所有对象。可以下载的对象的最大数量为 1000。

name: MyS3DownloadKeyprefix action: S3Download maxAttempts: 3 inputs: - source: s3://mybucket/path/to/* destination: C:\myfolder\ expectedBucketOwner: 123456789022 overwrite: false - source: s3://mybucket/path/to/* destination: C:\myfolder\ expectedBucketOwner: 123456789022 overwrite: true - source: s3://mybucket/path/to/* destination: C:\myfolder\ expectedBucketOwner: 123456789022

Output

无。

S3Upload

使用S3Upload操作模块中,您可以将文件从源文件或文件夹上传到 Amazon S3 位置。你可以使用通配符 (*) 在为源位置指定的路径中,以上传路径与通配符模式匹配的所有文件。

如果递归S3Upload操作失败,所有已上传的文件将保留在目标 Amazon S3 存储桶中。

支持的使用案例

  • Amazon S3 对象的本地文件。

  • 文件夹中的本地文件(带通配符)到 Amazon S3 key prefix。

  • 复制本地文件夹(必须有recurse设置为true)到 Amazon S3 key prefix。

IAM 要求

与实例配置文件关联的 IAM 角色必须有权运行S3Upload操作模块。必须将以下 IAM 策略附加到与实例配置文件关联的 IAM 角色。该保单必须授予s3:PutObject对目标 Amazon S3 存储桶的权限。例如, arn:aws:s3:::BucketName/*).

Input

原语

描述

Type

必需

默认值

source

源文件/文件夹来源的本地路径。这些区域有:source支持星号通配符 (*)。

字符串

不适用

destination

上传源文件/文件夹的目标 Amazon S3 存储桶的路径。

字符串

不适用

recurse

如果设置为 true,则递归执行 S3Upload

字符串

false

expectedBucketOwner

目标路径中指定的 Amazon S3 存储桶的预期所有者账户 ID。我们建议您验证目标中指定的 Amazon S3 存储桶的所有权。

字符串

不适用

输入示例:将本地文件复制到 Amazon S3 对象

以下示例说明了如何将本地文件复制到 Amazon S3 对象。

name: MyS3UploadFile action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\myfolder\package.zip destination: s3://mybucket/path/to/package.zip expectedBucketOwner: 123456789022

输入示例:将本地文件夹中的所有文件复制到带有 key prefix 的 Amazon S3 存储桶

以下示例说明了如何将本地文件夹中的所有文件复制到带有 key prefix 的 Amazon S3 存储桶。此示例不会复制子文件夹或其内容,recurse未指定,默认为false.

name: MyS3UploadMultipleFiles action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\myfolder\* destination: s3://mybucket/path/to/ expectedBucketOwner: 123456789022

输入示例:将所有文件和文件夹从本地文件夹递归复制到 Amazon S3 存储桶

以下示例说明如何将所有文件和文件夹从本地文件夹递归复制到带有 key prefix 的 Amazon S3 存储桶。

name: MyS3UploadFolder action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\myfolder\* destination: s3://mybucket/path/to/ recurse: true expectedBucketOwner: 123456789022

Output

无。

WebDownload

这些区域有:WebDownload操作模块允许您通过 HTTP/HTTPS 协议从远程位置下载文件和资源(推荐使用 HTTPS)。下载的数量或大小没有限制。此模块处理重试和指数退避逻辑。

根据用户输入,每次下载操作最多分配 5 次尝试成功。这些尝试与中指定的尝试不同maxAttempts文档字段steps,这与操作模块失败有关。

此操作模块隐式处理重定向。所有 HTTP 状态代码,但200,导致错误。

Input
原语 描述 Type 必需 默认值
source 有效的 HTTP/HTTPS URL (推荐使用 HTTPS),它遵循了 RFC 3986 标准。允许使用链接表达式。 字符串

不适用
destination 本地系统上的绝对或相对文件或文件夹路径。文件夹路径必须以结尾。/. 如果他们不以结束/,它们将被视为文件路径。该模块为成功下载创建任何所需的文件或文件夹。允许使用链接表达式。 字符串 不适用
overwrite 启用后,将使用下载的文件或资源覆盖本地系统上的所有现有文件。如果未启用,本地系统上的任何现有文件都不会被覆盖,操作模块失败并显示错误。启用覆盖并指定校验和和和算法时,操作模块只有在校验和与任何预先存在的文件的哈希不匹配时才下载该文件。 Boolean true
checksum 指定校验和时,会根据使用提供的算法生成的下载文件的哈希值进行检查。要启用文件验证,必须同时提供校验和和算法。允许使用链接表达式。 字符串 不适用
algorithm 用于计算校验和的算法。选项包括 MD5、SHA1、SHA256 和 SHA512。要启用文件验证,必须同时提供校验和和算法。允许使用链接表达式。 字符串 不适用
ignoreCertificateErrors 启用后,SSL 证书验证将被忽略。 Boolean false
Output
原语 描述 Type
destination 换行符分隔的字符串,它指定存储下载的文件或资源的目标路径。 字符串

输入示例:将远程文件下载到本地目标

name: DownloadRemoteFile action: WebDownload maxAttempts: 3 inputs: - source: https://testdomain/path/to/java14.zip destination: C:\testfolder\package.zip Output: { "destination": "C:\\testfolder\\package.zip" }

输入示例:将多个远程文件下载到多个本地目标

name: DownloadRemoteFiles action: WebDownload maxAttempts: 3 inputs: - source: https://testdomain/path/to/java14.zip destination: /tmp/java14_renamed.zip - source: https://testdomain/path/to/java14.zip destination: /tmp/create_new_folder_and_add_java14_as_zip/ Output: { "destination": "/tmp/create_new_folder/java14_renamed.zip\n/tmp/create_new_folder_and_add_java14_as_zip/java14.zip" }

输入示例:下载一个远程文件而不覆盖本地目标,然后通过文件验证下载另一个远程文件

name: DownloadRemoteMultipleProperties action: WebDownload maxAttempts: 3 inputs: - source: https://testdomain/path/to/java14.zip destination: C:\create_new_folder\java14_renamed.zip overwrite: false - source: https://testdomain/path/to/java14.zip destination: C:\create_new_folder_and_add_java14_as_zip\ checksum: ac68bbf921d953d1cfab916cb6120864 algorithm: MD5 overwrite: true Output: { "destination": "C:\\create_new_folder\\java14_renamed.zip\nC:\\create_new_folder_and_add_java14_as_zip\\java14.zip" }

输入示例:下载远程文件并忽略 SSL 认证验证

name: DownloadRemoteIgnoreValidation action: WebDownload maxAttempts: 3 inputs: - source: https://www.bad-ssl.com/resource destination: /tmp/downloads/ ignoreCertificateErrors: true Output: { "destination": "/tmp/downloads/resource" }

文件系统操作模块

以下部分包含执行文件系统操作命令和说明的操作模块的详细信息。

AppendFile

这些区域有:追加文件操作模块将指定的内容添加到文件的预先存在的内容中。

如果文件编码值与默认编码不同 (utf-8) value,然后可以使用encoding选项。默认为utf-16utf-32假设使用小端编码。

发生以下情况时,操作模块会返回错误:

  • 指定的文件在运行时不存在。

  • 您没有修改文件内容的写入权限。

  • 该模块在文件操作过程中遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用
content 要附加到文件的内容。 字符串 空字符串 不适用
encoding 编码标准。 字符串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LE utf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE, 和 utf-32-BE. 编码选项的值不区分大小写。

输入示例:在不编码的情况下追加文件 (Linux)

name: AppendingFileWithOutEncodingLinux action: AppendFile inputs: - path: ./Sample.txt content: "The string to be appended to the file"

输入示例:在不编码的情况下追加文件 (Windows)

name: AppendingFileWithOutEncodingWindows action: AppendFile inputs: - path: C:\MyFolder\MyFile.txt content: "The string to be appended to the file"

输入示例:使用编码追加文件 (Linux)

name: AppendingFileWithEncodingLinux action: AppendFile inputs: - path: /FolderName/SampleFile.txt content: "The string to be appended to the file" encoding: UTF-32

输入示例:使用编码追加文件 (Windows)

name: AppendingFileWithEncodingWindows action: AppendFile inputs: - path: C:\MyFolderName\SampleFile.txt content: "The string to be appended to the file" encoding: UTF-32

输入示例:用空字符串追加文件 (Linux)

name: AppendingEmptyStringLinux action: AppendFile inputs: - path: /FolderName/SampleFile.txt

输入示例:用空字符串追加文件 (Windows)

name: AppendingEmptyStringWindows action: AppendFile inputs: - path: C:\MyFolderName\SampleFile.txt

Output

无。

CopyFile

这些区域有:复制文件操作模块将文件从指定源复制到指定的目标。默认情况下,如果目标文件夹在运行时不存在,模块会递归地创建该文件夹。

如果指定文件夹中已存在具有指定名称的文件,则默认情况下,操作模块将覆盖现有文件。您可以将覆盖选项设置为,覆盖此默认行为。false. 当覆盖选项设置为false,并且指定位置中已有一个具有指定名称的文件,操作模块将返回错误。此选项的工作方式与cpLinux 中的命令,默认情况下它会覆盖。

源文件名可以包含通配符 (*)。只有在最后一个文件路径分隔符之后才能接受通配符 (/要么\)。如果源文件名中包含通配符,则所有与通配符匹配的文件都将复制到目标文件夹中。如果要使用通配符移动多个文件,则输入destination选项必须以文件路径分符结尾(/要么\),表示目标输入是文件夹。

如果目标文件名与源文件名不同,则可以使用destination选项。如果未指定目标文件名,则使用源文件的名称来创建目标文件。最后一个文件路径分隔符后面的任何文本 (/要么\) 被视为文件名。如果您想使用与源文件相同的文件名,则输入destination选项必须以文件路径分符结尾(/要么\)。

发生以下情况时,操作模块会返回错误:

  • 您没有在指定文件夹中创建文件的权限。

  • 源文件在运行时不存在。

  • 已存在具有指定文件名的文件夹,overwrite选项设置为false.

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
source 源文件路径。 字符串 不适用 不适用
destination 目标文件路径。 字符串 不适用 不适用
overwrite 如果设置为 false,则在指定位置中已存在具有指定名称的文件时,目标文件将不会被替换。 Boolean true 不适用

输入示例:复制文件 (Linux)

name: CopyingAFileLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt

输入示例:复制文件 (Windows)

name: CopyingAFileWindows action: CopyFile inputs: - source: C:\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt

输入示例:使用源文件名复制文件 (Linux)

name: CopyingFileWithSourceFileNameLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/

输入示例:使用源文件名复制文件 (Windows)

name: CopyingFileWithSourceFileNameWindows action: CopyFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\

输入示例:使用通配符复制文件 (Linux)

name: CopyingFilesWithWildCardLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

输入示例:使用通配符复制文件 (Windows)

name: CopyingFilesWithWildCardWindows action: CopyFile inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder\

输入示例:在不覆盖的情况下复制文件 (Linux)

name: CopyingFilesWithoutOverwriteLinux action: CopyFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt overwrite: false

输入示例:在不覆盖的情况下复制文件 (Windows)

name: CopyingFilesWithoutOverwriteWindows action: CopyFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt overwrite: false

Output

无。

CopyFolder

这些区域有:CopyFolder操作模块将文件夹从指定源复制到指定的目标。的输入source选项是要复制的文件夹,以及destination选项是复制源文件夹内容的文件夹。默认情况下,如果目标文件夹在运行时不存在,模块会递归地创建该文件夹。

如果指定文件夹中已存在具有指定名称的文件夹,则默认情况下,操作模块将覆盖现有文件夹。您可以将覆盖选项设置为,覆盖此默认行为。false. 当覆盖选项设置为false,并且指定位置中已有一个具有指定名称的文件夹,操作模块将返回错误。

源文件夹名称可以包含通配符 (*)。只有在最后一个文件路径分隔符之后才能接受通配符 (/要么\)。如果源文件夹名称中包含通配符,则所有与通配符匹配的文件夹都将复制到目标文件夹中。如果要使用通配符复制多个文件夹,则输入destination选项必须以文件路径分符结尾(/要么\),表示目标输入是文件夹。

如果目标文件夹名称与源文件夹名称不同,则可以使用destination选项。如果未指定目标文件夹名称,则将使用源文件夹的名称来创建目标文件夹。最后一个文件路径分隔符后面的任何文本 (/要么\) 被视为文件夹名称。如果要使用与源文件夹相同的文件夹名称,则输入destination选项必须以文件路径分符结尾(/要么\)。

发生以下情况时,操作模块会返回错误:

  • 您没有在指定文件夹中创建文件夹的文件夹。

  • 源文件夹在运行时不存在。

  • 已存在具有指定文件夹名称的文件夹,overwrite选项设置为false.

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
source 源文件夹路径。 字符串 不适用 不适用
destination 目标文件夹路径。 字符串 不适用 不适用
overwrite 如果设置为 false,则在指定位置中已存在具有指定名称的文件夹时,目标文件夹将不会被替换。 Boolean true 不适用

输入示例:复制文件夹 (Linux)

name: CopyingAFolderLinux action: CopyFolder inputs: - source: /Sample/MyFolder/SampleFolder destination: /MyFolder/destinationFolder

输入示例:复制文件夹 (Windows)

name: CopyingAFolderWindows action: CopyFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\destinationFolder

输入示例:使用源文件夹名称复制文件夹 (Linux)

name: CopyingFolderSourceFolderNameLinux action: CopyFolder inputs: - source: /Sample/MyFolder/SourceFolder destination: /MyFolder/

输入示例:使用源文件夹名称复制文件夹 (Windows)

name: CopyingFolderSourceFolderNameWindows action: CopyFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\

输入示例:使用通配符复制文件夹 (Linux)

name: CopyingFoldersWithWildCardLinux action: CopyFolder inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

输入示例:使用通配符复制文件夹 (Windows)

name: CopyingFoldersWithWildCardWindows action: CopyFolder inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder\

输入示例:在不覆盖的情况下复制文件夹 (Linux)

name: CopyingFoldersWithoutOverwriteLinux action: CopyFolder inputs: - source: /Sample/MyFolder/SourceFolder destination: /MyFolder/destinationFolder overwrite: false

输入示例:在不覆盖的情况下复制文件夹 (Windows)

name: CopyingFoldersWithoutOverwrite action: CopyFolder inputs: - source: C:\Sample\MyFolder\SourceFolder destination: C:\MyFolder\destinationFolder overwrite: false

Output

无。

CreateFile

这些区域有:创建文件操作模块在指定位置创建一个文件。默认情况下,如果需要,模块还会递归创建父文件夹。

如果该文件已存在于指定文件夹中,则默认情况下,操作模块将截断或覆盖现有文件。您可以将覆盖选项设置为,覆盖此默认行为。false. 当覆盖选项设置为false,并且指定位置中已有一个具有指定名称的文件,操作模块将返回错误。

如果文件编码值与默认编码不同 (utf-8) value,然后可以使用encoding选项。默认为utf-16utf-32假设使用小端编码。

ownergroup, 和permissions是可选的输入。的输入permissions必须是字符串值。如果未提供,则使用默认值创建文件。Windows 平台不支持这些选项。此操作模块验证并返回错误,如果ownergroup, 和permissions选项在 Windows 平台上使用。

此操作模块可以创建具有默认定义的权限的文件umask操作系统的值。你必须设置umask值如果你想覆盖默认值。

发生以下情况时,操作模块会返回错误:

  • 您没有权限在指定的父文件夹中创建文件或文件夹。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用
content 文件的内容。 字符串 不适用 不适用
encoding 编码标准。 字符串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LE utf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE, 和 utf-32-BE. 编码选项的值不区分大小写。
owner 用户名或 ID。 字符串 不适用 不适用 Windows 中不支持。
group 组名或 ID。 字符串 当前用户。 不适用 Windows 中不支持。
permissions 文件权限。 字符串 0666 不适用 Windows 中不支持。
overwrite 如果指定文件的名称已存在,请将此值设置为false默认情况下,防止文件被截断或覆盖。 Boolean true 不适用

输入示例:在不覆盖的情况下创建文件 (Linux)

name: CreatingFileWithoutOverwriteLinux action: CreateFile inputs: - path: /home/UserName/Sample.txt content: ABCD\nRandom\tvalues overwrite: false

输入示例:在不覆盖的情况下创建文件 (Windows)

name: CreatingFileWithoutOverwriteWindows action: CreateFile inputs: - path: C:\Temp\Sample.txt content: ABCD\nRandom\tvalues overwrite: false

输入示例:创建具有文件属性的文件

name: CreatingFileWithFileProperties action: CreateFile inputs: - path: SampleFolder/Sample.txt content: ABCD\nRandom\tvalues encoding: UTF-16 owner: Ubuntu group: UbuntuGroup permissions: 0777 - path: SampleFolder/SampleFile.txt permissions: 755 - path: SampleFolder/TextFile.txt encoding: UTF-16 owner: root group: rootUserGroup

输入示例:创建没有文件属性的文件

name: CreatingFileWithoutFileProperties action: CreateFile inputs: - path: ./Sample.txt - path: Sample1.txt

Output

无。

CreateFolder

这些区域有:创建文件夹操作模块在指定位置创建一个文件夹。默认情况下,如果需要,模块还会递归创建父文件夹。

如果该文件夹已存在于指定文件夹中,则默认情况下,操作模块将截断或覆盖现有文件夹。您可以将覆盖选项设置为,覆盖此默认行为。false. 当覆盖选项设置为false,并且指定位置中已有一个具有指定名称的文件夹,操作模块将返回错误。

ownergroup, 和permissions是可选的输入。的输入permissions必须是字符串值。Windows 平台不支持这些选项。此操作模块验证并返回错误,如果ownergroup, 和permissions选项在 Windows 平台上使用。

此操作模块可以创建具有默认定义的权限的文件夹umask操作系统的值。你必须设置umask值如果你想覆盖默认值。

发生以下情况时,操作模块会返回错误:

  • 您没有在指定位置创建文件夹的文件夹。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件夹路径。 字符串 不适用 不适用
owner 用户名或 ID。 字符串 当前用户。 不适用 Windows 中不支持。
group 组名或 ID。 字符串 当前用户的组。 不适用 Windows 中不支持。
permissions 文件夹权限。 字符串 0777 不适用 Windows 中不支持。
overwrite 如果指定文件的名称已存在,请将此值设置为false默认情况下,防止文件被截断或覆盖。 Boolean true 不适用

输入示例:创建文件夹 (Linux)

name: CreatingFolderLinux action: CreateFolder inputs: - path: /Sample/MyFolder/

输入示例:创建文件夹 (Windows)

name: CreatingFolderWindows action: CreateFolder inputs: - path: C:\MyFolder

输入示例:创建指定文件夹属性的文件夹

name: CreatingFolderWithFolderProperties action: CreateFolder inputs: - path: /Sample/MyFolder/Sample/ owner: SampleOwnerName group: SampleGroupName permissions: 0777 - path: /Sample/MyFolder/SampleFoler/ permissions: 777

输入示例:创建一个覆盖现有文件夹的文件夹(如果存在)。

name: CreatingFolderWithOverwrite action: CreateFolder inputs: - path: /Sample/MyFolder/Sample/ overwrite: true

Output

无。

这些区域有:创建 Symlink操作模块创建符号链接,或者包含对另一个文件的引用的文件。Windows 平台不支持此模块。

的输入pathtarget选项可以是绝对路径或相对路径。如果输入的path选项是相对路径,创建链接时它将被绝对路径替换。

默认情况下,如果指定文件夹中已存在具有指定名称的链接,操作模块将返回错误。您可以通过设置force选择true. 当force选项设置为true,该模块将覆盖现有链接。

如果父文件夹不存在,默认情况下,操作模块会递归创建该文件夹。

发生以下情况时,操作模块会返回错误:

  • 目标文件在运行时不存在。

  • 具有指定名称的非符号链接文件已存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用 Windows 中不支持。
target 符号链接指向的目标文件路径。 字符串 不适用 不适用 Windows 中不支持。
force 如果已存在具有相同名称的链接,则强制创建链接。 Boolean false 不适用 Windows 中不支持。

输入示例:创建强制创建链接的符号链接

name: CreatingSymbolicLinkWithForce action: CreateSymlink inputs: - path: /Folder2/Symboliclink.txt target: /Folder/Sample.txt force: true

输入示例:创建不强制创建链接的符号链接

name: CreatingSymbolicLinkWithOutForce action: CreateSymlink inputs: - path: Symboliclink.txt target: /Folder/Sample.txt

Output

无。

DeleteFile

这些区域有:DeleteFile操作模块删除指定位置中的一个或多个文件。

的输入path应该是有效的文件路径或带通配符的文件路径(*) 在文件名中显示。如果在文件名中指定了通配符,则同一文件夹中与通配符匹配的所有文件都将被删除。

发生以下情况时,操作模块会返回错误:

  • 您没有执行删除操作的权限。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用

输入示例:删除单个文件 (Linux)

name: DeletingSingleFileLinux action: DeleteFile inputs: - path: /SampleFolder/MyFolder/Sample.txt

输入示例:删除单个文件 (Windows)

name: DeletingSingleFileWindows action: DeleteFile inputs: - path: C:\SampleFolder\MyFolder\Sample.txt

输入示例:删除以 “log” 结尾的文件 (Linux)

name: DeletingFileEndingWithLogLinux action: DeleteFile inputs: - path: /SampleFolder/MyFolder/*log

输入示例:删除以 “log” 结尾的文件 (Windows)

name: DeletingFileEndingWithLogWindows action: DeleteFile inputs: - path: C:\SampleFolder\MyFolder\*log

输入示例:删除指定文件夹中的所有文件 (Linux)

name: DeletingAllFilesInAFolderLinux action: DeleteFile inputs: - path: /SampleFolder/MyFolder/*

输入示例:删除指定文件夹中的所有文件 (Windows)

name: DeletingAllFilesInAFolderWindows action: DeleteFile inputs: - path: C:\SampleFolder\MyFolder\*

Output

无。

DeleteFolder

这些区域有:删除文件夹操作模块删除文件夹。

如果文件夹不为空,则必须设置force选择true以删除文件夹及其内容。如果你没有设置force选择true,并且您尝试删除的文件夹不为空,操作模块返回错误。的默认值force选项是false.

发生以下情况时,操作模块会返回错误:

  • 您没有执行删除操作的权限。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件夹路径。 字符串 不适用 不适用
force 无论文件夹是否为空,都会删除该文件夹。 Boolean false 不适用

输入示例:使用删除不为空的文件夹force选项(Linux)

name: DeletingFolderWithForceOptionLinux action: DeleteFolder inputs: - path: /Sample/MyFolder/Sample/ force: true

输入示例:使用删除不为空的文件夹force选项(窗口)

name: DeletingFolderWithForceOptionWindows action: DeleteFolder inputs: - path: C:\Sample\MyFolder\Sample\ force: true

输入示例:删除文件夹 (Linux)

name: DeletingFolderWithOutForceLinux action: DeleteFolder inputs: - path: /Sample/MyFolder/Sample/

输入示例:删除文件夹 (Windows)

name: DeletingFolderWithOutForce action: DeleteFolder inputs: - path: C:\Sample\MyFolder\Sample\

Output

无。

ListFiles

这些区域有:列表文件操作模块列出了指定文件夹中的文件。当递归选项设置为true,它会列出子文件夹中的文件。默认情况下,此模块不会列出子文件夹中的文件。

要列出名称与指定模式匹配的所有文件,请使用fileNamePattern选项来提供模式。这些区域有:fileNamePattern选项接受通配符 (*) 值。当fileNamePattern,则返回与指定文件名格式匹配的所有文件。

发生以下情况时,操作模块会返回错误:

  • 指定的文件夹在运行时不存在。

  • 您没有权限在指定的父文件夹中创建文件或文件夹。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件夹路径。 字符串 不适用 不适用
fileNamePattern 要匹配的模式以列出名称与模式匹配的所有文件。 字符串 不适用 不适用
recursive 递归列出文件夹中的文件。 Boolean false 不适用

输入示例:列出指定文件夹中的文件 (Linux)

name: ListingFilesInSampleFolderLinux action: ListFiles inputs: - path: /Sample/MyFolder/Sample

输入示例:列出指定文件夹中的文件 (Windows)

name: ListingFilesInSampleFolderWindows action: ListFiles inputs: - path: C:\Sample\MyFolder\Sample

输入示例:列出以 “log” 结尾的文件 (Linux)

name: ListingFilesWithEndingWithLogLinux action: ListFiles inputs: - path: /Sample/MyFolder/ fileNamePattern: *log

输入示例:列出以 “log” 结尾的文件 (Windows)

name: ListingFilesWithEndingWithLogWindows action: ListFiles inputs: - path: C:\Sample\MyFolder\ fileNamePattern: *log

输入示例:递归列出文件

name: ListingFilesRecursively action: ListFiles inputs: - path: /Sample/MyFolder/ recursive: true
Output
原语 描述 Type
files 文件列表。 字符串

输出示例

{ "files": "/sample1.txt,/sample2.txt,/sample3.txt" }

MoveFile

这些区域有:MoveFiles操作模块将文件从指定源移动到指定的目标位置。

如果该文件已存在于指定的文件夹中,则默认情况下,操作模块将覆盖现有文件。您可以将覆盖选项设置为,覆盖此默认行为。false. 当覆盖选项设置为false,并且指定位置中已有一个具有指定名称的文件,操作模块将返回错误。此选项的工作方式与mvLinux 中的命令,默认情况下它会覆盖。

源文件名可以包含通配符 (*)。只有在最后一个文件路径分隔符之后才能接受通配符 (/要么\)。如果源文件名中包含通配符,则所有与通配符匹配的文件都将复制到目标文件夹中。如果要使用通配符移动多个文件,则输入destination选项必须以文件路径分符结尾(/要么\),表示目标输入是文件夹。

如果目标文件名与源文件名不同,则可以使用destination选项。如果未指定目标文件名,则使用源文件的名称来创建目标文件。最后一个文件路径分隔符后面的任何文本 (/要么\) 被视为文件名。如果您想使用与源文件相同的文件名,则输入destination选项必须以文件路径分符结尾(/要么\)。

发生以下情况时,操作模块会返回错误:

  • 您没有在指定文件夹中创建文件的权限。

  • 源文件在运行时不存在。

  • 已存在具有指定文件名的文件夹,overwrite选项设置为false.

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
source 源文件路径。 字符串 不适用 不适用
destination 目标文件路径。 字符串 不适用 不适用
overwrite 如果设置为 false,则在指定位置中已存在具有指定名称的文件时,目标文件将不会被替换。 Boolean true 不适用

输入示例:移动文件 (Linux)

name: MovingAFileLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt

输入示例:移动文件 (Windows)

name: MovingAFileWindows action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt

输入示例:使用源文件名移动文件 (Linux)

name: MovingFileWithSourceFileNameLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/

输入示例:使用源文件名移动文件 (Windows)

name: MovingFileWithSourceFileNameWindows action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder

输入示例:使用通配符移动文件 (Linux)

name: MovingFilesWithWildCardLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

输入示例:使用通配符移动文件 (Windows)

name: MovingFilesWithWildCardWindows action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder

输入示例:在不覆盖的情况下移动文件 (Linux)

name: MovingFilesWithoutOverwriteLinux action: MoveFile inputs: - source: /Sample/MyFolder/Sample.txt destination: /MyFolder/destinationFile.txt overwrite: false

输入示例:在不覆盖的情况下移动文件 (Windows)

name: MovingFilesWithoutOverwrite action: MoveFile inputs: - source: C:\Sample\MyFolder\Sample.txt destination: C:\MyFolder\destinationFile.txt overwrite: false

Output

无。

MoveFolder

这些区域有:移动文件夹操作模块将文件夹从指定源移动到指定的目标位置。的输入source选项是要移动的文件夹,输入destination选项是移动源文件夹内容的文件夹。

如果目标父文件夹或输入destination选项在运行时不存在,模块的默认行为是在指定的目标递归创建文件夹。

如果目标文件夹中已存在与源文件夹相同的文件夹,则默认情况下,操作模块将覆盖现有文件夹。您可以将覆盖选项设置为,覆盖此默认行为。false. 当覆盖选项设置为false,并且指定位置中已有一个具有指定名称的文件夹,操作模块将返回错误。

源文件夹名称可以包含通配符 (*)。只有在最后一个文件路径分隔符之后才能接受通配符 (/要么\)。如果源文件夹名称中包含通配符,则所有与通配符匹配的文件夹都将复制到目标文件夹中。如果要使用通配符移动多个文件夹,则输入destination选项必须以文件路径分符结尾(/要么\),表示目标输入是文件夹。

如果目标文件夹名称与源文件夹名称不同,则可以使用destination选项。如果未指定目标文件夹名称,则将使用源文件夹的名称来创建目标文件夹。最后一个文件路径分隔符后面的任何文本 (/要么\) 被视为文件夹名称。如果要使用与源文件夹相同的文件夹名称,则输入destination选项必须以文件路径分符结尾(/要么\)。

发生以下情况时,操作模块会返回错误:

  • 您没有在目标文件夹中创建文件夹的文件夹。

  • 源文件夹在运行时不存在。

  • 已存在具有指定名称的文件夹,overwrite选项设置为false.

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
source 源文件夹路径。 字符串 不适用 不适用
destination 目标文件夹路径。 字符串 不适用 不适用
overwrite 如果设置为 false,则在指定位置中已存在具有指定名称的文件夹时,目标文件夹将不会被替换。 Boolean true 不适用

输入示例:移动文件夹 (Linux)

name: MovingAFolderLinux action: MoveFolder inputs: - source: /Sample/MyFolder/SourceFolder destination: /MyFolder/destinationFolder

输入示例:移动文件夹 (Windows)

name: MovingAFolderWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\SourceFolder destination: C:\MyFolder\destinationFolder

输入示例:使用源文件夹名称移动文件夹 (Linux)

name: MovingFolderWithSourceFolderNameLinux action: MoveFolder inputs: - source: /Sample/MyFolder/SampleFolder destination: /MyFolder/

输入示例:使用源文件夹名称移动文件夹 (Windows)

name: MovingFolderWithSourceFolderNameWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\

输入示例:使用通配符移动文件夹 (Linux)

name: MovingFoldersWithWildCardLinux action: MoveFolder inputs: - source: /Sample/MyFolder/Sample* destination: /MyFolder/

输入示例:使用通配符移动文件夹 (Windows)

name: MovingFoldersWithWildCardWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\Sample* destination: C:\MyFolder\

输入示例:在不覆盖的情况下移动文件夹 (Linux)

name: MovingFoldersWithoutOverwriteLinux action: MoveFolder inputs: - source: /Sample/MyFolder/SampleFolder destination: /MyFolder/destinationFolder overwrite: false

输入示例:在不覆盖的情况下移动文件夹 (Windows)

name: MovingFoldersWithoutOverwriteWindows action: MoveFolder inputs: - source: C:\Sample\MyFolder\SampleFolder destination: C:\MyFolder\destinationFolder overwrite: false

Output

无。

ReadFile

这些区域有:读取文件操作模块读取字符串类型的文本文件的内容。此模块可用于读取文件的内容,以便通过链接在后续步骤中使用或将数据读取到console.log文件。如果指定的路径是符号链接,则此模块将返回目标文件的内容。本模块仅支持文本文件。

如果文件编码值与默认编码不同 (utf-8) value,然后可以使用encoding选项。默认为utf-16utf-32假设使用小端编码。

默认情况下,此模块无法将文件内容打印到console.log文件。您可以通过将printFileContent财产到true.

此模块只能返回文件的内容。它无法解析文件,例如 Excel 或 JSON 文件。

发生以下情况时,操作模块会返回错误:

  • 该文件在运行时不存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用
encoding 编码标准。 字符串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LE utf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE, 和 utf-32-BE. 编码选项的值不区分大小写。
printFileContent 将文件内容打印到console.log文件。 Boolean false 不适用 是。

输入示例:读取文件 (Linux)

name: ReadingFileLinux action: ReadFile inputs: - path: /home/UserName/SampleFile.txt

输入示例:读取文件 (Windows)

name: ReadingFileWindows action: ReadFile inputs: - path: C:\Windows\WindowsUpdate.log

输入示例:读取文件并指定编码标准

name: ReadingFileWithFileEncoding action: ReadFile inputs: - path: /FolderName/SampleFile.txt encoding: UTF-32

输入示例:读取文件然后打印到console.log文件

name: ReadingFileToConsole action: ReadFile inputs: - path: /home/UserName/SampleFile.txt printFileContent: true
Output
字段 描述 Type
content 文件内容。 string

输出示例

{ "content" : "The file content" }

SetFileEncoding

这些区域有:设置文件编码操作模块修改现有文件的编码属性。此模块可以转换文件编码utf-8使用指定的编码标准。默认为utf-16utf-32假设是小端编码。

发生以下情况时,操作模块会返回错误:

  • 您没有执行指定的修改的权限。

  • 该文件在运行时不存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用
encoding 编码标准。 字符串 utf8 utf8utf-8utf16utf-16utf16-LEutf-16-LE utf16-BEutf-16-BEutf32utf-32utf32-LEutf-32-LEutf32-BE, 和 utf-32-BE. 编码选项的值不区分大小写。

输入示例:设置文件编码属性

name: SettingFileEncodingProperty action: SetFileEncoding inputs: - path: /home/UserName/SampleFile.txt encoding: UTF-16

Output

无。

SetFileOwner

这些区域有:设置文件所有者操作模块修改ownergroup现有文件的所有者属性。如果指定的文件是符号链接,模块将修改owner属性。Windows 平台不支持此模块。

本模块接受用户和组名称作为输入。如果未提供组名称,模块会将文件的组所有者分配给用户所属的组。

发生以下情况时,操作模块会返回错误:

  • 您没有执行指定的修改的权限。

  • 指定的用户或组名在运行时不存在。

  • 该文件在运行时不存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用 Windows 中不支持。
owner 用户名。 string 不适用 不适用 Windows 中不支持。
group 用户组的名称。 字符串 列出用户所属组的名称。 不适用 Windows 中不支持。

输入示例:在不指定用户组名称的情况下设置文件所有者属性

name: SettingFileOwnerPropertyNoGroup action: SetFileOwner inputs: - path: /home/UserName/SampleText.txt owner: LinuxUser

输入示例:通过指定所有者和用户组来设置文件所有者属性

name: SettingFileOwnerProperty action: SetFileOwner inputs: - path: /home/UserName/SampleText.txt owner: LinuxUser group: LinuxUserGroup

Output

无。

SetFolderOwner

这些区域有:setFolder 所有者操作模块递归地修改ownergroup现有文件夹的所有者属性。默认情况下,模块可以修改文件夹中所有内容的所有权。您可以将recursive选择false覆盖此行为。Windows 平台不支持此模块。

本模块接受用户和组名称作为输入。如果未提供组名称,模块会将文件的组所有者分配给用户所属的组。

发生以下情况时,操作模块会返回错误:

  • 您没有执行指定的修改的权限。

  • 指定的用户或组名在运行时不存在。

  • 运行时该文件夹不存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件夹路径。 字符串 不适用 不适用 Windows 中不支持。
owner 用户名。 string 不适用 不适用 Windows 中不支持。
group 用户组的名称。 字符串 列出用户所属组的名称。 不适用 Windows 中不支持。
recursive 当设置为时,将覆盖修改文件夹所有内容的所有权的默认行为false. Boolean true 不适用 Windows 中不支持。

输入示例:在不指定用户组名称的情况下设置文件夹所有者属性

name: SettingFolderPropertyWithOutGroup action: SetFolderOwner inputs: - path: /SampleFolder/ owner: LinuxUser

输入示例:设置文件夹所有者属性而不覆盖文件夹中所有内容的所有权

name: SettingFolderPropertyWithOutRecursively action: SetFolderOwner inputs: - path: /SampleFolder/ owner: LinuxUser recursive: false

输入示例:通过指定用户组的名称来设置文件所有权属性

name: SettingFolderPropertyWithGroup action: SetFolderOwner inputs: - path: /SampleFolder/ owner: LinuxUser group: LinuxUserGroup

Output

无。

SetFilePermissions

这些区域有:设置文件权限操作模块修改permissions已知文件。Windows 平台不支持此模块。

的输入permissions必须是字符串值。

此操作模块可以创建具有操作系统默认 umask 值定义的权限的文件。你必须设置umask值如果你想覆盖默认值。

发生以下情况时,操作模块会返回错误:

  • 您没有执行指定的修改的权限。

  • 该文件在运行时不存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件路径。 字符串 不适用 不适用 Windows 中不支持。
permissions 文件权限。 字符串 不适用 不适用 Windows 中不支持。

输入示例:修改文件权限

name: ModifyingFilePermissions action: SetFilePermissions inputs: - path: /home/UserName/SampleFile.txt permissions: 766

Output

无。

SetFolderPermissions

这些区域有:设置文件夹权限操作模块递归地修改permissions一个现有文件夹及其所有子文件和子文件夹。默认情况下,该模块可以修改指定文件夹中所有内容的权限。您可以将recursive选择false覆盖此行为。Windows 平台不支持此模块。

的输入permissions必须是字符串值。

此操作模块可以根据操作系统的默认 umask 值修改权限。你必须设置umask值如果你想覆盖默认值。

发生以下情况时,操作模块会返回错误:

  • 您没有执行指定的修改的权限。

  • 运行时该文件夹不存在。

  • 操作模块在执行操作时遇到错误。

Input
原语 描述 Type 必填 默认值 可接受的值 在所有平台上都支持
path 文件夹路径。 字符串 不适用 不适用 Windows 中不支持。
permissions 文件夹权限。 字符串 不适用 不适用 Windows 中不支持。
recursive 当设置为时,将覆盖修改文件夹所有内容的权限的默认行为false. Boolean true 不适用 Windows 中不支持。

输入示例:设置文件夹权限

name: SettingFolderPermissions action: SetFolderPermissions inputs: - path: SampleFolder/ permissions: 0777

输入示例:在不修改文件夹所有内容的权限的情况下设置文件夹权限

name: SettingFolderPermissionsNoRecursive action: SetFolderPermissions inputs: - path: /home/UserName/SampleFolder/ permissions: 777 recursive: false

Output

无。

软件安装操作

本节介绍执行软件安装操作命令和说明的操作模块。

IAM 要求

如果您的安装下载路径是 S3 URI,则与实例配置文件关联的 IAM 角色必须有权运行S3Download操作模块。要授予所需的权限,请附加S3:GetObject与实例配置文件关联的 IAM 角色的 IAM 策略,并指定存储桶的路径。例如, arn:aws:s3:::BucketName/*).

复杂的 MSI 输入

如果你的输入字符串包含双引号字符 ("),您必须使用以下方法之一以确保对它们进行正确解释:

  • 你可以在字符串外面使用单引号 (') 来包含它,也可以在字符串内使用双引号 (“),如以下示例所示。

    properties: COMPANYNAME: '"Acme ""Widgets"" and ""Gizmos."""'

    在这种情况下,如果你需要在字符串内使用撇号,你必须将其转义。这意味着在撇号之前使用另一个单引号 (')。

  • 你可以在字符串外面使用双引号 (“) 来包含它。你可以使用反斜杠字符转义字符串内的任何双引号 (\),如以下示例所示。

    properties: COMPANYNAME: "\"Acme \"\"Widgets\"\" and \"\"Gizmos.\"\"\""

这两种方法都传递值COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""msiexec命令。

软件安装操作模块

InstallMSI

这些区域有:InstallMSI操作模块使用 MSI 文件安装 Windows 应用程序。您可以使用本地路径、S3 对象 URI 或 Web URL 指定 MSI 文件。重新启动选项用于配置系统的重新启动行为。

EC2 TOE生成msiexec命令基于操作模块的输入参数。的值path(MSI 文件位置)和logFile(日志文件位置)输入参数必须用引号 (“) 括起来。

以下 MSI 退出代码被认为是成功的:

  • 0(成功)

  • 1614(错误 _ 产品 _ 已卸载)

  • 1641(已启动重启)

  • 3010(需要重启)

Input
原语 描述 Type 必填 默认值 可接受的值
path

使用下列选项之一指定 MSI 文件位置:

  • 本地文件路径。路径可以是相对路径。

  • 有效的 S3 对象 URI。

  • 遵循 RFC 3986 标准的有效网络 HTTP/HTTPS URL(推荐使用 HTTPS)。

允许链接表达式。

字符串 不适用 不适用
reboot

配置成功运行操作模块后的系统重启行为。

设置:

  • Force— 在msiexec命令运行成功。

  • Allow— 如果msiexec命令返回指示需要重新启动的退出代码。

  • Skip— 将信息性消息记录到console.log文件,指示已跳过重新启动。此选项可防止重新启动,即使msiexec命令返回指示需要重新启动的退出代码。

字符串 Allow Allow, Force, Skip
logOptions

指定用于 MSI 安装日志记录的选项。指定的标志将传递给 MSI 安装程序,以及/L启用日志记录的命令行参数。如果没有指定标志,EC2 TOE使用默认值。

有关 MSI 日志选项的更多信息,请参阅命令行选项在 MicrosoftWindows 安装程序产品文档。

字符串 *VX i,w,e,a,r,u,c,m,o,p,v,x,+,!,*
logFile

日志文件位置的绝对路径或相对路径。如果日志文件路径不存在,则会创建该文件路径。如果没有提供日志文件路径,EC2 TOE不存储 MSI 安装日志。

字符串 不适用 不适用
properties

MSI 记录属性键-值对,例如:TARGETDIR: "C:\target\location"

 

注意:不允许修改以下属性:

  • REBOOT="ReallySupress"

  • REINSTALLMODE="ecmus"

  • REINSTALL="ALL"

映射 [字符串] 字符串 不适用 不适用
ignoreAuthenticodeSignatureErrors

用于忽略路径中指定的安装程序的验证码签名验证错误的标记。这些区域有:Get-AuthenticodeSignature命令用于验证安装程序。

设置:

  • true— 忽略验证错误并运行安装程序。

  • false— 验证错误不会被忽略。只有在验证成功时,安装程序才会运行。这是默认行为。

Boolean false true, false
allowUnsignedInstaller

标记允许运行路径中指定的未签名安装程序。这些区域有:Get-AuthenticodeSignature命令用于验证安装程序。

设置:

  • true— 忽略NotSigned返回的状态Get-AuthenticodeSignature命令并运行安装程序。

  • false— 要求安装程序进行签名。未签名的安装程序将无法运行。这是默认行为。

Boolean false true, false

Examples

以下示例显示组件文档输入部分的变体,具体取决于安装路径。

输入示例:本地文档路径安装

- name: local-path-install steps: - name: LocalPathInstaller action: InstallMSI inputs: path: C:\sample.msi logFile: C:\msilogs\local-path-install.log logOptions: '*VX' reboot: Allow properties: COMPANYNAME: '"Amazon Web Services"' ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: true

输入示例:Amazon S3 路径安装

- name: s3-path-install steps: - name: S3PathInstaller action: InstallMSI inputs: path: s3://<bucket-name>/sample.msi logFile: s3-path-install.log reboot: Force ignoreAuthenticodeSignatureErrors: false allowUnsignedInstaller: true

输入示例:web 路径安装

- name: web-path-install steps: - name: WebPathInstaller action: InstallMSI inputs: path: https://<some-path>/sample.msi logFile: web-path-install.log reboot: Skip ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: false

Output

下面是一个输出的示例。InstallMSI操作模块。

{ "logFile": "web-path-install.log", "msiExitCode": 0, "stdout": "" }

UninstallMSI

这些区域有:UninstallMSI操作模块允许你使用 MSI 文件删除 Windows 应用程序。您可以使用本地文件路径、S3 对象 URI 或 Web URL 指定 MSI 文件位置。重新启动选项用于配置系统的重新启动行为。

EC2 TOE生成msiexec命令基于操作模块的输入参数。MSI 文件位置 (path) 和日志文件位置 (logFile) 在生成时明确地用双引号 (“) 括起来msiexec命令。

以下 MSI 退出代码被认为是成功的:

  • 0(成功)

  • 1605(错误 _ 未知 _ 产品)

  • 1614(错误 _ 产品 _ 已卸载)

  • 1641(已启动重启)

  • 3010(需要重启)

Input
原语 描述 Type 必填 默认值 可接受的值
path

使用下列选项之一指定 MSI 文件位置:

  • 本地文件路径。路径可以是相对路径。

  • 有效的 S3 对象 URI。

  • 遵循 RFC 3986 标准的有效网络 HTTP/HTTPS URL(推荐使用 HTTPS)。

允许链接表达式。

字符串 不适用 不适用
reboot

配置成功运行操作模块后的系统重启行为。

设置:

  • Force— 在msiexec命令运行成功。

  • Allow— 如果msiexec命令返回指示需要重新启动的退出代码。

  • Skip— 将信息性消息记录到console.log文件,指示已跳过重新启动。此选项可防止重新启动,即使msiexec命令返回指示需要重新启动的退出代码。

字符串 Allow Allow, Force, Skip
logOptions

指定用于 MSI 安装日志记录的选项。指定的标志将传递给 MSI 安装程序,以及/L启用日志记录的命令行参数。如果没有指定标志,EC2 TOE使用默认值。

有关 MSI 日志选项的更多信息,请参阅命令行选项在 MicrosoftWindows 安装程序产品文档。

字符串 *VX i,w,e,a,r,u,c,m,o,p,v,x,+,!,*
logFile

日志文件位置的绝对路径或相对路径。如果日志文件路径不存在,则会创建该文件路径。如果没有提供日志文件路径,EC2 TOE不存储 MSI 安装日志。

字符串 不适用 不适用
properties

MSI 记录属性键-值对,例如:TARGETDIR: "C:\target\location"

 

注意:不允许修改以下属性:

  • REBOOT="ReallySupress"

  • REINSTALLMODE="ecmus"

  • REINSTALL="ALL"

映射 [字符串] 字符串 不适用 不适用
ignoreAuthenticodeSignatureErrors

用于忽略路径中指定的安装程序的验证码签名验证错误的标记。这些区域有:Get-AuthenticodeSignature命令用于验证安装程序。

设置:

  • true— 忽略验证错误并运行安装程序。

  • false— 验证错误不会被忽略。只有在验证成功时,安装程序才会运行。这是默认行为。

Boolean false true, false
allowUnsignedInstaller

标记允许运行路径中指定的未签名安装程序。这些区域有:Get-AuthenticodeSignature命令用于验证安装程序。

设置:

  • true— 忽略NotSigned返回的状态Get-AuthenticodeSignature命令并运行安装程序。

  • false— 要求安装程序进行签名。未签名的安装程序将无法运行。这是默认行为。

Boolean false true, false

Examples

以下示例显示组件文档输入部分的变体,具体取决于安装路径。

输入示例:删除本地文档路径安装

- name: local-path-uninstall steps: - name: LocalPathUninstaller action: UninstallMSI inputs: path: C:\sample.msi logFile: C:\msilogs\local-path-uninstall.log logOptions: '*VX' reboot: Allow properties: COMPANYNAME: '"AWS"' ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: true

输入示例:删除 Amazon S3 路径安装

- name: s3-path-uninstall steps: - name: S3PathUninstaller action: UninstallMSI inputs: path: s3://<bucket-name>/sample.msi logFile: s3-path-uninstall.log reboot: Force ignoreAuthenticodeSignatureErrors: false allowUnsignedInstaller: true

输入示例:删除 Web 路径安装

- name: web-path-uninstall steps: - name: WebPathUninstaller action: UninstallMSI inputs: path: https://<some-path>/sample.msi logFile: web-path-uninstall.log reboot: Skip ignoreAuthenticodeSignatureErrors: true allowUnsignedInstaller: false

Output

下面是一个输出的示例。UninstallMSI操作模块。

{ "logFile": "web-path-uninstall.log", "msiExitCode": 0, "stdout": "" }

系统操作模块

以下部分介绍了执行文件系统操作命令和说明的操作模块。

系统操作模块

Reboot

Reboot 操作模块重新引导实例。它具有一个可配置的选项以延迟启动重新引导。默认为delaySeconds设置为0,这意味着没有延迟。重启操作模块不支持步骤超时,因为它不适用于重启实例时。

如果该应用程序是由系统管理器代理调用的,它将向退出代码 (3010对于 Windows,194对于 Linux)到系统管理器代理。Systems Manager 代理处理系统重新引导,如中所述。通过脚本重启托管实例.

如果该应用程序是在主机上作为单独进程调用的,它将保存当前执行状态,配置重新引导后自动运行触发器以在重新引导后重新运行该应用程序,然后重新引导系统。

重新引导后自动运行触发器:

  • Windows.EC2 TOE创建 Windows 任务计划程序条目,其触发器自动运行于SystemStartup

  • Linux的.EC2 TOE在 crontab 中添加一个在系统重新启动后自动运行的作业。

@reboot /download/path/awstoe run --document s3://bucket/key/doc.yaml

在该应用程序启动时,将清除该触发器。

Retries

默认情况下,最大重试次数设置为 SSMCommandRetryLimit. 如果重启次数超过重试限制,自动化将失败。您可以通过编辑 SSM 代理配置文件来更改限制 (Mds.CommandRetryLimit)。请参阅运行时配置在 SSM 代理开源中。

要使用 Reboot 操作模块,对于包含重新引导 exitcode 的步骤(例如,3010),您必须以 sudo user 形式运行应用程序二进制文件。

Input
原语 描述 Type 必需 默认值
delaySeconds 在启动重新引导之前延迟特定的时间。 整数

0

输入示例:重启步骤

name: RebootStep action: Reboot onFailure: Abort maxAttempts: 2 inputs: delaySeconds: 60

输出

无。

重启模块完成后,Image Builder 将继续执行生成中的下一步。

SetRegistry

SetRegistry 操作模块接受输入列表,用于设置指定注册表项的值。如果注册表项不存在,则会在定义的路径中创建该注册表项。该功能仅适用于 Windows。

Input
原语 描述 Type 必填
path 注册表项的路径。 字符串
name 注册表项的名称。 字符串
value 注册表项的值。 字符串/数字/数组
type 注册表项的值类型。 字符串

支持的路径前缀

  • HKEY_CLASSES_ROOT / HKCR:

  • HKEY_USERS / HKU:

  • HKEY_LOCAL_MACHINE / HKLM:

  • HKEY_CURRENT_CONFIG / HKCC:

  • HKEY_CURRENT_USER / HKCU:

支持的类型

  • BINARY

  • DWORD

  • QWORD

  • SZ

  • EXPAND_SZ

  • MULTI_SZ

输入示例:设置注册表项值

name: SetRegistryKeyValues action: SetRegistry maxAttempts: 3 inputs: - path: HKLM:\SOFTWARE\MySoftWare name: MyName value: FirstVersionSoftware type: SZ - path: HKEY_CURRENT_USER\Software\Test name: Version value: 1.1 type: DWORD

输出

无。

UpdateOS

UpdateOS 操作模块增加了对安装 Windows 和 Linux 更新的支持。

默认情况下,UpdateOS 操作模块安装所有可用的更新。您可以提供一个包括列表(要包括在安装中的一个或多个更新)以覆盖该操作。您还可以包括列表(要从安装中排除的一个或多个更新)。

如果同时提供了 “包括” 和 “排除” 列表,则结果更新列表只能包括在 “包括” 列表中列出但在 “排除” 列表中未列出的那些更新。

  • Windows。更新是从目标计算机上配置的更新源中安装的。

  • Linux。该应用程序检查 Linux 平台中支持的软件包管理器,并使用 yumapt-get 软件包管理器。如果不支持这两个软件包管理器,则会返回错误。您应该具有sudo运行UpdateOS操作模块。如果您没有 sudo 权限,则会返回 error.Input

Input
原语 描述 Type 必填
include

对于 Windows,您可以指定以下设置:

  • 要包括在可以安装的更新列表中的一个或多个 Microsoft 知识库 (KB) 文章 ID。有效的格式为 KB12345671234567

  • 使用通配符值的更新名称 (*)。有效的格式为 Security**Security*

对于 Linux,您可以指定一个或多个要包括在要安装的更新列表中的软件包。

字符串列表
exclude

对于 Windows,您可以指定以下设置:

  • 要包括在要从安装中排除的更新列表中的一个或多个 Microsoft 知识库 (KB) 文章 ID。有效的格式为 KB12345671234567

  • 使用通配符的更新名称 (*) 值。有效的格式为:Security**Security*

对于 Linux,您可以指定一个或多个要从安装更新列表中排除的软件包。

字符串列表

输入示例:添加对安装 Linux 更新的支持

name: UpdateMyLinux action: UpdateOS onFailure: Abort maxAttempts: 3 inputs: exclude: - ec2-hibinit-agent

输入示例:添加对安装 Windows 更新的支持

name: UpdateWindowsOperatingSystem action: UpdateOS onFailure: Abort maxAttempts: 3 inputs: include: - KB1234567 - '*Security*'

输出

无。