使用 OriginationNumber 发布 Boto3 SNS SMS 的问题

问题描述

我们有一个非常简单的用例,当系统警报发生时,python 应用程序会向待命用户发送 SMS 文本。我已经在 AWS API 访问 ID/密钥中创建了一个免费电话号码。

我的发布功能如下所示:

        try:
            sns = boto3.client('sns',aws_access_key_id='<our api id>',aws_secret_access_key='<our api key>',endpoint_url='https://sns-fips.us-east-2.amazonaws.com',config=Config(region_name='us-east-2',proxies={'https': '<our proxy>'}))
            for o in users:
                number = getattr(o,'number') if getattr(o,'number').startswith('+') else '+1' + getattr(o,'number').replace("-","").replace("(","").replace(")","")
                print('Sending message ' + msg + ' to contact ' + getattr(o,'name') + ' at number ' + number)
                result = sns.publish(PhoneNumber=number,Message=msg,MessageAttributes={'AWS.MM.SMS.OriginationNumber': {'DataType': 'String','StringValue': '+1<our tollfree>'}})
                print(result)
        except Exception as ex:
            print("SMS API EXCEPTION: {0}".format(ex),flush=True)

如果我不包括 MessageAttributes,消息发送就好了,但会获得 AWS 分配的长号(很快就会消失)。如果我进入我的 SNS 仪表板并使用我们的免费电话手动发送消息,它会通过。如果将免费电话更改为其他内容,则不会通过。所以我知道协会在那里。

我还尝试更改代码以使用 Boto pinpoint 客户端并获得相同的行为,没有消息发生,没有错误

使用 sns 发布,我的结果返回状态代码为 200、请求 ID、0 次重试尝试等。因此似乎正在发送消息。我在 SMS 传送日志中看不到任何内容

在这里遗漏了什么吗?提前感谢您的指点。

解决方法

哇,简单的解决方案。 Pinpoint 在东 2 中不可用,仅在东 1 中可用。切换区域并成功。