本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
EC2 TOE组件管理器支持的操作模块
映像构建服务(例如 EC2 Image Builder)使用EC2 TOE操作模块来帮助配置用于构建和测试自定义机器映像的 EC2 实例。本节介绍常用EC2 TOE操作模块的功能以及如何配置它们,包括示例。
EC2 TOE组件是使用纯文本 YAML 文档编写的。有关文档语法的更多信息,请参阅在中使用组件文档EC2 TOE。
注意
所有操作模块在运行时都使用与Systems Manager 代理相同的帐户,root
在 Linux 和 WindowsNT Authority\SYSTEM
上。
通用执行模块
下一节包含执行一般执行命令和指令的操作模块的详细信息。
ExecuteBash
ExecuteBash操作模块允许您使用内联 shell 代码/命令运行 bash 脚本。该模块支持 Linux。
您在命令块中指定的所有命令和指令都将转换为文件(例如,input.sh
)并使用 bash shell 运行。运行 shell 文件的结果是该步骤的退出代码。
如果脚本退出时退出代码为,则ExecuteBash模块会处理系统重启194
。启动后,应用程序将执行以下操作之一:
-
如果应用程序由 Systems Manager 代理运行,则会将退出代码交给调用者。Systems Manager 代理处理系统重启,并运行启动重启的相同步骤,如从脚本重启托管实例中所述。
-
应用程序保存当前
executionstate
,配置重新启动触发器以重新运行应用程序,然后重新启动系统。
系统重启后,应用程序将运行启动重启的相同步骤。如果需要使用该功能,您必须编写幂等脚本以处理多次调用同一 Shell 命令的操作。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
commands |
包含按照 bash 语法运行的指令或命令列表。允许使用多行 YAML。 | List | 是 |
输入示例:重启之前和之后
name: ExitCode194Example description: This shows how the exit code can be used to restart a system with ExecuteBash schemaVersion: 1.0 phases: - name: build steps: - name: RestartTrigger action: ExecuteBash inputs: commands: - | REBOOT_INDICATOR=/var/tmp/reboot-indicator if [ -f "${REBOOT_INDICATOR}" ]; then echo 'The reboot file exists. Deleting it and exiting with success.' rm "${REBOOT_INDICATOR}" exit 0 fi echo 'The reboot file does not exist. Creating it and triggering a restart.' touch "${REBOOT_INDICATOR}" exit 194
输出 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
字段 | 描述 | 类型 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stdout |
命令执行的标准输出。 | 字符串 |
如果您启动重启并返回退出代码194
作为操作模块的一部分,则构建将在启动重启的同一操作模块步骤中恢复。如果您在没有退出代码的情况下开始重启,则生成过程可能会失败。
输出示例:重启之前(第一次浏览文档)
{ “stdout”: “The reboot file does not exist. Creating it and triggering a restart." }
输出示例:重启后,(第二次浏览文档)
{ “stdout”: “The reboot file exists. Deleting it and exiting with success." }
ExecuteBinary
ExecuteBinary操作模块允许您运行带有命令行参数列表的二进制文件。
如果二进制文件以194
(Linux) 或3010
(Windows) 的退出代码退出,则ExecuteBinary模块会处理系统重启。发生这种情况时,应用程序将执行以下操作之一:
-
如果应用程序由 Systems Manager 代理运行,则会将退出代码交给调用者。Systems Manager 代理处理系统的重启,并运行启动重启的相同步骤,如从脚本重启托管实例中所述。
-
应用程序保存当前
executionstate
,配置重新启动触发器以重新运行应用程序,然后重新启动系统。
系统重新启动后,应用程序将运行启动重启的相同步骤。如果需要使用该功能,您必须编写幂等脚本以处理多次调用同一 Shell 命令的操作。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
要执行的二进制文件的路径。 | 字符串 | 是 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
arguments |
包含运行二进制文件时要使用的命令行参数列表。 | 字符串列表 | 否 |
输入示例:安装.NET
name: "InstallDotnet" action: ExecuteBinary inputs: path: C:\PathTo\dotnet_installer.exe arguments: - /qb - /norestart
输出 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
字段 | 描述 | 类型 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stdout |
命令执行的标准输出。 | 字符串 |
输出示例
{ "stdout": "success" }
ExecuteDocument
ExecuteDocument操作模块增加了对嵌套组件文档的支持,可从一个文档运行多个组件文档。 EC2 TOE在运行时验证输入参数中传递的文档。
Restrictions
-
此操作模块运行一次,不允许重试,也没有设置超时限制的选项。ExecuteDocument设置以下默认值,如果您尝试更改这些值,则会返回错误。
-
timeoutSeconds
: -1 -
maxAttempts
:1
注意
您可以将这些值留空,并EC2 TOE使用默认值。
-
-
允许文档嵌套,最多可嵌套三层,但不能超过此深度。三层嵌套可转化为四个文档级别,因为顶层没有嵌套。在这种情况下,最低级别的文档不得调用任何其他文档。
-
不允许循环执行组件文档。任何在循环结构之外调用自身的文档,或者调用当前执行链中上层的另一个文档的文档,都会启动一个可能导致无限循环的循环。当EC2 TOE检测到循环执行时,它会停止执行并记录失败。

如果组件文档试图自行运行,或者尝试运行当前执行链中位于较高位置的任何组件文档,则执行失败。
输入
原语 | 描述 | 类型 | 必填 |
---|---|---|---|
document |
组件文档的路径。有效选项包括:
|
字符串 | 是 |
document-s3-bucket-owner |
存储组件文档的 S3 桶的 S3 桶拥有者的账户 ID。(如果您在组件文档中使用 S3 URI,则推荐使用。) |
字符串 | 否 |
phases |
要在组件文档中运行的阶段,以逗号分隔的列表形式表示。如果未指定任何阶段,则所有阶段都将运行。 |
字符串 | 否 |
parameters |
在运行时作为键值对传递给组件文档的输入参数。 |
参数映射列表 | 否 |
参数映射输入
原语 | 描述 | 类型 | 必填 |
---|---|---|---|
name |
要传递给ExecuteDocument操作模块正在运行的组件文档的输入参数的名称。 |
字符串 | 是 |
value |
输入参数的值。 |
字符串 | 是 |
输入示例
以下示例显示了组件文档输入的变体,具体取决于您的安装路径。
输入示例:本地文档路径
# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument inputs: document: Sample-1.yaml phases: build parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2
输入示例:作为文档路径的 S3 URI
# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument inputs: document: s3://my-bucket/Sample-1.yaml document-s3-bucket-owner: 123456789012 phases: build,validate parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2
输入示例:EC2 Image Builder 组件 ARN 作为文档路径
# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument inputs: document: arn:aws:imagebuilder:us-west-2:aws:component/Sample-Test/1.0.0 phases: test parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2
使用 ForEach 循环运行文档
# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument loop: name: 'myForEachLoop' forEach: - Sample-1.yaml - Sample-2.yaml inputs: document: "{{myForEachLoop.value}}" phases: test parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2
使用 For 循环运行文档
# main.yaml schemaVersion: 1.0 phases: - name: build steps: - name: ExecuteNestedDocument action: ExecuteDocument loop: name: 'myForLoop' for: start: 1 end: 2 updateBy: 1 inputs: document: "Sample-{{myForLoop.value}}.yaml" phases: test parameters: - name: parameter-1 value: value-1 - name: parameter-2 value: value-2
输出
EC2 TOEdetailedoutput.json
每次运行时都会创建一个名为的输出文件。该文件包含有关在运行时调用的每个组件文档的每个阶段和步骤的详细信息。对于ExecuteDocument操作模块,可以在outputs
字段中找到简短的运行时摘要,以及有关其在中运行的阶段、步骤和文档的详细信息detailedOutput
。
"outputs": "[{\"executedStepCount\":1,\"executionId\":\"97054e22-06cc-11ec-9b14-acde48001122\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]",
每个组件文档的输出摘要对象都包含以下详细信息以及示例值,如下所示:
-
executedStepCount“: 1
-
“executionID”: “12345a67-89bc-01de-2f34-abcd56789012"
-
failedStepCount“”: 0
-
“FailureMessage”: "”
-
“ignoredFailedStep计数”: 0
-
“LogUrl”: "”
-
“状态”: “成功”
输出示例
以下示例显示了嵌套执行时ExecuteDocument操作模块的输出。在此示例中,main.yaml
组件文档成功运行了Sample-1.yaml
组件文档。
{ "executionId": "12345a67-89bc-01de-2f34-abcd56789012", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "documents": [ { "name": "", "filePath": "main.yaml", "status": "success", "description": "", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "phases": [ { "name": "build", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "steps": [ { "name": "ExecuteNestedDocument", "status": "success", "failureMessage": "", "timeoutSeconds": -1, "onFailure": "Abort", "maxAttempts": 1, "action": "ExecuteDocument", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "inputs": "[{\"document\":\"Sample-1.yaml\",\"document-s3-bucket-owner\":\"\",\"phases\":\"\",\"parameters\":null}]", "outputs": "[{\"executedStepCount\":1,\"executionId\":\"98765f43-21ed-09cb-8a76-fedc54321098\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]", "loop": null, "detailedOutput": [ { "executionId": "98765f43-21ed-09cb-8a76-fedc54321098", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "documents": [ { "name": "", "filePath": "Sample-1.yaml", "status": "success", "description": "", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "phases": [ { "name": "build", "status": "success", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "failureMessage": "", "steps": [ { "name": "ExecuteBashStep", "status": "success", "failureMessage": "", "timeoutSeconds": 7200, "onFailure": "Abort", "maxAttempts": 1, "action": "ExecuteBash", "startTime": "2021-08-26T17:20:31-07:00", "endTime": "2021-08-26T17:20:31-07:00", "inputs": "[{\"commands\":[\"echo \\\"Hello World!\\\"\"]}]", "outputs": "[{\"stdout\":\"Hello World!\"}]", "loop": null, "detailedOutput": null }] }] }] }] }] }] }] }
ExecutePowerShell
ExecutePowerShell操作模块允许您使用内联 shell 代码/命令运行 PowerShell 脚本。此模块支持 Windows 平台和 Windows PowerShell。
命令块中指定的所有命令/指令都转换为脚本文件(例如input.ps1
),并使用 Windows 运行PowerShell。运行 shell 文件的结果是退出代码。
如果 shell 命令退出时退出代码为,则ExecutePowerShell模块会处理系统重启3010
。启动后,应用程序将执行以下操作之一:
-
如果由Systems Manager 代理运行,则将退出代码交给调用者。Systems Manager 代理处理系统重启,并运行启动重启的相同步骤,如从脚本重启托管实例中所述。
-
保存电流
executionstate
,配置重新启动触发器以重新运行应用程序,然后重新启动系统。
系统重启后,应用程序将运行启动重启的相同步骤。如果需要使用该功能,您必须编写幂等脚本以处理多次调用同一 Shell 命令的操作。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
commands |
包含按PowerShell 语法运行的指令或命令列表。允许使用多行 YAML。 | 字符串列表 | 是。必须指定 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
file |
包含 PowerShell 脚本文件的路径。 PowerShell 将使用-file 命令行参数针对此文件运行。路径必须指向 .ps1 文件。 |
字符串 | 是。必须指定 |
输入示例:重启之前和之后
name: ExitCode3010Example description: This shows how the exit code can be used to restart a system with ExecutePowerShell schemaVersion: 1.0 phases: - name: build steps: - name: RestartTrigger action: ExecutePowerShell inputs: commands: - | $rebootIndicator = Join-Path -Path $env:SystemDrive -ChildPath 'reboot-indicator' if (Test-Path -Path $rebootIndicator) { Write-Host 'The reboot file exists. Deleting it and exiting with success.' Remove-Item -Path $rebootIndicator -Force | Out-Null [System.Environment]::Exit(0) } Write-Host 'The reboot file does not exist. Creating it and triggering a restart.' New-Item -Path $rebootIndicator -ItemType File | Out-Null [System.Environment]::Exit(3010)
输出 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
字段 | 描述 | 类型 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stdout |
命令执行的标准输出。 | 字符串 |
如果您运行重启并返回退出代码3010
作为操作模块的一部分,则构建将在启动重启的同一操作模块步骤中恢复。如果您在没有退出代码的情况下运行重启,则生成过程可能会失败。
输出示例:重启之前(第一次浏览文档)
{ “stdout”: “The reboot file does not exist. Creating it and triggering a restart." }
输出示例:重启后,(第二次浏览文档)
{ “stdout”: “The reboot file exists. Deleting it and exiting with success." }
文件下载和上传模块
以下部分包含执行下载和上传命令和指令的操作模块的详细信息。
下载和上传操作模块
S3Download
使用S3Download
操作模块,您可以将 Amazon S3 对象或一组对象下载到您使用destination
路径指定的本地文件或文件夹。如果指定位置已存在任何文件,并且该overwrite
标志设置为 true,则S3Download
会覆盖该文件。
您的source
位置可以指向 Amazon S3 中的特定对象,也可以使用带有星号通配符 (*
) 的key prefix 来下载一组与key prefix 路径匹配的对象。当您在您的source
位置指定key prefix 时,S3Download
操作模块会下载与该前缀匹配的所有内容(包括文件和文件夹)。确保key prefix 以正斜杠结尾,后跟星号 (/*
),这样您就可以下载与该前缀匹配的所有内容。例如:
。s3://my-bucket/my-folder/*
注意
目标路径中的所有文件夹在下载之前都必须存在,否则下载会失败。
如果在下载期间对指定key prefix 的S3Download
操作失败,则文件夹内容不会回滚到失败之前的状态。目标文件夹保持故障时的状态。
支持的用例
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
。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 |
描述 |
类型 |
必需 |
默认值 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
作为您下载源的 Amazon S3 存储桶。您可以指定特定对象的路径,或者使用以正斜杠结尾的key prefix,后跟星号通配符 ( |
字符串 |
是 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
下载 Amazon S3 对象的本地路径。要下载单个文件,您必须将文件名指定为路径的一部分。例如, |
字符串 |
是 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
字符串 |
否 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
设置为 true 时,如果指定本地路径的目标文件夹中已存在同名文件,则下载文件将覆盖本地文件。如果设置为 false,则可以保护本地系统上的现有文件不被覆盖,并且操作模块因下载错误而失败。 例如, |
布尔值 |
否 |
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 的 Simple StorAmazon S3 ervice StoragAmazon S3 ervice Storage Service Storage Service 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
输出
无。
S3Upload
使用 S3Uplo ad 操作模块,您可以将文件从源文件或文件夹上传到 Amazon S3 位置。您可以在为源位置指定的路径中使用通配符 (*
) 来上传所有路径与通配符模式匹配的文件。
如果递归 S3Uplo ad 操作失败,则任何已经上传的文件都将保留在目标 Amazon S3 存储桶中。
支持的用例
-
Amazon S3 对象的本地文件。
-
文件夹(带通配符)中的本地文件为 Amazon S3 key prefix。
-
将本地文件夹(必须
recurse
设置为true
)复制到 Amazon S3 key prefix。
IAM 要求
您与实例配置文件关联的 IAM 角色必须具有运行S3Upload
操作模块的权限。以下 IAM 策略必须附加到与实例配置文件关联的 IAM 角色的 IAM policy policy。该策略必须向目标 Amazon S3 存储桶授予s3:PutObject
权限。例如, arn:aws:s3:::
).BucketName
/*
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 |
描述 |
类型 |
必需 |
默认值 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
源文件/文件夹的来源本地路径。 |
字符串 |
是 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
上传源文件/文件夹的目标 Amazon S3 桶的路径。 |
字符串 |
是 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
如果设置为 |
字符串 |
否 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
目标路径中指定的 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 的 Simple Storage ServicAmazon S3 ervice Service 此示例不复制子文件夹或其内容,因为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 的 Simple Storage Service StoragAmazon S3 Storage Service
name: MyS3UploadFolder action: S3Upload onFailure: Abort maxAttempts: 3 inputs: - source: C:\
myfolder\*
destination: s3://mybucket/path/to/
recurse:true
expectedBucketOwner:123456789022
输出
无。
WebDownload
WebDownload操作模块允许您通过 HTTP/HTTPS 协议(建议使用 HTTPS)从远程位置下载文件和资源。对下载的数量或大小没有限制。该模块处理重试和指数退避逻辑。
根据用户的输入,每次下载操作最多可尝试 5 次才能成功。这些尝试不同于文档maxAttempts
字段中指定的尝试steps
,后者与操作模块故障有关。
此操作模块隐式处理重定向。除外,所有 HTTP 状态码都会导致错误。200
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必需 | 默认值 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source |
有效的 HTTP/HTTP S 网址(建议使用 HTTPS),它遵循 RFC 3986 标准。允许使用链式的表达式。 | 字符串 |
是 |
不适用 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
destination |
本地系统上的绝对或相对文件或文件夹路径。文件夹路径必须以结尾/ 。如果它们不以结尾/ ,则它们将被视为文件路径。该模块为成功下载创建任何必需的文件或文件夹。允许使用链式的表达式。 |
字符串 | 是 | 不适用 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
启用后,使用下载的文件或资源覆盖本地系统上的所有现有文件。未启用时,本地系统上的任何现有文件都不会被覆盖,并且操作模块会因错误而失败。启用 overwrite 并指定了校验和和算法后,只有在校验和与任何先前存在文件的哈希值不匹配时,操作模块才会下载文件。 | 布尔值 | 否 | true |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
checksum |
当您指定校验和时,将根据所提供的算法生成的下载文件的哈希值对其进行检查。要启用文件验证,必须同时提供校验和和算法。允许使用链式的表达式。 | 字符串 | 否 | 不适用 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
algorithm |
用于计算校验和的算法。选项包括 MD5、SHA1、SHA256 和 SHA512。要启用文件验证,必须同时提供校验和和算法。允许使用链式的表达式。 | 字符串 | 否 | 不适用 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ignoreCertificateErrors |
启用 SSL 证书验证后,将被忽略。 | 布尔值 | 否 | false |
输出 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
AppendFile操作模块将指定内容添加到文件的先前存在的内容中。
如果文件编码值与默认编码 (utf-8
) 值不同,则可以使用encoding
选项指定文件编码值。默认情况下utf-32
,假定utf-16
和使用小端编码。
发生以下情况时,操作模块会返回错误:
-
指定的文件在运行时不存在。
-
您没有修改文件内容的写入权限。
-
模块在文件操作期间遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
content |
要附加到文件的内容。 | 字符串 | 否 | 空字符串 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
encoding |
编码标准。 | 字符串 | 否 | utf8 |
utf8 、utf-8 utf16 、utf-16 、utf16-LE 、utf-16-LE utf16-BE 、utf-16-BE utf32 、utf-32 、utf32-LE 、utf-32-LE utf32-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
输出
无。
CopyFile
CopyFile操作模块将文件从指定源复制到指定目标。默认情况下,如果目标文件夹在运行时不存在,则模块会递归地创建目标文件夹。
如果指定文件夹中已存在具有指定名称的文件,则默认情况下,操作模块会覆盖现有文件。您可以通过将覆盖选项设置为来覆盖此默认行为false
。如果将 overwrite 选项设置为,并且在指定位置已经存在具有指定名称的文件,则操作模块将返回错误。false
此选项与 Linux 中的cp
命令相同,默认情况下会覆盖。
源文件名可以包含通配符 (*
)。只有在最后一个文件路径分隔符(/
或\
)之后才接受通配符。如果源文件名中包含通配符,则与通配符匹配的所有文件都将复制到目标文件夹。如果要使用通配符移动多个文件,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾,这表示目标输入是文件夹。
如果目标文件名不同于源文件名,则可以使用destination
选项指定目标文件名。如果未指定目标文件名,则使用源文件的名称来创建目标文件。最后一个文件路径分隔符(/
或\
)之后的任何文本都被视为文件名。如果要使用与源文件相同的文件名,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾。
发生以下情况时,操作模块会返回错误:
-
您无权在指定文件夹中创建文件的权限。
-
源文件在运行时不存在。
-
已经存在一个具有指定文件名的文件夹,并且该
overwrite
选项设置为false
。 -
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source |
源文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
destination |
目标文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
如果设置为 false,则在指定位置已存在具有指定名称的文件时,不会替换目标文件。 | 布尔值 | 否 | 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
输出
无。
CopyFolder
CopyFolder操作模块将文件夹从指定源复制到指定目标。该source
选项的输入是要复制的文件夹,该destination
选项的输入是复制源文件夹内容的文件夹。默认情况下,如果目标文件夹在运行时不存在,则模块会递归地创建目标文件夹。
如果指定文件夹中已存在具有指定名称的文件夹,则默认情况下,操作模块会覆盖现有文件夹。您可以通过将覆盖选项设置为来覆盖此默认行为false
。如果将 overwrite 选项设置为,并且在指定位置已经存在具有指定名称的文件夹,则操作模块将返回错误。false
源文件夹名称可以包含通配符 (*
)。只有在最后一个文件路径分隔符(/
或\
)之后才接受通配符。如果源文件夹名称中包含通配符,则与通配符匹配的所有文件夹都将复制到目标文件夹。如果要使用通配符复制多个文件夹,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾,这表示目标输入是文件夹。
如果目标文件夹名称与源文件夹名称不同,则可以使用destination
选项指定目标文件夹的名称。如果未指定目标文件夹名称,则使用源文件夹的名称来创建目标文件夹。最后一个文件路径分隔符(/
或\
)之后的任何文本都被视为文件夹名称。如果要使用与源文件夹相同的文件夹名称,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾。
发生以下情况时,操作模块会返回错误:
-
您无权在指定文件夹中创建文件夹。
-
源文件夹在运行时不存在。
-
已经存在一个具有指定文件夹名称的文件夹,并且该
overwrite
选项设置为false
。 -
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source |
源文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
destination |
目标文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
如果设置为 false,则在指定位置已存在具有指定名称的文件夹时,不会替换目标文件夹。 | 布尔值 | 否 | 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
输出
无。
CreateFile
CreateFile操作模块在指定位置创建文件。默认情况下,如果需要,该模块还会递归地创建父文件夹。
如果文件已存在于指定文件夹中,则默认情况下,操作模块会截断或覆盖现有文件。您可以通过将覆盖选项设置为来覆盖此默认行为false
。如果将 overwrite 选项设置为,并且在指定位置已经存在具有指定名称的文件,则操作模块将返回错误。false
如果文件编码值与默认编码 (utf-8
) 值不同,则可以使用encoding
选项指定文件编码值。默认情况下utf-32
,假定utf-16
和使用小端编码。
owner
group
、和permissions
是可选输入。的输入permissions
必须是字符串值。如果未提供文件,则使用默认值创建文件。Windows 平台不支持这些选项。如果在 Windows 平台上使用、和permissions
选项owner
group
,则此操作模块将验证并返回错误。
此操作模块可以创建一个文件,其权限由操作系统的默认umask
值定义。如果要覆盖默认umask
值,则必须设置该值。
发生以下情况时,操作模块会返回错误:
-
您无权在指定的父文件夹中创建文件或文件夹。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
content |
文件的内容。 | 字符串 | 否 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
encoding |
编码标准。 | 字符串 | 否 | utf8 |
utf8 、utf-8 utf16 、utf-16 、utf16-LE 、utf-16-LE utf16-BE 、utf-16-BE utf32 、utf-32 、utf32-LE 、utf-32-LE utf32-BE 、和 utf-32-BE 。编码选项的值不区分大小写。 |
是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
owner |
用户名称或。 | 字符串 | 否 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
group |
组名称或。 | 字符串 | 否 | 当前用户。 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
permissions |
文件权限。 | 字符串 | 否 | 0666 |
不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
如果指定文件的名称已经存在,则默认情况下,将此值设置为false 可防止文件被截断或覆盖。 |
布尔值 | 否 | 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
输入示例:创建一个空文件以跳过 Linux 清理脚本中的某一部分
name: CreateSkipCleanupfile action: CreateFile inputs: - path:
<skip section file name>
有关更多信息,请参阅重写 Linux 清理脚本
输出
无。
CreateFolder
CreateFolder操作模块在指定位置创建文件夹。默认情况下,如果需要,该模块还会递归地创建父文件夹。
如果该文件夹已存在于指定文件夹中,则默认情况下,操作模块会截断或覆盖现有文件夹。您可以通过将覆盖选项设置为来覆盖此默认行为false
。如果将 overwrite 选项设置为,并且在指定位置已经存在具有指定名称的文件夹,则操作模块将返回错误。false
owner
group
、和permissions
是可选输入。的输入permissions
必须是字符串值。Windows 平台不支持这些选项。如果在 Windows 平台上使用、和permissions
选项owner
group
,则此操作模块将验证并返回错误。
此操作模块可以创建一个文件夹,其权限由操作系统的默认umask
值定义。如果要覆盖默认umask
值,则必须设置该值。
发生以下情况时,操作模块会返回错误:
-
您无权在指定位置创建文件夹。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
owner |
用户名称或。 | 字符串 | 否 | 当前用户。 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
group |
组名称或。 | 字符串 | 否 | 当前用户的组。 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
permissions |
文件夹的权限。 | 字符串 | 否 | 0777 |
不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
如果指定文件的名称已经存在,则默认情况下,将此值设置为false 可防止文件被截断或覆盖。 |
布尔值 | 否 | 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
输出
无。
CreateSymlink
CreateSymlink操作模块创建符号链接或包含对另一个文件的引用的文件。Windows 平台不支持此模块。
path
和target
选项的输入可以是绝对路径,也可以是相对路径。如果该path
选项的输入是相对路径,则在创建链接时会将其替换为绝对路径。
默认情况下,当指定文件夹中已存在具有指定名称的链接时,操作模块会返回错误。您可以通过将force
选项设置为来覆盖此默认行为true
。当该force
选项设置为时true
,模块将覆盖现有链接。
如果父文件夹不存在,则默认情况下,操作模块以递归方式创建该文件夹。
发生以下情况时,操作模块会返回错误:
-
目标文件在运行时不存在。
-
具有指定名称的非符号链接文件已经存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
target |
符号链接指向的目标文件路径。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
force |
当已存在具有相同名称的链接时,强制创建链接。 | 布尔值 | 否 | 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
输出
无。
DeleteFile
DeleteFile操作模块删除指定位置的一个或多个文件。
的输入path
应该是有效的文件路径或文件名中带有通配符 (*
) 的文件路径。在文件名中指定通配符后,将删除同一文件夹中与通配符匹配的所有文件。
发生以下情况时,操作模块会返回错误:
-
您无权执行删除操作。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
输入示例:删除以 “日志” 结尾的文件 (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\*
输出
无。
DeleteFolder
DeleteFolder操作模块删除文件夹。
如果该文件夹不为空,则必须将force
选项设置true
为删除该文件夹及其内容。如果您未将该force
选项设置为true
,并且您要删除的文件夹不为空,则操作模块会返回错误。该force
选项的默认值为false
。
发生以下情况时,操作模块会返回错误:
-
您无权执行删除操作。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
force |
无论该文件夹是否为空,都将删除该文件夹。 | 布尔值 | 否 | false |
不适用 | 是 |
输入示例:使用force
选项删除非空文件夹 (Linux)
name: DeletingFolderWithForceOptionLinux action: DeleteFolder inputs: - path: /Sample/MyFolder/Sample/ force: true
输入示例:使用force
选项删除非空文件夹 (Windows)
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\
输出
无。
ListFiles
ListFiles操作模块列出了指定文件夹中的文件。当递归选项设置为时true
,它会列出子文件夹中的文件。默认情况下,此模块不列出子文件夹中的文件。
要列出名称与指定模式匹配的所有文件,请使用fileNamePattern
选项提供模式。该fileNamePattern
选项接受通配符 (*
) 值。提供后fileNamePattern
,将返回与指定文件名格式匹配的所有文件。
发生以下情况时,操作模块会返回错误:
-
指定的文件夹在运行时不存在。
-
您无权在指定的父文件夹中创建文件或文件夹。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fileNamePattern |
要匹配的模式列出名称与该模式相匹配的所有文件。 | 字符串 | 否 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
recursive |
以递归方式列出文件夹中的文件。 | 布尔值 | 否 | 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
输入示例:列出以 “日志” 结尾的文件 (Windows)
name: ListingFilesWithEndingWithLogWindows action: ListFiles inputs: - path: C:\Sample\MyFolder\ fileNamePattern: *log
输入示例:递归列出文件
name: ListingFilesRecursively action: ListFiles inputs: - path: /Sample/MyFolder/ recursive: true
输出 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
files |
文件列表。 | 字符串 |
输出示例
{ "files": "/sample1.txt,/sample2.txt,/sample3.txt" }
MoveFile
MoveFile操作模块将文件从指定源移动到指定目的地。
如果文件已存在于指定文件夹中,则默认情况下,操作模块会覆盖现有文件。您可以通过将覆盖选项设置为来覆盖此默认行为false
。如果将 overwrite 选项设置为,并且在指定位置已经存在具有指定名称的文件,则操作模块将返回错误。false
此选项与 Linux 中的mv
命令相同,默认情况下会覆盖。
源文件名可以包含通配符 (*
)。只有在最后一个文件路径分隔符(/
或\
)之后才接受通配符。如果源文件名中包含通配符,则与通配符匹配的所有文件都将复制到目标文件夹。如果要使用通配符移动多个文件,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾,这表示目标输入是文件夹。
如果目标文件名不同于源文件名,则可以使用destination
选项指定目标文件名。如果未指定目标文件名,则使用源文件的名称来创建目标文件。最后一个文件路径分隔符(/
或\
)之后的任何文本都被视为文件名。如果要使用与源文件相同的文件名,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾。
发生以下情况时,操作模块会返回错误:
-
您无权在指定文件夹中创建文件的权限。
-
源文件在运行时不存在。
-
已经存在一个具有指定文件名的文件夹,并且该
overwrite
选项设置为false
。 -
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source |
源文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
destination |
目标文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
如果设置为 false,则在指定位置已存在具有指定名称的文件时,不会替换目标文件。 | 布尔值 | 否 | 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
输出
无。
MoveFolder
MoveFolder操作模块将文件夹从指定源移动到指定目的地。该source
选项的输入是要移动的文件夹,该destination
选项的输入是移动源文件夹内容的文件夹。
如果目标父文件夹或destination
选项的输入在运行时不存在,则该模块的默认行为是在指定的目标位置递归地创建文件夹。
如果目标文件夹中已经存在与源文件夹相同的文件夹,则默认情况下,操作模块会覆盖现有文件夹。您可以通过将覆盖选项设置为来覆盖此默认行为false
。如果将 overwrite 选项设置为,并且在指定位置已经存在具有指定名称的文件夹,则操作模块将返回错误。false
源文件夹名称可以包含通配符 (*
)。只有在最后一个文件路径分隔符(/
或\
)之后才接受通配符。如果源文件夹名称中包含通配符,则与通配符匹配的所有文件夹都将复制到目标文件夹。如果要使用通配符移动多个文件夹,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾,这表示目标输入是文件夹。
如果目标文件夹名称与源文件夹名称不同,则可以使用destination
选项指定目标文件夹的名称。如果未指定目标文件夹名称,则使用源文件夹的名称来创建目标文件夹。最后一个文件路径分隔符(/
或\
)之后的任何文本都被视为文件夹名称。如果要使用与源文件夹相同的文件夹名称,则该destination
选项的输入必须以文件路径分隔符(/
或\
)结尾。
发生以下情况时,操作模块会返回错误:
-
您无权在目标文件夹中创建文件夹。
-
源文件夹在运行时不存在。
-
已经存在一个具有指定名称的文件夹,并且该
overwrite
选项设置为false
。 -
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source |
源文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
destination |
目标文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overwrite |
如果设置为 false,则在指定位置已存在具有指定名称的文件夹时,不会替换目标文件夹。 | 布尔值 | 否 | 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
输出
无。
ReadFile
ReadFile操作模块读取字符串类型的文本文件的内容。该模块可用于读取文件的内容,以便通过链接在后续步骤中使用,也可以用于将数据读取到console.log
文件中。如果指定的路径是符号链接,则此模块返回目标文件的内容。该模块仅支持文本文件。
如果文件编码值与默认编码 (utf-8
) 值不同,则可以使用encoding
选项指定文件编码值。默认情况下utf-32
,假定utf-16
和使用小端编码。
默认情况下,此模块无法将文件内容打印到console.log
文件中。您可以通过将该printFileContent
属性设置为来覆盖此设置true
。
该模块只能返回文件的内容。它无法解析文件,例如 Excel 或 JSON 文件。
发生以下情况时,操作模块会返回错误:
-
该文件在运行时不存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
encoding |
编码标准。 | 字符串 | 否 | utf8 |
utf8 、utf-8 utf16 、utf-16 、utf16-LE 、utf-16-LE utf16-BE 、utf-16-BE utf32 、utf-32 、utf32-LE 、utf-32-LE utf32-BE 、和 utf-32-BE 。编码选项的值不区分大小写。 |
是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
printFileContent |
将文件内容打印到console.log 文件中。 |
布尔值 | 否 | 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
输出 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
字段 | 描述 | 类型 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
content |
文件内容。 | 字符串 |
输出示例
{ "content" : "The file content" }
SetFileEncoding
SetFileEncoding操作模块修改现有文件的编码属性。该模块可以将文件编码从指定的编码标准utf-8
转换为指定的编码标准。默认情况下,utf-16
和utf-32
被假定为小端编码。
发生以下情况时,操作模块会返回错误:
-
您无权执行指定的修改。
-
该文件在运行时不存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | 是 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
encoding |
编码标准。 | 字符串 | 否 | utf8 |
utf8 、utf-8 utf16 、utf-16 、utf16-LE 、utf-16-LE utf16-BE 、utf-16-BE utf32 、utf-32 、utf32-LE 、utf-32-LE utf32-BE 、和 utf-32-BE 。编码选项的值不区分大小写。 |
是 |
输入示例:设置文件编码属性
name: SettingFileEncodingProperty action: SetFileEncoding inputs: - path: /home/UserName/SampleFile.txt encoding: UTF-16
输出
无。
SetFileOwner
SetFileOwner操作模块修改现有文件的owner
和group
所有者属性。如果指定的文件是符号链接,则模块会修改源文件的owner
属性。Windows 平台不支持此模块。
该模块接受用户名和组名作为输入。如果未提供组名,则模块会将文件的组所有者分配给用户所属的组。
发生以下情况时,操作模块会返回错误:
-
您无权执行指定的修改。
-
指定的用户名或组名在运行时不存在。
-
该文件在运行时不存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
owner |
用户名。 | 字符串 | 是 | 不适用 | 不适用 | 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
输出
无。
SetFolderOwner
SetFolderOwner操作模块以递归方式修改现有文件夹的owner
和group
所有者属性。默认情况下,该模块可以修改文件夹中所有内容的所有权。您可以将该recursive
选项设置为false
以覆盖此行为。Windows 平台不支持此模块。
该模块接受用户名和组名作为输入。如果未提供组名,则模块会将文件的组所有者分配给用户所属的组。
发生以下情况时,操作模块会返回错误:
-
您无权执行指定的修改。
-
指定的用户名或组名在运行时不存在。
-
该文件夹在运行时不存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
owner |
用户名。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
group |
用户组的名称。 | 字符串 | 否 | 列出用户所属组的名称。 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
recursive |
设置为时,会覆盖修改文件夹所有内容所有权这一默认行为false 。 |
布尔值 | 否 | 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
输出
无。
SetFilePermissions
SetFilePermissions操作模块修改permissions
现有文件的。Windows 平台不支持此模块。
的输入permissions
必须是字符串值。
此操作模块可以创建一个文件,其权限由操作系统的默认 umask 值定义。如果要覆盖默认umask
值,则必须设置该值。
发生以下情况时,操作模块会返回错误:
-
您无权执行指定的修改。
-
该文件在运行时不存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件路径。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
permissions |
文件权限。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 |
输入示例:修改文件权限
name: ModifyingFilePermissions action: SetFilePermissions inputs: - path: /home/UserName/SampleFile.txt permissions: 766
输出
无。
SetFolderPermissions
SetFolderPermissions操作模块以递归方式修改现有文件夹及其所有子文件和子文件夹。permissions
默认情况下,此模块可以修改指定文件夹的所有内容的权限。您可以将该recursive
选项设置为false
以覆盖此行为。Windows 平台不支持此模块。
的输入permissions
必须是字符串值。
此操作模块可以根据操作系统的默认 umask 值修改权限。如果要覆盖默认umask
值,则必须设置该值。
发生以下情况时,操作模块会返回错误:
-
您无权执行指定的修改。
-
该文件夹在运行时不存在。
-
操作模块在执行操作时遇到错误。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | 在所有平台上都支持 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
文件夹路径。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
permissions |
文件夹的权限。 | 字符串 | 是 | 不适用 | 不适用 | Windows 中不支持。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
recursive |
设置为时,会覆盖修改文件夹所有内容权限的默认行为false 。 |
布尔值 | 否 | true |
不适用 | Windows 中不支持。 |
输入示例:设置文件夹权限
name: SettingFolderPermissions action: SetFolderPermissions inputs: - path: SampleFolder/ permissions: 0777
输入示例:在不修改文件夹所有内容权限的情况下设置文件夹权限
name: SettingFolderPermissionsNoRecursive action: SetFolderPermissions inputs: - path: /home/UserName/SampleFolder/ permissions: 777 recursive: false
输出
无。
软件安装操作
本节介绍执行软件安装操作命令和指令的操作模块。
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(ERROR_PRODUCT_已卸载)
-
1641(已启动重启)
-
3010(需要重新启动)
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
使用下列项之一指定 MSI 文件位置:
允许使用链式表达式。 |
字符串 | 是 | 不适用 | 不适用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
reboot |
配置操作模块成功运行后的系统重启行为。 设置:
|
字符串 | 否 | Allow |
Allow, Force, Skip |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logOptions |
指定用于 MSI 安装日志的选项。指定的标志以及用于启用日志记录的 有关 MSI 日志选项的更多信息,请参阅 Microsoft Windows Installer 产品文档中的命令行选项 |
字符串 | 否 | *VX |
i,w,e,a,r,u,c,m,o,p,v,x,+,!,* |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logFile |
日志文件位置的绝对或相对路径。如果日志文件路径不存在,则创建日志文件路径。如果未提供日志文件路径,则EC2 TOE不存储 MSI 安装日志。 |
字符串 | 否 | 不适用 | 不适用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
properties |
MSI 记录属性键值对,例如:
注意:不允许修改以下属性:
|
地图 [字符串] 字符串 | 否 | 不适用 | 不适用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ignoreAuthenticodeSignatureErrors |
用于忽略路径中指定的安装程序的 authenticode 签名验证错误的标志。该Get-AuthenticodeSignature命令用于验证安装程序。 设置:
|
布尔值 | 否 | false |
true, false |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
allowUnsignedInstaller |
允许运行路径中指定的未签名安装程序的标志。该Get-AuthenticodeSignature命令用于验证安装程序。 设置:
|
布尔值 | 否 | false |
true, false |
示例
以下示例显示了组件文档输入部分的变体,具体取决于您的安装路径。
输入示例:本地文档路径安装
- 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
输出
以下是InstallMSI
操作模块的输出示例。
{ "logFile": "web-path-install.log", "msiExitCode": 0, "stdout": "" }
卸载 MSI
UninstallMSI
操作模块允许您使用 MSI 文件删除 Windows 应用程序。您可以使用本地文件路径、S3 对象 URI 或 Web URL 指定 MSI 文件位置。重启选项配置系统的重启行为。
EC2 TOE根据操作模块的输入参数生成msiexec命令。生成msiexec命令时,MSI 文件位置 (path
logFile
) 和日志文件位置 () 明确用双引号 (“) 括起来。
以下 MSI 退出代码被认为是成功的:
-
0(成功)
-
1605(ERROR_UNKNOWN_PRODUCT)
-
1614(ERROR_PRODUCT_已卸载)
-
1641(已启动重启)
-
3010(需要重新启动)
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | 默认值 | 可接受的值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
path |
使用下列项之一指定 MSI 文件位置:
允许使用链式表达式。 |
字符串 | 是 | 不适用 | 不适用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
reboot |
配置操作模块成功运行后的系统重启行为。 设置:
|
字符串 | 否 | Allow |
Allow, Force, Skip |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logOptions |
指定用于 MSI 安装日志的选项。指定的标志以及用于启用日志记录的 有关 MSI 日志选项的更多信息,请参阅 Microsoft Windows Installer 产品文档中的命令行选项 |
字符串 | 否 | *VX |
i,w,e,a,r,u,c,m,o,p,v,x,+,!,* |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logFile |
日志文件位置的绝对或相对路径。如果日志文件路径不存在,则创建日志文件路径。如果未提供日志文件路径,则EC2 TOE不存储 MSI 安装日志。 |
字符串 | 否 | 不适用 | 不适用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
properties |
MSI 记录属性键值对,例如:
注意:不允许修改以下属性:
|
地图 [字符串] 字符串 | 否 | 不适用 | 不适用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ignoreAuthenticodeSignatureErrors |
用于忽略路径中指定的安装程序的 authenticode 签名验证错误的标志。该Get-AuthenticodeSignature命令用于验证安装程序。 设置:
|
布尔值 | 否 | false |
true, false |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
allowUnsignedInstaller |
允许运行路径中指定的未签名安装程序的标志。该Get-AuthenticodeSignature命令用于验证安装程序。 设置:
|
布尔值 | 否 | false |
true, false |
示例
以下示例显示了组件文档输入部分的变体,具体取决于您的安装路径。
输入示例:删除本地文档路径安装
- 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: '"Amazon Web Services"' 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
输出
以下是UninstallMSI
操作模块的输出示例。
{ "logFile": "web-path-uninstall.log", "msiExitCode": 0, "stdout": "" }
系统操作模块
下一节介绍执行文件系统操作命令和指令的操作模块。
系统操作模块
重启
Reboot 操作模块重新引导实例。它具有一个可配置的选项以延迟启动重新引导。默认情况下,设置delaySeconds
为0
,这意味着没有延迟。重启操作模块不支持步进超时,因为它在实例重启时不适用。
如果应用程序由Systems Manager 代理调用,它会将退出代码(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
在该应用程序启动时,将清除该触发器。
重试
默认情况下,最大重试次数设置为 SSMCommandRetryLimit
。如果重启次数超过重试限制,则自动化将失败。您可以通过编辑 SSM 代理配置文件来更改限制 (Mds.CommandRetryLimit
)。请参阅 SSM 代理开源中的 “运行时配置
要使用 Reboot 操作模块,对于包含重新引导 exitcode
的步骤(例如,3010
),您必须以 sudo user
形式运行应用程序二进制文件。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必需 | 默认值 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
delaySeconds |
在启动重新引导之前延迟特定的时间。 | 整数 |
否 |
|
输入示例:重启步骤
name: RebootStep action: Reboot onFailure: Abort maxAttempts: 2 inputs: delaySeconds: 60
输出
无。
重启模块完成后,Image Builder 将继续执行构建中的下一步。
SetRegistry
SetRegistry操作模块接受输入列表,并允许您设置指定注册表项的值。如果注册表项不存在,则会在定义的路径中创建该注册表项。该功能仅适用于 Windows。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 平台中支持的软件包管理器,并使用
yum
或apt-get
软件包管理器。如果不支持这两个软件包管理器,则会返回错误。你应该sudo
有权运行 u pdateOS 操作模块。如果您没有sudo
权限,则会返回error.Input
。
输入 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
原语 | 描述 | 类型 | 必填 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
include |
对于 Windows,您可以指定以下内容:
对于 Linux,您可以指定要包含在安装更新列表中的一个或多个软件包。 |
字符串列表 | 否 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
exclude |
对于 Windows,您可以指定以下内容:
对于 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*'
输出
无。