亚马逊SES Https Api

时间:2015-10-23 08:42:07

标签: amazon-web-services amazon-ses

我想使用Amazon AWS SES API,但他们需要一个我正在创建的签名值,如下面的PHP所示。

$algo ="SHA256";
$data = "hello";
$key = "my-access-key";
$signature =  hash_hmac(  $algo , $data , $key  );

我收到了错误消息 当我发送https发帖请求时。

<Message>
Request must contain a signature that conforms to AWS standards
</Message>

我错了

2 个答案:

答案 0 :(得分:2)

所有AWS API都要求对每个请求进行签名。但是,签名需要符合所谓的AWS签名版本4(与散列不同)

http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html

我的建议是,您不应该尝试复制该流程,而是使用AWS SDK

http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/basic-usage.html

答案 1 :(得分:1)

<强>更新

在撰写此答案后的某个时刻,已从AWS文档中删除了有关签名版本3的大部分信息。下面提到的链接中的文档仍然存在,但该页面不再描述如何使用签名版本3实际签署请求。它仍然提到SES支持Signature V3和V4,但它也声明建议使用Signature V4。

对于历史上的好奇,仍然可以在archived version of the page找到使用签名版本3签署SES请求的说明,但使用(或切换到)签名版本4将是未来的行动方案,如如果SES在未来推出任何新区域,则不太可能支持Signature V3(自2014年以来在任何地区都没有支持Signature V2,但SES在这些区域中没有端点)。

与Signature V4相比,Signature V3具有显着的局限性,因此它可能在某个时候(或可能已经)被弃用,最终可能会停止使用。

tl; dr:始终使用签名版本4。

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/query-interface-authentication.html解释了如何使用签名版本3与SES签署您将通过HTTPS提交的请求。

这是一种与大多数其他AWS服务不同的算法,但实现起来非常简单。 SES也支持标准的Signature V4。