Новое в Symfony 5.1: Поддержка Async AWS

Официальный AWS SDK для PHP упрощает интеграцию сервисов Amazon AWS (Amazon S3, Amazon DynamoDB и т. д.) В ваши PHP-приложения. Этот SDK является полным набором функций, обеспечивающим поддержку более 200 сервисов AWS (с помощью 8000 методов).

Проект Async AWS является неофициальным переосмыслением AWS SDK. Он обеспечивает поддержку только для наиболее часто используемых служб (7 против 200 в официальном SDK) и разделен на несколько небольших пакетов (для добавления поддержки S3 в вашем приложении требуется 0,6 МБ против 22 МБ, необходимых для официального SDK).

Однако самое большое отличие заключается в том, что в Async AWS все вызовы API по умолчанию являются асинхронными (благодаря базовому HTTP-клиенту Symfony, используемому проектом).

Благодаря недавней работе Тобиаса Найхольма и Жереми Деруссе (15 недель, 500 запросов на получение данных и десятки тысяч строк кода) Async AWS недавно пометила свою стабильную версию 1.0.0. В Symfony 5.1 мы решили начать использовать Async AWS по умолчанию в некоторых компонентах.

В компоненте Mailer мы исключили классы SesApiTransport и SesHttpTransport в пользу SesApiAsyncAwsTransport и SesHttpAsyncAwsTransport, которые создаются при установке следующего пакета:

composer require async-aws/ses

В дополнение к устранению сложности подписывания запросов, это изменение добавляет следующие функции:

  • Аутентификация через .aws/config.ini, профиль экземпляра и WebIdentity (учетная запись службы K8S);
  • Использует Signature V4 (рекомендованный официальным SDK);
  • Полная совместимость с официальным API (для генерации классов используется официальный контракт интерфейса AWS SDK).

Аналогично, компонент Messenger был обновлен для использования Async AWS при использовании сервиса Amazon SQS. Это устраняет большую часть сложности аутентификации/потоковой передачи и продолжает использовать интеграцию Symfony HttpClient.