amazon-web-services - 使用 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 脚本。
帮助,有人吗?
解决方案
知道了!“request_parameters”字符串有一个顺序,版本应该放在最后。
Action=Publish&Message=Test&PhoneNumber=00123123123&Version=2010-03-31
如果更多的人被困在这个问题上,希望这对未来有所帮助。
推荐阅读
- java - 如何在 Android (Java) 中添加微调器验证
- r - 在R中给定行“匹配”的情况下创建具有平均列值的表
- javascript - 找不到隐含“任何”类型的模块的声明文件 - 在导入部分 CommonJS 模块时
- python - 'save() 禁止以防止由于未保存的相关对象导致数据丢失' 即使在保存父对象时
- python - 向列表中添加新项目?
- c# - WPF 问题仅在某些硬件配置上在辅助屏幕上创建窗口
- selenium - 如何从 div 标签中获取文本并在一行中打印
- angular - 无法正确设置 Angular PWA
- python-3.x - 内存高效的海量 http 请求
- python - 将音频文件转换为频谱图,然后将频谱图的数据保存到 txt 文件中