SES AWS错误代码:SignatureDoesNotMatch,状态代码:403

时间:2014-03-17 15:57:42

标签: php amazon-web-services amazon amazon-ses

我在尝试通过Amazon SES发送邮件时收到AWS错误代码:SignatureDoesNotMatch,状态代码:403。

我已确认我使用的是https://console.aws.amazon.com/iam/home?#users创建的正确凭据,错误仍然存​​在。

我认为我在iam / home上创建的凭据实际上是全局的,但我不知道我做错了什么。整个错误是:

  

AWS错误代码:SignatureDoesNotMatch,状态代码:403,AWS Request   ID:xxx,AWS错误类型:客户端,AWS错误消息:签名已过期:   20140314T031111Z现在早于20140317T15116Z(20140317T151111Z)    - 5分钟。),用户代理:aws-sdk-php2 / 2.5.3 Guzzle / 3.8.1 curl / 7.22.0 PHP / 5.3.10-1ubuntu3.10引入   /url/Vendor/Aws/Common/Exception/NamespaceExceptionFactory.php在线   91

实际代码是我提取的代码:http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.Ses.SesClient.html#_sendEmail

我从本地环境中解雇此脚本。

我在哪里可以找到有用的凭据?

2 个答案:

答案 0 :(得分:23)

这看起来像时钟偏差问题。您发送请求的计算机的时间与Amazon SES服务器的时间差异太大。这导致您的签名无效。你的凭据可能没问题。纠正机器的时钟或与NTP服务器同步。

答案 1 :(得分:0)

除了这个解决方案,我还做了以下几点。

1)我在IAM中创建了具有PowerUser策略的用户。 2)更新了我的代码中的秘密/访问密钥。

现在它正在运作。

不确定为什么SMTP凭据(在SES仪表板下创建)无效。