我正在尝试通过 lambda 从 S3 上传和检索数据,但是它当前将数据作为字符串返回。如何将其作为 JSON 对象返回。
例如,这是我通过手动上传到 S3 存储的数据:
{
"data": [ { "encryptedString": "D31BKNI8yVwknKXadWIP9LSL06Oss9Xhc5qyZSBHTBDj8TQihTHjoinKJEoKRT03Pt8U/b81ZLxuSOJxw3MU+ZX/CgSolBUPWeH/gD6zA/yKR+aQ0vb/t3g1SysTaOiKK2i5cGuqy3FLbgenn2U43sYKpb97B9h/WKCjGISBsMw=" } ] }
使用以下 Java 代码触发 Lambda:
public static void cryptoFromLambda(S3Event s3Event) {
System.out.println("Called from Lambda. Records are:");
s3Event.getRecords().forEach(e -> {
try {
String bucket = e.getS3().getBucket().getName();
String key = e.getS3().getObject().getKey().replace('+', ' ');
key = URLDecoder.decode(key, "UTF-8");
AmazonS3Client s3Client = new AmazonS3Client();
String body = s3Client.getObjectAsString(bucket, key);
System.out.println(body);
} catch (UnsupportedEncodingException ex) {
System.out.println(ex.toString());
}
});
System.out.println("end lambda");
}
CloudWatch 中的每一行都被打印...
15:26:46 {
15:26:46 “数据”:[{
15:26:46 "encryptedString": "D31BKNI8yVwknKXadWIP9LSL06Oss9Xhc5qyZSBHTBDj8TQihTHjoinKJEoKRT03Pt8U/b81ZLxuSOJxw3MU+ZX/CgSolBUPWeH/gD6zA/yKR+aQ0vb/t3g1SysTaOiKK2i5cGuqy3FLbgenn2U43sYKpb97B9h/WKCjGISBsMw="
15:26:46 }]
15:26:46 }
...而我需要将每一行作为 JSON 的一个元素,然后我可以对其进行解析。
我认为我的问题更多在于我如何告诉 S3 它应该将我输入的内容作为 JSON 而不仅仅是一个文本文件,如果可以的话。
小唯快跑啊
相关分类