首页 > 解决方案 > 使用 REST 通过 Amazon SNS 服务发送 SMS

问题描述

我正在尝试对此 AWS 请求进行跟进: https ://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

当您“按原样”执行此操作时,它可以工作,但我正在尝试从该脚本发送短信,并继续收到“签名不匹配”响应(HTTP 403):

  <Error>
    <Type>Sender</Type>
    <Code>SignatureDoesNotMatch</Code>
    <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 details.</Message>
  </Error>
  <RequestId>a58398ba-74c1-5308-abbe-cfe97a28fc30</RequestId>
</ErrorResponse>

现在,我在(默认)Python 脚本中更改的只是这一部分(当然,没有公开我的电话号码):

method = 'GET'
service = 'sns'
host = 'sns.us-west-2.amazonaws.com'
region = 'us-west-2'
endpoint = 'https://sns.us-west-2.amazonaws.com'
request_parameters = 'Action=Publish&Message=TestSenderID&Version=2010-03-31&PhoneNumber=00123123123'

而且,当然,替换了访问密钥和密钥。

但是,例如,当我通过 Postman 执行相同的请求时,它可以工作。这让我怀疑这个请求可能有什么问题,只使用默认的 Python 脚本。

帮助,有人吗?

标签: amazon-web-servicessmsamazon-sns

解决方案


知道了!“request_parameters”字符串有一个顺序,版本应该放在最后。

Action=Publish&Message=Test&PhoneNumber=00123123123&Version=2010-03-31

如果更多的人被困在这个问题上,希望这对未来有所帮助。


推荐阅读