我正在尝试在我的服务器上运行以下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:似乎不是一个不同时间的情况,因为我在北弗吉尼亚州的服务器上运行代码并获得了相同的结果。在模拟器上传递的权限。有什么建议吗?
答案 0 :(得分:1)
[...]可能修复的是我应该调整我的EC2服务器上的时间,但是我如何知道SES服务器上的时间,因为我无法访问它们?
Jeremy Lindblom's answer中提到的“时钟偏差”表示在减去时区偏移后服务器上的时间与Coordinated Universal Time (UTC) 没有充分同步,即您没有实际上需要知道Amazon SES服务器上的时间(虽然大多数情况下只是UTC),而只是确保您自己的系统也与UTC同步(无论您在哪个时区) - 请参阅我的答案synchronize local Debian time with amazon Debian instances (RDS) MDT to UTC有关该主题的更多详细信息以及如何为Debian / GNU resp解决此问题。 Ubuntu系统:
[...]这可以通过安装Network Time Protocol (NTP)守护程序轻松解决,如Debian的Set the time automatically中所述,其归结为sudo apt-get install ntp和editing / etc / ntp.conf定位更多DateTime以获得最佳结果。