gpt4 book ai didi

java - 从 AWS Lambda 发布到 SNS 时超时

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:08 26 4
gpt4 key购买 nike

我正在尝试通过 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 版本:$LATEST
结束 RequestId:8db74187-459b-42c5-8a06-b3a74873b236
报告 RequestId:8db74187-459b-42c5-8a06-b3a74873b236 持续时间:10001.66 毫秒计费持续时间:10000 毫秒内存大小:128 MB 使用的最大内存:37 MB
任务在 10.00 秒后超时

我拥有所有适当的权限,并且我可以使用在我的 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 秒似乎已经解决了这个问题。

关于java - 从 AWS Lambda 发布到 SNS 时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34490252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com