2013-01-12 78 views
7

我創建了一個新的亞馬遜賬戶。創建了SMTP憑據並使用AWS Java SDK發送電子郵件。但是它出現以下錯誤:狀態碼403:SignatureDoesNotMatch當我使用Amazon SES時

Status Code: 403, AWS Service: AmazonSimpleEmailService, AWS Request ID: xyz, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

回答

16

要發送電子郵件的密鑰不是「SMTP憑據」。密鑰是全球訪問密鑰,可以檢索http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html

+4

我會很沉默,但這是真的。您需要爲AWS創建一個全局訪問密鑰才能訪問SES。使用URL https://console.aws.amazon.com/iam/home?#security_credential請注意,這提供了可無限制訪問AWS賬戶的密鑰。不明白爲什麼SES無法使用更有限的憑據... – joker

+1

最佳做法是創建一個IAM用戶,然後爲該用戶創建一個Access ID。您現在可以限制用戶權限。所有這些操作都必須在AIM控制面板中完成:https://console.aws.amazon.com/iam/home –

6

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用戶添加新憑據,但我尚未測試過此功能。

+0

政策正常,但我必須創建另一個憑證才能使用它。 –

+0

只需向SMTP IAM用戶添加新憑據即可。 – patrox

相關問題