2013-01-12 27 views
7

Utworzyłem nowe konto Amazon. Utworzono Poświadczenia SMTP i wykorzystano pakiet AWS Java SDK do wysyłania wiadomości e-mail. Ale to się niepowodzeniem z następującym błędem:Kod statusu 403: SignatureDoesNotMatch, gdy korzystam z usługi 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.

Odpowiedz

16

Przyciski, które należy dostarczyć, aby wysłać e-maile nie są „dane identyfikacyjne SMTP”. Kluczami są zamiast tego globalny klucz dostępu, który można pobrać http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html.

+4

Będę przeklęty, ale to prawda. Aby uzyskać dostęp do SES, musisz utworzyć globalny klucz dostępu do AWS. Użyj adresu URL https://console.aws.amazon.com/iam/home?#security_credential Pamiętaj, że zapewnia to klucze z nieograniczonym dostępem do konta AWS. Nie widzę powodu, dla którego SES nie może wykonać więcej ograniczonego zestawu poświadczeń ... – joker

+1

Najlepszą praktyką jest utworzenie użytkownika IAM, a następnie utworzenie identyfikatora dostępu dla tego użytkownika. Możesz teraz ograniczyć uprawnienia użytkownika. Wszystkie te działania muszą być wykonane w panelu sterowania AIM: https://console.aws.amazon.com/iam/home –

6

Poświadczenia SMTP są nieprawidłowe do użycia z interfejsem API SES (AWS Java SDK). Dane uwierzytelniające SMTP różnią się od tych ręcznie utworzonych dla użytkowników IAM, nawet te różne nie są widoczne nigdzie w konsoli AWS. Spójrz tutaj, aby zobaczyć różnice: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html

Nie musisz tworzyć poświadczeń Global Access (co może być wyciekiem bezpieczeństwa), ale powinieneś utworzyć nowego użytkownika IAM z następującymi zasadami bezpieczeństwa i utworzyć nowe dane uwierzytelniające dla tego użytkownika.

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

PS: Pewnie, można po prostu dodać nowe poświadczenia dla użytkownika SMTP IAM już stworzony dla SES, ale nie zostały jeszcze przetestowane.

+0

Zasady działają dobrze, ale musiałem stworzyć kolejne poświadczenie do użycia z tym. –

+0

Po prostu dodawanie nowych poświadczeń do pracy użytkownika SMTP IAM. – patrox