【发布时间】:2021-11-24 17:27:17
【问题描述】:
我使用 AWS 发送电子邮件和 SMS 消息。我知道由于 mailer-daemon 返回的电子邮件而失败的电子邮件。最近,我停止在我的文本电话上接收 SMS 消息,即使代码运行没有问题并且我获得了 SMS 消息的消息 ID。该代码将 SMS 直接发布到手机,而不是主题。 Python代码是:
import botocore
import boto3
def send_text(message):
boto3.setup_default_session(profile_name='sms')
try:
resource = boto3.resource('sns', region_name="eu-west-1")
response = resource.meta.client.publish(
PhoneNumber=PHONE, Message=message)
message_id = response['MessageId']
print("Published message with text: '%s', id = '%s'." % (message, message_id))
except botocore.exceptions.ClientError:
print("Couldn't publish message.")
raise
日志显示:
Published message with text: '..', id = 'f4494169-...'.
我检查了相关区域 (eu-west-1) 的 CloudWatch console 并没有看到任何指标,无论是 SES 还是 SNS。 docs 解释了如何监控发布到主题,而不是直接向手机发送消息。
如何调试短信发送并通过消息ID检查发送状态?
更新
我现在在 CloudWatch 中看到一个带有此名称的日志组:
arn:aws:logs:eu-west-1:<my AWS id>:log-group:sns/eu-west-1/<my AWS id>/DirectPublishToPhoneNumber:*
日志流仅显示成功交付而不显示失败交付,即使我的代码显示成功和失败发送的相同输出。
我的问题似乎与简单电子邮件服务中的事件有关,例如电子邮件退回和重置。虽然我不明白原因,但几天后问题就消失了。
第二次更新
我在我的 SNS 控制台上看到此图形:
我的代码显示成功和失败发送的相同结果。 SMS 消息已被标记为关键(与事务性相反)。与以前的情况不同,我在 SES 中没有触发这些失败发送的事件,并且我没有看到指向有关失败的更多信息的链接。如何调试发送失败的原因?
【问题讨论】:
-
@JohnRotenstein 不,该页面在发布到主题时提供了指导,在我的情况下,我直接发送到电话号码。
-
啊,原来如此!我看不到为直接发送(不是通过主题)消息获取传递状态日志的方法。我向一个故意不正确的号码发送了几条消息,他们都对正确的电话号码做出了类似的回应。也许您需要为自己订阅一个主题并打开传递状态日志来调试这种情况。我见过的最常见的未送达原因与在有限制的国家/地区使用短代码有关。让我们知道你的进展!
标签: amazon-web-services amazon-sns