☁️
Як налаштувати retry у AWS SDK?#aws
Багато розробників не знають або забувають, що AWS SDK має повторні спроби (retry). Це включено за замовчуванням. SDK зробить retry якщо помилка є тимчасовою (HTTP коди 400, 408, 500, 502, 503 і 504) або регулювання (HTTP коди 400, 403, 429, 502, 503 і 509) чи таймаутом.
Якщо ви використовуєте JavaScript SDK v2, тобто
aws-sdk, настав час його оновити. Налаштування retry можна зробити тільки для всіх сервісів відразу, але аналіз коду показує, що вони застосовуються не скрізь.
ДетальнішеНайпопулярнішим клієнтом SDK v3 є
@aws-sdk/client-s3. Він, як і всі v3 пакунки, дозволяє налаштувати
maxAttempts і
retryMode. Приклад:
const { S3 } = require('@aws-sdk/client-s3');const client = new S3({ retryMode: 'standard', maxAttempts: 10 });retryMode може бути
standard (за замовчуванням) і
adaptive. В адаптивному режимі ви можете встановити власну реалізацію
rateLimiter. Подробиці можна знайти у коді
@aws-sdk/middleware-retryДля конфігурації AWS SDK бере параметри:
– з кода
– зі змінних оточення (
AWS_MAX_ATTEMPTS/AWS_RETRY_MODE)– з
CLI сonfig profile (
max_attempts/retry_mode)
– або використовує значення за замовчуванням (
3/standard)
* Розташування наведено в порядку зменшення пріоритетності.
Особисто мені не подобаються значення за замовчуванням. Вони створюють магію 🪄. Тому, щоб не забувати про наявність retry у aws проектах я використовую
AWS_REGION та
AWS_MAX_ATTEMPTS у
.env.example.