Неверный ключ доступа потребителя Symfony5 SQS

#php #amazon-sqs #symfony5 #phpdotenv

Вопрос:

Я пытаюсь использовать сообщения от SQS с потребителем symfony 5 SQS, и у меня возникает проблема, когда секретный ключ aws содержит специальные символы, такие как или .

Вот мое .env досье :

 MESSENGER_TRANSPORT_DSN="https://sqs.eu-west-3.amazonaws.com/XXXXXXXX/bonobo-asg?access_key=XXXXamp;secret_key=XXXX XXXXXXXXXXXamp;region=eu-west-3amp;auto_setup=false"
 

И мой messenger.yml конфигурационный файл :

 framework:
    messenger:
        transports:
            asg:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                serializer: AppMessengerSnsSerializer
 

Когда я запускаю потребителя, я получаю следующую ошибку :

 [AsyncAwsCoreExceptionHttpClientException (403)]                                                                                                                                   
  HTTP 403 returned for "https://sqs.eu-west-3.amazonaws.com/".                                                                                                                          
                                                                                                                                                                                         
  Code:    SignatureDoesNotMatch                                                                                                                                                         
  Message: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for de  
  tails.
 

Я думаю, что это происходит из-за специальных символов в секретном ключе, потому что, когда я пытаюсь использовать другой ключ, содержащий только буквы и цифры, он работает нормально.

Я пытался избежать специальных символов, но это дает мне ту же ошибку.

Как я могу использовать свой ключ, содержащий специальные символы, с потребителем symfony sqs?

Комментарии:

1. Я могу подтвердить этот вопрос. Вы проверяли или открывали проблему в github? Я могу выкроить некоторое время, чтобы поработать над его исправлением, если на нем еще никто не работает.

Ответ №1:

У меня была та же проблема, но я обнаружил, что DSN Symfony анализируются как обычные URL-адреса.

Поэтому, если ваши параметры URL (в нашем случае access_key или secret_key ) содержат некоторые специальные символы, они должны быть закодированы в URL.

Я заменил его постепенно + , / / и это сработало идеально.

Ссылка: https://github.com/symfony/symfony/issues/32021