我使用Amazon SES时的状态码403:SignatureDoesNotMatch

时间:2013-01-12 19:18:05

标签: amazon-web-services amazon-ses

我创建了一个新的亚马逊帐户。创建SMTP凭据并使用AWS Java SDK发送电子邮件。但它失败了以下错误:

  

状态代码:403,AWS服务:AmazonSimpleEmailService,AWS Request   ID:xyz,AWS错误代码:SignatureDoesNotMatch,AWS错误消息:The   我们计算的请求签名与您的签名不符   提供。检查您的AWS Secret Access Key和签名方法。请教   服务文档了解详情。

2 个答案:

答案 0 :(得分:20)

提供发送电子邮件的密钥不是“SMTP凭据”。密钥是全局访问密钥,可以检索http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html

答案 1 :(得分:8)

SMTP凭据无法与SES API(AWS Java SDK)一起使用。事实上,SMTP凭据与为IAM用户手动创建的凭据不同,即使在AWS控制台上的任何位置都看不到这些凭据。看看这里看到的差异:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html

您实际上并不需要创建全局访问凭据(这可能是安全漏洞),但您应该使用以下安全策略创建新的IAM用户,并为该用户创建新凭据。

{
"Version": "2012-10-17",
"Statement":[{
   "Effect":"Allow",
   "Action":["ses:SendEmail", "ses:SendRawEmail"],
   "Resource":"*"
   }
]
}

PS:可能您只需向已为SES创建的SMTP IAM用户添加新凭据,但我还没有对此进行测试。