0

我正在尝试使用 symfony 5 SQS 消费者使用来自 SQS 的消息,并且当 aws 密钥包含特殊字符(如+or )时出现问题\

这是我的.env文件:

MESSENGER_TRANSPORT_DSN="https://sqs.eu-west-3.amazonaws.com/XXXXXXXX/bonobo-asg?access_key=XXXX&secret_key=XXXX+XXXXX\XXXXXX&region=eu-west-3&auto_setup=false"

还有我的messenger.yml配置文件:

framework:
    messenger:
        transports:
            asg:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                serializer: App\Messenger\SnsSerializer

当我启动消费者时,我收到以下错误:

[AsyncAws\Core\Exception\Http\ClientException (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 消费者一起使用?

4

1 回答 1

1

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

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

我被替换了+%2B它工作得很好。/%2F

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

于 2021-07-02T12:12:40.967 回答