2016年7月27日水曜日

[AWS] aws-cli でエラーになったらリトライする


AWSは、ネットワーク障害で aws-cli がエラーになることがある。

そこで、終了ステータスが 0 以外ならリトライするようにしてみます。

#!/bin/bash

RETRY_MAX=5
RETRY_INTERVAL=2

function retry ()
{
    cmd="$1"
    i=0
    while [ 1 ]
    do
        eval "${cmd}"
        if [ $? -ne 0 ]; then
            i=$((i+1))
            if [ $i -eq $((RETRY_MAX+1)) ]; then
                break
            fi
            echo "retry $i times waiting ..."
            sleep ${RETRY_INTERVAL}
            continue
        fi
        return 0
    done
    return 1
}

retry 'aws ec2 describe-instances --filters "Name=tag:Name,Values=ga*"'
echo "status=$?"

exit 0