Я пытался отправить электронное письмо с использованием платформы AWS SES. С AWS_SDK все работало нормально. Но с почтальоном я получаю сообщение об ошибке 403. Запрос Curl:
curl --location --request POST 'https://email.us-east-1.amazonaws.com' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Connection: Keep-Alive' \
--header 'Host: email.us-east-1.amazonaws.com' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=AKIAIB6NHZEPK5BBYAS5Q/20200309/us-east-1/execute-api/aws4_request, SignedHeaders=connection;content-type;host;x-amz-content-sha256;x-amz-date, Signature=accb18520388557c4e51e0647d53eea443b534e878dc16a673aedd09aa99a714' \
--data-urlencode 'Action=SendEmail' \
--data-urlencode 'Source=example@company.io' \
--data-urlencode 'Destination.ToAddresses.member=example1@company.io' \
--data-urlencode 'Message.Subject.Data=This%20is%20the%20subject%20line' \
--data-urlencode 'Message.Body.Text.Data=Hello.%20I%20hope%20you%20are%20having%20a%20good%20day.'
Ответ об ошибке
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDoesNotMatch</Code>
<Message>Credential should be scoped to correct service: 'email'. </Message>
</Error>
<RequestId>ba05a265-859b-4fd8-b4b3-2054f82b964b</RequestId>
</ErrorResponse>
Я был пытаясь захватить объект запроса AWS SDK, вот что я нашел.
{
"uri": "https://email.us-east-1.amazonaws.com",
"host": "email.us-east-1.amazonaws.com",
"headers": {
"Connection": "Keep-Alive",
"Host": "email.us-east-1.amazonaws.com",
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
"Content-Length": 370,
"X-Amz-Date": "20200309T053657Z",
"Authorization": "AWS4-HMAC-SHA256 Credential=AKIAIB6NHZSSSEPK5BBYA5Q/20200309/us-east-1/ses/aws4_request, SignedHeaders=connection;content-length;content-type;host;x-amz-date, Signature=e45a557cf230939832e2b6ed155b443ed5ceaeb2ddee4dd9946ce69e54a84cec"
},
"body": "Action=SendEmail&AWSAccessKeyId=AK*******&Source=example@company.io&Destination.ToAddresses.member.1=example1@company.io&Message.Subject.Data=greetings&Message.Subject.Charset=UTF-8&Message.Body.Html.Data=your <b>message</b> goes here&Message.Body.Html.Charset=UTF-8&Message.Body.Text.Data=plain text&Message.Body.Text.Charset=UTF-8",
"service": "ses",
"method": "POST",
"path": "/"
}
Я не знаю о службе пакета запроса.