我在尝试通过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
我从本地环境中解雇此脚本。
我在哪里可以找到有用的凭据?
答案 0 :(得分:23)
这看起来像时钟偏差问题。您发送请求的计算机的时间与Amazon SES服务器的时间差异太大。这导致您的签名无效。你的凭据可能没问题。纠正机器的时钟或与NTP服务器同步。
答案 1 :(得分:0)
除了这个解决方案,我还做了以下几点。
1)我在IAM中创建了具有PowerUser策略的用户。 2)更新了我的代码中的秘密/访问密钥。
现在它正在运作。
不确定为什么SMTP凭据(在SES仪表板下创建)无效。