我有一个jenkins工作,它将一个非常小的bash文件(小于< 1mb)上传到s3存储桶。它大部分时间都有效,但偶尔会出现以下错误:
upload failed: build/xxxxxxx/test.sh The read operation timed out
以上错误直接来自aws cli操作。我在想,它可能是某些网络问题,也可能是当时无法使用磁盘读取操作。如果发生这种情况,如何设置重试选项?此外,我可以增加超时吗?我搜索了cli文档,谷歌搜索,并检查了#s; ssapi'但是没有看到任何这样的选择。
如果不存在这样的选择。那么,人们如何解决这个问题呢?包装命令以检查错误代码并重新尝试?
答案 0 :(得分:1)
最后围绕s3命令编写包装器以重试,并在最后一次尝试时获得调试堆栈。可能会帮助人们。
# Purpose: Allow retry while uploading files to s3 bucket
# Params:
# \$1 : local file to copy to s3
# \$2 : s3 bucket path
# \$3 : AWS bucket region
#
function upload_to_s3 {
n=0
until [ \$n -gt 2 ]
do
if [ \$n -eq 2 ]; then
aws s3 cp --debug \$1 \$2 --region \$3
return \$?
else
aws s3 cp \$1 \$2 --region \$3 && break
fi
n=\$[\$n+1]
sleep 30
done
}