#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.
Я заменил
его постепенно +
, /
/
и это сработало идеально.