Отправка электронной почты при отправке сообщения в службу простых очередей AWS

#amazon-web-services #aws-lambda #amazon-sqs #amazon-ses

#amazon-веб-сервисы #aws-lambda #amazon-sqs #amazon-ses

Вопрос:

Я обрабатываю несколько файлов журналов и вставляю фрагмент кода, когда что-то идет не так, и в то же время я отправляю сообщение в AWS SQS, содержащее подробную информацию об ошибке. Теперь я хочу отправить электронное письмо самому себе, как только сообщение будет отправлено в SQS. Ранее я пытался сделать это с помощью SES. Я ввел код отправки электронной почты SES, но SQS не играл в этом роли. Что я могу сделать для реализации моего варианта использования?

 except: 
            #this part runs for any corrupted file
            sqs_msg_response = queue_client.send_message(MessageBody='Data Processing num_failed')
            print('messageID',sqs_msg_response.get('MessageId'))
            subject = 'Data file is not processed'
            body='''the {}file is not processed at the time{}'''.format(string,current_time)
            message = {"Subject":{"Data":subject},"Body":{"Html":{"Data":body}}}
            email_response = email_client.send_email(
            Source="xyz@gmail.com",
            Destination={
                "ToAddresses":[
                    "abc@gmail.com",
                    ]
                },
            Message=message
            )
  

Выше я реализован, но SQS независим, а SES независим. Теперь я хочу реализовать, как только сообщение, отправляемое на электронную почту SQS, отправляется на указанный идентификатор электронной почты.

Ответ №1:

Обычным способом решения такого рода проблем является использование комбинации Amazon SQS и Amazon SNS.

  1. Создайте тему SNS
  2. Добавьте очередь SQS в качестве цели в раздел
  3. Добавьте подписку на электронную почту в качестве второй цели в тему
  4. Измените свое приложение, чтобы размещать сообщения в теме, а не в очереди

Таким образом, раздел помещает каждое сообщение в очередь и одновременно отправляет электронное письмо.