Amazon Simple Notification Service(Amazon SNS)是一种Web服务,可以轻松地从云中设置,操作和发送通知。它为开发人员提供了高度可扩展,灵活且经济高效的功能,可以从应用程序发布消息并立即将其提供给订阅者或其他应用程序。它旨在使开发人员更轻松地进行Web规模计算。
我尝试通过 Lambda 函数调用将一些数据发布到 SNS,但它似乎不起作用。我的功能代码是 - 公共类 Handler 实现 RequestHandler 我尝试通过 Lambda 函数调用将一些数据发布到 SNS,但它似乎不起作用。我的功能代码是 - public class Handler implements RequestHandler<DynamodbEvent, Void> { private static final String SNS_TOPIC_ARN = "arn:aws:sns:us-west-2:account_number:function_name"; @Override public Void handleRequest(DynamodbEvent dynamodbEvent, Context context) { LambdaLogger logger = context.getLogger(); AmazonSNSClient snsClient = new AmazonSNSClient(new DefaultAWSCredentialsProviderChain()); snsClient.setRegion(Region.getRegion(Regions.US_WEST_2)); for (DynamodbStreamRecord record : dynamodbEvent.getRecords()) { Map<String, AttributeValue> newImage = record.getDynamodb().getNewImage(); if (newImage == null) { continue; } String sensorId = newImage.get("sensorID").getS(); long timestamp = Long.parseLong(newImage.get("timestamp").getS()); double temperature = Double.parseDouble(newImage.get("payload").getM().get("temp").getN()); String data = sensorId + " " + timestamp + " " + temperature; logger.log(data); PublishRequest publishRequest = new PublishRequest(SNS_TOPIC_ARN, data); PublishResult publishResult = snsClient.publish(publishRequest); logger.log("Publish Successful " + publishResult.getMessageId()); } snsClient.shutdown(); return null; } } 此调用会导致超时(10 秒)并且 lambda 调用失败。如果我注释掉 SNS 发布部分,即如果我只记录从 DynamoDB 收到的数据,它就可以正常工作。一旦添加SNS发布代码,就会超时。 CloudWatch 中记录的超时消息是 - START RequestId: 8db74187-459b-42c5-8a06-b3a74873b236 Version: $LATEST END RequestId: 8db74187-459b-42c5-8a06-b3a74873b236 REPORT RequestId: 8db74187-459b-42c5-8a06-b3a74873b236 Duration: 10001.66 ms Billed Duration: 10000 ms Memory Size: 128 MB Max Memory Used: 37 MB Task timed out after 10.00 seconds 我拥有所有适当的权限,并且我可以使用在我的 PC 上运行的以下代码发布到 SNS - PublishRequest publishRequest = new PublishRequest(SNS_TOPIC_ARN, data); PublishResult publishResult = snsClient.publish(publishRequest); System.out.println("Publish Successful " + publishResult.getMessageId()); 我也尝试过使用 AmazonSNSAsyncClient 而不是 AmazonSNSClient,它给出了相同的结果。 我在这里缺少什么? 好吧,既然评论我问题的人都没有回答,那我自己来回答吧。 将内存使用量增加到 256 MB,并将超时时间增加到 30 秒似乎已经解决了问题。 增加为 Lambda 操作分配的内存量。 增加分配给 lambda 函数的内存也对我有用(此设置位于 lambda 控制台的基本设置下)。 这让我抓狂 - 我对 2 个具有相同配置的不同 lambda 函数使用相同的 JAR 文件,并且 SNS 调用对其中一个有效,但对另一个超时。令人抓狂! 就我而言,问题是网络问题。如果 VPC 缺少 NAT 网关,VPC 中的 lambda 通常无法访问网络。这阻止了 SNS 的触发。 您可以通过为 Amazon SNS 创建 Amazon VPC 终端节点来解决此问题: 在 Amazon VPC 控制台中,创建一个新终端节点 选择 AWS 服务 com.amazonaws..sns 选择您的 lambda vpc、所有子网、安全组 建立此 AWS PrivateLink 后,来自我的 Lambda 函数的 SNS 通知立即生效,无需对 SNS 或 Lambda 本身进行进一步更改。
我收到了SNS通知,并且我已经订阅了SQS。我可以轮询我的消息并查看其内容。消息的内容包括自动化的通过/失败状态。 ...
我有一个功能,可以获取设备端点列表,并且我需要向该列表中的所有设备发送推送通知。该列表是动态的,因为它可以包含任意数量的...
有 salesforce 和 Amazon SNS 集成的重新参考示例吗?
我是推送通知的新手,并且对此非常感兴趣。我们有 AWS SNS(简单推送通知)和 AWS Pinpoint。 我对 AWS 的这些服务感到困惑。 ...有什么区别
我使用电子邮件地址的端点订阅了 SNS 主题。 昨晚我收到了退订该主题的通知,我询问了所有可以访问收件箱的人,没有人点击
如何在CloudFormation脚本中添加SNS主题的邮件订阅?
测试主题订阅: 类型:AWS::SNS::订阅 特性: 端点:[email protected] 协议:电子邮件 TopicArn:!Ref TestSnsTopic 如何添加多个电子邮件 ID 的订阅...
terraform,aws_sns_topic_policy 使用此处文档作为策略并在此处文档中插入变量
我想使用 terraform 更新我的 sns 目标策略,下面是我的代码。但我的地形计划因以下错误而失败。 预期是表达式的开始,但发现无效的表达式...
我想在 Windows 实例终止时使用 SNS 发送一封包含一些用户数据的电子邮件。 一旦我发出终止命令,是否有机会运行一些脚本来发送 SNS 消息? 在李...
在我们的系统中,一个 SNS 主题有多个订阅者,每个订阅者对消息进行不同的处理。 对于某些订阅者来说,原始事件发生的顺序以及...
我在 cdk 中定义了一个堆栈,其中包含一个 AWS 账户中的 SNS 主题和另一个 AWS 账户中订阅该主题的 SQS 队列。 我担心会出现订阅失败的情况...
AWS SNS 订阅中出现意外的“FilterPolicyScope”要求 - 无服务器无效参数,但参数不存在
我有一个SNS FilterPolicy,根据AWS文档,不需要filterPolicyScope。如果未设置,则默认为 MessageAttributes,它说。这就是我已经忍受了很长一段时间的方式
通过 SDK 创建订阅时,AWS SNS 未附加 Lambda 触发器
我想使用 SNS 订阅来触发 Lambda 函数。 首先,我通过 AWS SDK 创建了一个主题和订阅: 从“@aws-sdk/client-sns”导入{SubscribeCommand};
如何使用python解析aws lambda中的SNS通知消息
我创建了 SNS 通知主题,以便每次在 aws codepipeline 中部署新代码时接收代码管道成功或失败的通知。我通过订阅收到的消息...
我应该使用什么类型的 Lambda 事件来处理从 SQS 队列收到的 SNS 消息?
我有一个 SNS 主题,我向其发布 SNS 消息。我订阅了一个 SQS 队列,这又触发了 Lambda 函数。 根据此文档页面,我应该会收到通知
如果我想通过 SQS 队列处理 SNS 通知,我应该在 lambda 中使用什么类型的事件?
我有一个执行某些操作的 lambda,如果成功,我会发布一个 SNS 通知来广播该事件发生。我订阅了一个 SQS 队列,这又会触发后续操作...
让应该处理 DLQ 队列消息的 Consumer 还希望额外记录有关 Lambda 发送到 DLQ 的消息的信息。 查看两种可能的解决方案。 从图像上的这两个解决方案...
问题陈述 我有一个应用程序,其中客户端(前端)的数据需要近实时更新。 后端更新数据库中的字段。有一个 GET 端点...
问题陈述 我有一个应用程序,其中客户端(前端)的数据需要近实时更新。 后端更新数据库中的字段。有一个 GET 端点...