надеюсь, вы можете мне помочь с этим:
Я использую AWS sam для создания API-шлюза AWS с nodejs. пока все работает нормально, но когда я пытался отправлять электронные письма через AWS SES, я получаю следующую ошибку:
ERROR Invoke Error {"errorType":"InvalidClientTokenId","errorMessage":"The security token included in the request is invalid.","code":"InvalidClientTokenId","message":"The security token included in the request is invalid."
я использую следующий код:
const AWS = require("aws-sdk");
const SESConfig = {
accessKeyId: process.env.AWS_ACCESS_KEY_ID_SES,
secretAccesskey: process.env.AWS_SECRET_ACCESS_KEY_SES,
apiVersion: "2010-12-01",
region: process.env.AWS_REGION
};
var params = {
Destination: {
ToAddresses: [
userDataObject.email
]
},
Message: {
Body: {
Html: {
Charset: "UTF-8",
Data: "This message body contains HTML formatting. It can, for example, contain links like this one: <a class=\"ulink\" href=\"https://docs.aws.amazon.com/ses/latest/DeveloperGuide\" target=\"_blank\">Amazon SES Developer Guide</a>."
},
Text: {
Charset: "UTF-8",
Data: "This is the message body in text format."
}
},
Subject: {
Charset: "UTF-8",
Data: "Test email"
}
},
ReplyToAddresses: [
],
ReturnPath: "",
ReturnPathArn: "",
Source: "[email protected]",
SourceArn: ""
};
await new AWS.SES(SESConfig).sendEmail(params).promise().then((response) => {
console.log(response);
})
- Я дважды проверил, что токены для пользователя IAM в порядке и не содержат специальных символов.
- Я также проверил, что учетная запись SES не находится в режиме песочницы.
- Я проверил, что переменные в SESConfig действительно доступны для чтения и содержат необходимые данные.
- Я попытался использовать полный доступ SES для политики пользователей. Я также пробовал с полными правами администратора
- aws-sdk обычно работает в этом проекте: я могу загружать данные, например, в s3
- отправка электронной почты через smtp с помощью nodemailer, вероятно, сработает, но я не пробовал этого, потому что я действительно хочу опробовать aws-sdk
Я был бы очень рад, если бы кто-нибудь мог указать, делаю ли я что-то не так в целом или у кого-то есть представление о том, что я могу попытаться решить эту проблему
Для всех, у кого есть одна и та же проблема, я решил ее следующим образом:
политика ses:
}
обновленный и рабочий код:
я узнал из этого три вещи: