#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.
- Создайте тему SNS
- Добавьте очередь SQS в качестве цели в раздел
- Добавьте подписку на электронную почту в качестве второй цели в тему
- Измените свое приложение, чтобы размещать сообщения в теме, а не в очереди
Таким образом, раздел помещает каждое сообщение в очередь и одновременно отправляет электронное письмо.