amazon-web-services - AWS Lambda在Java中添加两个数字
问题描述
我想知道如何读取多个输入并对这些输入执行操作。我希望我的 aws lambda 函数读取两个输入整数并将这些整数相加并返回总和。
我是 aws lambda 的新手。
我的代码:
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import com.fasterxml.jackson.databind.ObjectMapper;
public class AWSCalculator implements RequestStreamHandler {
private ObjectMapper mapper = new ObjectMapper();
@Override
public void handleRequest(final InputStream inputStream, final OutputStream outputStream,
final Context context) throws IOException {
LambdaLogger logger = context.getLogger();
logger.log("Loading Java Lambda handler of ProxyWithStream");
DataObject data = mapper.readValue(inputStream, DataObject.class);
data.calculateResults(context);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
writer.write(mapper.writeValueAsString(data));
logger.log(mapper.writeValueAsString(data));
writer.close();
}
}
package com.amazonaws.lambda.demo;
import java.util.logging.Logger;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DataObject {
@JsonProperty("Number1")
int number1;
@JsonProperty("Number2")
int number2;
int sum;
int product;
int difference;
float quotient;
public void calculateResults(Context context) {
LambdaLogger log = context.getLogger();
sum = number1 + number2;
product = number1 * number2;
difference = Math.abs(number1 - number2);
quotient = (float) number1 / (float) number2;
Logger.getLogger("The Sum is : " + String.valueOf(sum));
}
}
如何从 lambda 函数读取输入?
解决方案
你只有一个小问题。在您的DataObject
班级中,您没有正确登录。您传入Context
以获取LambdaLogger
然后Logger
从java.util.logging
包中使用。更改代码:
Logger.getLogger("The Sum is : " + String.valueOf(sum));
成为
log.log("The Sum is : " + sum);
通过使用LambdaLogger
您的输出到 CloudWatch 更容易。我也删除了它,String.valueOf
因为它不需要。
一旦你这样做了,你的代码就可以正常工作了。我通过 AWS 控制台运行它,输入如下:
{
"Number1": 5,
"Number2": 3
}
在 CloudWatch 日志中我得到:
推荐阅读
- python - 根据列数据转换数据框
- ios - 已解决:Firebase Cloud 向 iOS 发送静默推送通知在提示消息时不起作用
- c# - 使用带有 GUID 的 IAggregateFluentExtensions.GraphLookup() 时出现 Mongo DB BsonSerializationException
- flutter - 如何在飞镖/颤振中设置或删除地图标记
- javascript - 添加 X 轴标题会导致 Uncaught RangeError: minimumFractionDigits value is out of range in Chart.js
- java - 每次运行代码时我的文件都会清除 - Java
- c# - 我希望用户定义的字符串与布尔值相关联,以指示字符串是否设置为用户值
- bash - shell脚本中的字符串到整数的转换并返回到字符串
- flutter - 如何使用 timepicker 小部件显示使用 Flutter 的开始和结束时间
- ios - 在不指定 DispatchQueue 的情况下使用 withAnimation 会发生什么