#php #laravel #amazon-web-services #amazon-ses
Вопрос:
Я получаю сообщение об ошибке User arn:aws:iam:blabla:user/blabla is not authorized to preform ses:SendRawEmail on resource arn:aws:ses:locationLblabla:identity/[domain-of-the-to-address].com
, которое мой DevOps сообщает мне, что [domain-of-the-to-address]
я должен указать конкретный/наш домен. Единственный способ, которым я могу манипулировать, — это изменить адрес на. Как мне правильно это установить? Я попробовал это сделать следующим образом
// services.php
return [
'ses' => [
'key' => '...',
'secret' => '...',
'region' => '...',
'options' => [
'SourceARN' => 'arn:aws:ses:locationLblabla:identity/[correct-domain].com'
'Source' => 'test@[correct-domain].com'
],
]
];
и
// MyMailable.php
$this->withSwiftMessage(function (Swift_Message $message) {
$message->getHeaders()->addTextHeader('X-SES-SOURCE-ARN', 'arn:aws:ses:locationLblabla:identity/[correct-domain].com');
});
Редактировать: Другими словами. У меня действительно есть ses:SendRawEmail
разрешение. Я отправляю электронное письмо, например:
чтобы: joe-bob@gmail.com
от: do-not-reply@my-comp.com
но некоторые из драйверов laravel или aws sdk возвращают его назад, устанавливая мою личность как arn:aws:ses:locationLblabla:identity/gmail.com
нет arn:aws:ses:locationLblabla:identity/my-comp.com
, и у нас нет и не было бы настройки личности в aws для любого домена электронной ses:SendRawEmail
почты, поэтому это не сработает.
Комментарии:
1. Ошибка довольно очевидна — у вас есть разрешение на
ses:SendRawEmail
действие?2. @ErmiyaEskandary да, но для конкретной личности.
3. Всегда ли идентичность устанавливается как «gmail.com» конкретно? Если да, то получаете ли вы это из сообщения об ошибке?
4. @WilliamLohan Вы получили разрешение на это?
5. @Mtxz всегда устанавливается в домен адреса «кому».
Ответ №1:
Я не верю, что вам нужны дополнительные параметры конфигурации или дополнительный текстовый заголовок. Похоже, ваша учетная запись SES все еще находится в режиме песочницы SES. Учетные записи SES автоматически переводятся в режим изолированной среды при их создании, и их необходимо запросить для выхода из режима изолированной среды.
Я предполагаю, что вы подтвердили адрес электронной почты или домен, с которого отправляете электронное письмо. Однако в режиме песочницы вам также необходимо подтвердить адрес электронной почты или домен, на который вы отправляете. Или, если вы не можете этого сделать, вы можете отправить свои тестовые электронные письма в симулятор почтовых ящиков SES (success@simulator.amazonses.com).
Для получения дополнительной информации о режиме песочницы, его ограничениях и о том, как выйти из него, когда вы будете готовы, вы можете посетить https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html.
Для получения дополнительной информации о симуляторе почтовых ящиков SES вы можете посетить https://docs.aws.amazon.com/ses/latest/dg/send-email-simulator.html.
Комментарии:
1. Я собираюсь сказать, что это правильно, так как теперь он работает без дополнительной настройки.
Ответ №2:
Это ошибка IAM, можете ли вы подтвердить, что пользователю IAM для используемого вами ключа/секрета AWS ses:SendRawEmail
назначена соответствующая роль, или, в качестве альтернативы, существует ли роль IAM, предоставляющая доступ к ses:SendRawEmail
экземпляру/Лямбде, из которого выполняется ваш код?
Убедитесь, что разрешение IAM не имеет никаких ограничений, которые могут привести к его неприменению (например, оно применимо только к определенным серверам/тегам/IP-адресам/идентификаторам SES…).
Похоже, вы уже подтвердили свой домен в SES, поэтому, если AWS разрешила вам покинуть песочницу, вам следует отправить его, как только проблема с IAM будет решена.
Комментарии:
1. Если у вас все еще возникают проблемы с IAM, не могли бы вы поделиться своей текущей политикой SES JSON?
2. Это звучит как просьба о разъяснении. Вот для чего нужны комментарии.