Symfony5 SQS使用者的访问密钥无效



我正试图使用symfony 5 SQS使用者使用来自SQS的消息,当aws密钥包含+等特殊字符时,我遇到了问题。

这是我的.env文件:

MESSENGER_TRANSPORT_DSN="https://sqs.eu-west-3.amazonaws.com/XXXXXXXX/bonobo-asg?access_key=XXXX&secret_key=XXXX+XXXXXXXXXXX&region=eu-west-3&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消费者一起使用?

我遇到了同样的问题,但发现Symfony的DSN被解析为普通URL。

因此,如果您的URL参数(在我们的例子中是access_keysecret_key(包含一些特殊字符,则需要对它们进行URL编码。

%2B代替+,用%2F代替/,效果很好。

参考:https://github.com/symfony/symfony/issues/32021

最新更新