Как установить идентификатор AWS SES в Laravel 8

#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. Это звучит как просьба о разъяснении. Вот для чего нужны комментарии.