如何为“aws s3 cp”命令设置重试?

Viv*_*vek 5 amazon-s3 amazon-web-services aws-cli

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

upload failed: build/xxxxxxx/test.sh The read operation timed out
Run Code Online (Sandbox Code Playgroud)

以上错误直接来自aws cli操作。我在想,这可能是一些网络问题,或者当时磁盘读取操作不可用。如果发生这种情况,如何设置重试选项?另外,我可以增加超时吗?我搜索了 cli 文档,用谷歌搜索,并查看了“aws s3api”,但没有看到任何这样的选项。

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

Viv*_*vek 6

最终围绕 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
}
Run Code Online (Sandbox Code Playgroud)