Boto3 SNS不一致行为发布短信

Boto3 SNS inconsistent behavior publishing text message

我有一个功能可以在 运行:

时发送短信
def txtUserValidationCode(countryCode, phoneNum, message):
    sns = boto3.client('sns')
    try:
        logger.info("Trying to send text")
        sns.publish(
            PhoneNumber="+" + countryCode + phoneNum,
            Message=message
        )
    except:
        logger.info("Text message failed")
    else:
        logger.info("Text message successful")

有时有效,有时超时,即使输入参数完全相同。使用 boto3 SNS 可以发送多少文本有限制吗?我只是尝试对 phone 数字和消息进行硬编码,以测试是否是我的输入导致发布方法关闭,但它仍然不起作用。

更令人困惑的是它没有抛出错误,只是超时。

更令人困惑的是,当我将相同的代码复制并粘贴到另一个函数时,它工作正常。

有人对此有解释吗?我通读了 SNS 文档,但没有找到任何可以解释这一点的内容。我在想也许我需要申请增加配额?

顺便说一句:lambda 具有管理员权限

更新 功能刚刚成功,什么都没改变,15分钟后再次测试。真的很想知道超时的原因。我应该增加 lambda 的超时时间吗?我还将默认的短信类型更改为交易型,因为我看到它们具有更高的优先级?也许这是为什么?任何答案都有帮助

听起来您有一个与多个子​​网关联的 AWS Lambda 函数,其中一些子网是 public,一些是私有的。

首选是使用 与 VPC 关联的 AWS Lambda 函数。这将提供对 Internet 的直接访问,从而提供对 Amazon SNS 的直接访问。

但是,如果 AWS Lambda 函数与 VPC 相关联,请确保:

  • Lambda 函数仅与私有子网
  • 关联
  • public 子网中有 NAT 网关或 NAT 实例

我转到 SNS 控制台并将我的默认消息更改为事务性消息,这使其在 AWS 队列中具有更高的优先级。到目前为止,这一直有效。