Приложение
Простой сервис регистрации REST API весной, после отправки правильного запроса POST в базе данных создается новый пользователь, и Amazon SES отправляет электронное письмо со ссылкой для регистрации.
Проблема
Локально после установки локальных переменных (AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
и AWS_DEFAULT_REGION
) в моем приложении для ОС (Windows) работает нормально, но проблема начинается после его развертывания. У меня есть экземпляр EC2 с Amazon Linux AMI на AWS:
- , созданный пользователь на AWS Identity and Access Management (IAM), предоставленный роли AmazonSESFullAccess
- , входящий в систему CMD с использованием shh с файлом закрытого ключа * .pem
- Служба Tomcat8 запущена
- MySQL Служба запущена
- Приложение * .war развернуто * Создано
- Переменные окружения, используя команду «export», и я проверил «printenv», просто чтобы убедиться, что все в порядке
- после отправки запроса POST я получил исключение (ниже), которое означает, что пользователь был создан, но Amazon SES не отправил подтверждение по электронной почте, потому что не удалось аутентифицировать
{
"timestamp": "2020-04-26T15:44:44.010+0000",
"message": "Unable to load AWS credentials from any provider in the chain: [EnvironmentVariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)), SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey), WebIdentityTokenCredentialsProvider: To use assume role profiles the aws-java-sdk-sts module must be on the class path., com.amazonaws.auth.profile.ProfileCredentialsProvider@23fac1a3: profile file cannot be null, com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@68aa5a98: The requested metadata is not found at http://169.254.169.254/latest/meta-data/iam/security-credentials/]"
}
Я снова проверил локальные переменные окружения на моем экземпляре EC2, и он выглядел нормально, но чтобы убедиться, что я его заново настроил с помощью команды aws configure
постоянно появляется исключение, приложение не может получить переменные среды, я борюсь с этим уже более 5 часов так что, надеюсь, кто-то придет сюда, чтобы спасти меня ...
Кусок кода (локально работает отлично):
AmazonSimpleEmailService client =
AmazonSimpleEmailServiceClientBuilder
.standard()
.withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
.withRegion(Regions.EU_CENTRAL_1)
.build();
Я всего Linux noob, возникли проблемы с простыми командами, поэтому будьте осторожны с решениями, требующими некоторых консольных команд.