Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aws lambda 无法从aws lambda功能传递全球文本消息_Aws Lambda_Aws Sdk_Amazon Sns_Aws Regions - Fatal编程技术网

Aws lambda 无法从aws lambda功能传递全球文本消息

Aws lambda 无法从aws lambda功能传递全球文本消息,aws-lambda,aws-sdk,amazon-sns,aws-regions,Aws Lambda,Aws Sdk,Amazon Sns,Aws Regions,我正试图从位于AP-South-1(即孟买)地区的AWS Lambda功能发送OTP。为此,我正在使用SNS的全球短信功能。由于“AP-South-1”地区不支持全球短信功能,我将SNSClient的地区端点作为“APNortheast1”(即东京)地区发送,因为它支持全球短信功能 现在,我已授予lambda函数管理员权限(通过使用管理员策略附加角色)。但是,尽管如此,它似乎还是不起作用(没有把信息传送到我的手机上)。我在执行该函数时没有收到任何异常,我还收到了该SMS的“Transaction

我正试图从位于AP-South-1(即孟买)地区的AWS Lambda功能发送OTP。为此,我正在使用SNS的全球短信功能。由于“AP-South-1”地区不支持全球短信功能,我将SNSClient的地区端点作为“APNortheast1”(即东京)地区发送,因为它支持全球短信功能

现在,我已授予lambda函数管理员权限(通过使用管理员策略附加角色)。但是,尽管如此,它似乎还是不起作用(没有把信息传送到我的手机上)。我在执行该函数时没有收到任何异常,我还收到了该SMS的“TransactionID”。在SNS控制台中,SMS显示为失败。因此,我已经为它启用了cloudwatch日志。我得到的日志在下面-

{ 
   "notification": {
        "messageId": "8cba93de-b794-577d-99be-c1ba5d5d21dd",
        "timestamp": "2017-10-21 06:26:17.946"
   },
   "delivery": {
        "destination": "+91XXXXXXXXXX",
        "smsType": "Transactional",
        "providerResponse": "Internal error",
        "dwellTimeMs": 79 
   },
   "status": "FAILURE" 
}

现在,具有讽刺意味的是,这实际上是一个新帐户,我正在从另一个帐户(手动)迁移资源。在这个较旧的帐户中,我有完全相同的设置,但它似乎能正确地将信息传送到我的手机。请注意,我的Lambda函数是在.net内核中编写的,我正在尝试将SMS发送到一个印度移动电话号码

截至2017年10月,亚马逊SNS支持短信:

  • 美国东部(北弗吉尼亚州)
  • 美国西部(俄勒冈州)
  • 欧盟(爱尔兰)
  • 亚太(东京)
  • 亚太地区(新加坡)
  • 亚太(悉尼)
发送短信息的快捷方式是:

使用
ap-south-1
时失败,因为该地区不支持SMS


您的Lambda代码可以通过另一个区域发送消息,但您需要在另一个区域创建您的SNS客户端对象

,尽管错误消息并不表明这是问题所在,但您是否已超过新帐户的短信消费限额?您是否尝试过直接从SNS控制台发送消息?您是否在其他地区尝试过SNS控制台,如us-east-1?Hello@Michael sqlbot我尝试过在“APNortheast1”地区直接从控制台发送短信。但它甚至没有从控制台上发送。这个经常账户是非常新的,因此,它不可能超过支出限额。但现在,当我尝试使用“USWest2”时,它可以从控制台和代码中工作。但在任何亚太地区都不起作用。这样就解决了我的问题。但是,不知道为什么它不能在AP地区工作,这让我对将代码用于生产感到不舒服。如果您有什么想法,请告诉我。如果它在一个地区有效,而不是在另一个地区,这表明您正在使用的地区存在问题,AWS支持部门需要注意,因此如果您有支持协议,您可能希望在上发布或打开支持案例。无论采用哪种方式,都要捕获日志并包含通过和失败的消息ID,以便支持人员能够找到特定的事件。另外请注意,除非您采取措施增加,否则您的帐户的默认支出限额仅为1美元。它仍然可能与此相关。@Michael sqlbot我不确定该地区本身是否存在一些问题。由于我的旧帐户仍然处于活动状态并已配置,我仍然可以使用旧帐户中的lambda功能从亚太地区发送邮件。但是,不知何故,新帐户的lambda函数无法做到这一点。无论如何,我会记录这个问题。我还更新了我账户的支出限额。谢谢你的帮助。一定要把问题简化成最简单的形式。如果它在SNS控制台中不起作用,那么它在Lambda中不起作用这一事实实际上并不相关,并且可能会分散对问题本质的注意力。请回来告诉我们您发现了什么。对于尝试以这种方式发送消息的用户,请注意:确保更新您的本地
aws
cli,因为
--电话号码
选项(相对而言)是新的(我运行的是版本1.10.34,但它没有)<代码>aws升级说明。短版本:
pip安装awscli——升级——用户
aws sns publish --phone-number 9112345678 --message foo --region ap-southeast-2