You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS S3跨桶同步命令在Jenkins中中途无错间歇性失败

AWS S3跨桶同步在Jenkins中间歇性中途退出问题排查与解决

问题场景

通过Jenkins任务执行S3跨桶同步命令:

aws s3 sync s3://bucketname1 s3://bucketname2 --exclude *snaps/**** --exclude '*.html' --no-progress

出现间歇性中途无错误退出,导致目标桶未同步全部文件。相关版本信息:

  • AWS CLI版本:aws-cli/2.11.23 Python/3.11.3 Linux/5.4.0-1039-aws exe/x86_64.ubuntu.20 prompt/off
  • Jenkins版本:2.361.4

观察到的现象:

  • 输出约4000行内容后,命令以非零状态码退出
  • 添加--debug参数后未找到明确的终止错误线索
  • 本地环境(aws-cli/2.7.16 Python/3.9.11 Darwin/21.5.0 exe/x86_64 prompt/off)执行相同命令无异常

排查与解决方法

1. 验证AWS CLI版本兼容性

本地旧版本执行正常,Jenkins环境的新版本可能存在特定bug。可尝试:

  • 降级Jenkins节点的AWS CLI到本地正常版本(2.7.16):
# 卸载当前CLI
sudo rm -rf /usr/local/aws-cli
sudo rm /usr/local/bin/aws
sudo rm /usr/local/bin/aws_completer

# 下载安装2.7.16版本
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.7.16.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
  • 或升级到更新的稳定版本(如2.15.x及以上),验证问题是否消失

2. 检查Jenkins节点资源限制

Jenkins任务进程可能因内存/CPU不足被系统终止:

  • 查看节点内存占用:free -h
  • 检查系统日志是否有OOM(内存不足)杀进程记录:dmesg | grep -i kill 或查看/var/log/syslog

解决措施:

  • 增加Jenkins节点的内存配置
  • 降低AWS CLI并发请求数减少资源占用:
aws s3 sync s3://bucketname1 s3://bucketname2 --exclude *snaps/**** --exclude '*.html' --no-progress --max-concurrent-requests 10

3. 调整S3请求重试与限流策略

高并发同步可能触发S3请求速率限制,导致进程异常退出:

  • 配置AWS CLI自适应重试机制:
aws configure set default.s3.max_retries 10
aws configure set default.retry_mode adaptive

4. 解决Jenkins输出缓冲区限制

Jenkins的stdout缓冲区可能因输出过多被截断,导致进程终止:

  • 将命令输出重定向到文件,避免占满缓冲区:
aws s3 sync s3://bucketname1 s3://bucketname2 --exclude *snaps/**** --exclude '*.html' --no-progress > sync.log 2>&1
  • 调整Jenkins任务的日志大小限制,禁用自动截断

5. 修正排除规则格式

当前排除规则的通配符可能因shell解析不一致导致异常,调整为标准格式:

aws s3 sync s3://bucketname1 s3://bucketname2 --exclude "*snaps/**" --exclude "*.html" --no-progress

用双引号包裹通配符,避免shell提前解析规则

内容的提问来源于stack exchange,提问作者user3778838

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:00:09