【发布时间】:2014-07-05 05:02:40
【问题描述】:
我正在尝试在我的服务器上运行以下 PHP 代码:
require 'aws_sdk_php/aws-autoloader.php';
use Aws\Ses\SesClient;
echo 'teste1';
$client = SesClient::factory(array(
'key' => 'xxxxx',
'secret' => 'yyyyy',
'region' => 'us-east-1'
));
echo 'teste2';
echo $client->listIdentities();
echo 'teste3';
echo $client->verifyEmailIdentity(array(
'EmailAddress' => 'my_email@gmail.com'
));
我创建了一个有权使用 SMTP (ses:SendRawEmail) 发送电子邮件的用户,它工作得很好。但是,“listIdentities”和“verifyEmailIdentity”调用仅在我授予 SES 完全访问权限或使用帐户的完整凭据时才有效。
如果我只将“ses:ListIdentities”和“ses:VerifyEmailIdentity”添加到同一个用户,我会收到一个 403 错误,指出签名不匹配。有人知道发生了什么吗?我是否必须添加其他权限/策略才能授予对此调用的访问权限?
我还在 IAM 策略模拟器上运行了此权限,并且在设置它们时它们通过了,但在我删除它们后我收到了“拒绝”。
谢谢!
更新:根据SES AWS Error Code: SignatureDoesNotMatch, Status Code: 403 可能的解决方法是我应该调整我的 EC2 服务器上的时间,但是由于我无权访问 SES 服务器,我如何才能知道它是什么时间?
Update2:似乎时间不同,因为我在北弗吉尼亚的服务器上运行了代码并得到了相同的结果。在模拟器上传递的权限。有什么建议吗?
【问题讨论】:
-
您使用的是哪个版本的AWS SDK for PHP?
-
我使用的版本在 SesClient.php 文件中有这个: const LATEST_API_VERSION = '2010-12-01';
标签: php email amazon-web-services amazon-ses amazon-iam