AWS Data Pipeline 不再向新客户提供。的现有客户 AWS Data Pipeline 可以继续照常使用该服务。了解更多
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ShellCommandActivity
运行命令或脚本。您可以使用 ShellCommandActivity
运行时间序列或类似 Cron 的计划任务。
当该stage
字段设置为 true 并与一起使用时S3DataNode
,ShellCommandActivity
支持暂存数据的概念,这意味着您可以将数据从 Amazon S3 移动到暂存位置,例如亚马逊EC2或您的本地环境,使用脚本和对数据进行处理ShellCommandActivity
,然后将其移回 Amazon S3。
在这种情况下,当 Shell 命令连接到输入 S3DataNode
时,Shell 脚本使用 ${INPUT1_STAGING_DIR}
、${INPUT2_STAGING_DIR}
及其他字段 (请参阅 ShellCommandActivity
输入字段) 直接操作数据。
同样,shell 命令输出可暂存到一个输出目录中,以便通过 ${OUTPUT1_STAGING_DIR}
、 ${OUTPUT2_STAGING_DIR}
等引用的方式自动推送到 Amazon S3。
这些表达式可作为命令行参数传递到 shell 命令,以供您在数据转换逻辑中使用。
ShellCommandActivity
返回 Linux 样式的错误代码和字符串。如果 ShellCommandActivity
生成错误,则返回的 error
为非零值。
示例
以下是该对象类型的示例。
{ "id" : "CreateDirectory", "type" : "ShellCommandActivity", "command" : "mkdir new-directory" }
语法
对象调用字段 | 描述 | 槽类型 |
---|---|---|
schedule |
该对象在 要设置该对象的依赖项执行顺序,请指定对另一个对象的 为满足此要求,可在对象上明确设置 在大多数情况下,最好将 为了分散负载, AWS Data Pipeline 可以稍微提前创建物理对象,但要按计划运行它们。 有关示例可选计划配置的更多信息,请参阅 https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html。 |
参考对象,例如 “日程安排”:{“ref”:” myScheduleId “} |
所需的组 (下列选项之一是必需的) | 描述 | 槽类型 |
---|---|---|
命令 | 要运行的命令。使用 $ 引用位置参数,使用 scriptArgument 指定命令的参数。此值与任何关联参数必须在从中运行任务运行程序的环境中起作用。 |
String |
scriptUri | 用于下载文件的 Amazon S3 URI 路径,并作为 shell 命令运行。仅指定一个 scriptUri 或 command 字段。scriptUri 不能使用参数,请使用 command 。 |
String |
所需的组 (下列选项之一是必需的) | 描述 | 槽类型 |
---|---|---|
runsOn | 用于运行活动或命令的计算资源,例如,Amazon EC2 实例或 Amazon EMR 集群。 | 引用对象,例如 runsOn ““: {" ref”:” myResourceId “} |
workerGroup | 用于路由任务。如果您提供 runsOn 值并且存在 workerGroup ,则将忽略 workerGroup |
String |
可选字段 | 描述 | 槽类型 |
---|---|---|
attemptStatus | 来自远程活动的最近报告的状态。 | String |
attemptTimeout | 远程工作完成的超时时间。如果设置此字段,则可能会重试未在指定开始时间内完成的远程活动。 | 周期 |
dependsOn | 指定与另一个可运行对象的依赖关系。 | 引用对象,例如 dependsOn ““: {" ref”:” myActivityId “} |
failureAndRerun模式 | 描述依赖项失败或重新运行时的使用者节点行为。 | 枚举 |
input | 输入数据的位置。 | 参考对象,例如 “输入”:{"ref”:” myDataNode Id "} |
lateAfterTimeout | 管道启动后经过的时间,在此时间内,对象必须完成。仅当计划类型未设置为 ondemand 时才会触发。 |
周期 |
maxActiveInstances | 组件的并发活动实例的最大数量。重新运行不计入活动实例数中。 | 整数 |
maximumRetries | 失败后的最大重试次数。 | 整数 |
onFail | 当前对象失败时要运行的操作。 | 引用对象,例如 onFail ““: {" ref”:” myActionId “} |
onLateAction | 在尚未计划对象或对象未完成的情况下将触发的操作。 | 引用对象,例如 onLateAction ““: {" ref”:” myActionId “} |
onSuccess | 当前对象成功时要运行的操作。 | 引用对象,例如 onSuccess ““: {" ref”:” myActionId “} |
output | 输出数据的位置。 | 参考对象,例如 “输出”:{"ref”:” myDataNode Id "} |
parent | 槽将继承自的当前对象的父级。 | 引用对象,例如 “父对象”:{"ref”:” myBaseObject Id "} |
pipelineLogUri | Amazon S3URI,例如's3://BucketName/Key/' 用于上传管道日志。 |
String |
precondition | (可选) 定义先决条件。在满足所有先决条件之前,数据节点不会被标记 READY “”。 | 参考对象,例如 “前提条件”:{“ref”:” myPreconditionId “} |
reportProgressTimeout | 远程活动对 reportProgress 的连续调用的超时时间。如果设置此字段,则未报告指定时段的进度的远程活动可能会被视为停滞且已重试。 |
周期 |
retryDelay | 两次重试之间的超时时间。 | 周期 |
scheduleType |
允许您指定应在间隔的开头还是结尾计划您管道定义中的对象。 值为 如果设置为 如果设置为 如果设置为 |
枚举 |
scriptArgument | 要传递给命令指定的命令的字符串数组。JSON例如,如果命令是 echo $1 $2 ,请将 scriptArgument 指定为 "param1", "param2" 。对于多个自变量和参数,按如下方式传递 scriptArgument :
"scriptArgument":"arg1","scriptArgument":"param1","scriptArgument":"arg2","scriptArgument":"param2" 。scriptArgument 只能与 command 一起使用;将其与 scriptUri 一起使用会导致错误。 |
String |
stage | 确定是否启用了暂存并且 Shell 命令有权访问暂存数据变量,例如 ${INPUT1_STAGING_DIR} 和
${OUTPUT1_STAGING_DIR} 。 |
布尔值 |
stderr | 接收来自命令的重定向系统错误消息的 路径。如果您使用 runsOn 字段,则由于运行活动的资源的短期性质,该字段必须为 Amazon S3 路径。不过,如果指定 workerGroup 字段,则允许使用本地文件路径。 |
String |
stdout | 接收来自命令的重定向输出的 Amazon S3 路径。如果您使用 runsOn 字段,则由于运行活动的资源的短期性质,该字段必须为 Amazon S3 路径。不过,如果指定 workerGroup 字段,则允许使用本地文件路径。 |
String |
运行时字段 | 描述 | 槽类型 |
---|---|---|
@activeInstances | 当前计划的有效实例对象的列表。 | 引用对象,例如 activeInstances ““: {" ref”:” myRunnableObject Id "} |
@actualEndTime | 该对象的执行完成时间。 | DateTime |
@actualStartTime | 该对象的执行开始时间。 | DateTime |
cancellationReason | 该对象被取消时显示的 cancellationReason 。 |
String |
@cascadeFailedOn | 导致对象失败的依赖项链的描述。 | 引用对象,例如 cascadeFailedOn ““: {" ref”:” myRunnableObject Id "} |
emrStepLog | Amazon EMR 步骤日志仅适用于亚马逊EMR活动尝试。 | String |
errorId | 该对象失败时显示的 errorId 。 |
String |
errorMessage | 该对象失败时显示的 errorMessage 。 |
String |
errorStackTrace | 该对象失败时显示的错误堆栈跟踪。 | String |
@finishedTime | 对象完成其执行的时间。 | DateTime |
hadoopJobLog | Hadoop 任务日志可用于尝试EMR基于亚马逊的活动。 | String |
@healthStatus | 对象的运行状况,反映进入终止状态的上个对象实例成功还是失败。 | String |
@healthStatusFromInstanceId | 进入终止状态的上个实例对象的 ID。 | String |
@ T healthStatusUpdated ime | 上次更新运行状况的时间。 | DateTime |
hostname | 已执行任务尝试的客户端的主机名。 | String |
@lastDeactivatedTime | 上次停用该对象的时间。 | DateTime |
@ T latestCompletedRun ime | 已完成执行的最新运行的时间。 | DateTime |
@latestRunTime | 已计划执行的最新运行的时间。 | DateTime |
@nextRunTime | 计划下次运行的时间。 | DateTime |
reportProgressTime | 远程活动报告进度的最近时间。 | DateTime |
@scheduledEndTime | 对象的计划结束时间。 | DateTime |
@scheduledStartTime | 对象的计划开始时间。 | DateTime |
@status | 对象的状态。 | String |
@version | 用于创建对象的 AWS Data Pipeline 版本。 | String |
@waitingOn | 该对象等待的依赖项列表的描述。 | 引用对象,例如 waitingOn ““: {" ref”:” myRunnableObject Id "} |
系统字段 | 描述 | 槽类型 |
---|---|---|
@error | 用于描述格式不正确的对象的错误消息。 | String |
@pipelineId | 该对象所属的管道的 ID。 | String |
@sphere | 对象在生命周期中的位置。组件对象产生实例对象,后者执行尝试对象。 | String |