Не удалось отправить письмо с Amazon EC2 Server в Java

Попытка отправить почту с сервера Amazon EC2 с помощью java-кода, но получая исключение, например -

Exception in thread "main" Status Code: 403, AWS Request ID: 3e9319ec-bc62-11e1-b2ea-6bde1b4f192c, AWS Error Code: AccessDenied, AWS Error Message: User: arn:aws:iam::696355342546:user/brandzter is not authorized to perform: ses:SendEmail
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:500)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:262)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:166)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.invoke(AmazonSimpleEmailServiceClient.java:447)
at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.sendEmail(AmazonSimpleEmailServiceClient.java:242)
at brandzter.util.SESExample.SendMail(SESExample.java:46)
at brandzter.util.SESExample.<init>(SESExample.java:31)
at brandzter.util.SESExample.main(SESExample.java:52)

Java Результат: 1

Мои учетные данные в порядке, не знаю, почему я не могу отправить электронное письмо здесь. мне нужно настроить/обновить любые настройки на сервере?

Ответ 1

Вы не авторизованы в службе идентификации и управления доступом (IAM) для отправки электронной почты на SES.

Ошибка 403 ссылается на код HTTP 403 Несанкционированный.

Ошибка в конце говорит вам, какое разрешение вам не хватает.

arn: aws: iam:: 696355342546: пользователь /brandzter не имеет права выполнять: SES: SendEmail

В качестве альтернативы ваша учетная запись AWS не может быть зарегистрирована для Simple Email Service, но я сомневаюсь, что это проблема.

Вы можете добавить группу в IAM, которая разрешает только действие sendEmail со следующей политикой:

{
  "Statement": [
    {
      "Action": [
        "ses:SendEmail"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

В качестве альтернативы вы можете дать ему политику, которая позволяет ему выполнять любые действия на SES с помощью:

{
  "Statement": [
    {
      "Action": [
        "ses:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

Ответ 2

В моем случае я отправился в консоль IAm, выберите мой пользователь и добавьте политику AmazonSESFullAccess