AWS Data Pipeline ShellCommandPrecondition返回值及重试规则咨询
AWS Data Pipeline ShellCommandPrecondition 常见问题解答
我之前在AWS Data Pipeline里配置ShellCommandPrecondition的时候也踩过这些坑,刚好能帮你理清这些点:
1. 返回值规则:如何通过脚本返回"true"或"false"
AWS Data Pipeline对ShellCommandPrecondition的返回值逻辑完全遵循标准Shell脚本的退出码规则:
- 当脚本返回0时,预条件被判定为
true,管道会继续执行后续的活动 - 当脚本**返回非0值(比如1、2等)**时,预条件被判定为
false,管道会暂停,等待预条件重试(或者根据配置终止)
举个简单的实用例子——如果要检查S3上是否存在当月的目标数据文件,脚本可以这么写:
#!/bin/bash # 检查S3桶中是否存在当月的CSV文件 aws s3 ls s3://your-target-bucket/monthly-data/$(date +%Y-%m).csv > /dev/null 2>&1 # 直接返回aws命令的退出码:存在则0,不存在则1 exit $?
2. 预条件的重试间隔
默认情况下,ShellCommandPrecondition的重试间隔是15分钟,这个间隔支持自定义调整:
- 你可以在预条件的配置中添加
retryDelay参数,单位为分钟。比如设置retryDelay="60"就是每小时重试一次,retryDelay="1"就是每分钟重试一次 - 重试会持续到预条件返回0,或者达到管道的超时时间(默认是7天,也可以通过
timeout参数自行调整)
3. 配置每月运行的管道结合预条件
要实现「每月运行一次且仅在预条件满足时执行」的管道,只需两步配置:
- 设置管道调度规则:在管道的
schedule部分配置cron表达式,比如cron(0 0 1 * ? *)表示每月1号凌晨0点触发管道 - 绑定预条件到目标活动:把你的预条件脚本关联到需要执行的核心活动上,这样管道触发后会先检查预条件;只有当脚本返回0时,才会执行后续活动;如果预条件不满足,会按照你设置的重试间隔反复检查,直到满足或者超时
内容的提问来源于stack exchange,提问作者Shekhar
相关产品推荐
相关产品推荐

