如何设置重试" aws s3 cp"命令?

时间:2018-05-29 14:42:58

标签: amazon-web-services amazon-s3 aws-cli

我有一个jenkins工作,它将一个非常小的bash文件(小于< 1mb)上传到s3存储桶。它大部分时间都有效,但偶尔会出现以下错误:

upload failed: build/xxxxxxx/test.sh The read operation timed out

以上错误直接来自aws cli操作。我在想,它可能是某些网络问题,也可能是当时无法使用磁盘读取操作。如果发生这种情况,如何设置重试选项?此外,我可以增加超时吗?我搜索了cli文档,谷歌搜索,并检查了#s; ssapi'但是没有看到任何这样的选择。

如果不存在这样的选择。那么,人们如何解决这个问题呢?包装命令以检查错误代码并重新尝试?

1 个答案:

答案 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
}