Java AWS Step函数带有Lambda函数输入JSON解析错误
我有一个AWSJava AWS Step函数带有Lambda函数输入JSON解析错误,java,json,amazon-web-services,amazon-s3,aws-lambda,Java,Json,Amazon Web Services,Amazon S3,Aws Lambda,我有一个AWSStep函数,它为每个状态调用Lambda函数s,我将PartETag对象的链接列表从一个状态传递到另一个状态,用于多端口加载 不确定是否有帮助,但下面是代码片段: import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import UploadJob; import UploadJobParameters
Step函数
,它为每个状态调用Lambda函数
s,我将PartETag
对象的链接列表
从一个状态传递到另一个状态,用于多端口加载
不确定是否有帮助,但下面是代码片段:
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import UploadJob;
import UploadJobParameters;
public class JobFinishHandler implements RequestHandler<ExportJobParameters, ExportJobParameters> {
@Override
public ExportJobParameters handleRequest(ExportJobParameters parameters, Context context) {
UploadJob uploadJob = new UploadJob(parameters, context);
context.getLogger().log("JobFinishHandler");
context.getLogger().log("parameters: " + parameters.toString());
context.getLogger().log("parameters.getPartETags().size(): " + parameters.getPartETags().size());
context.getLogger().log(parameters.getPartETags().toString());
context.getLogger().log("parameters.getPartETags().hashCode(): " + parameters.getPartETags().hashCode());
uploadJob.continueS3UploadStream();
uploadJob.jobFinish();
uploadJob.jobAbort();
return parameters;
}
}
我检查了
PartETag
类,以查看是否存在默认构造函数,因此我将重写该类并创建一个默认构造函数。但我觉得既然PartETag
是亚马逊的一个对象,他们不应该已经想到了这一点吗?我做错了吗?有更好的方法吗 为了防止有人在寻找这个问题的答案,我刚刚创建了一个自定义类,它扩展了PartETag
,并在完成多端口加载之前转换了列表:
import com.amazonaws.services.s3.model.PartETag;
import com.amazonaws.util.json.Jackson;
public class PartETagExt extends PartETag {
public PartETagExt() {
super(0, "a");
}
public PartETagExt(PartETag partETag) {
super(partETag.getPartNumber(), partETag.getETag());
}
@Override
public String toString() {
return Jackson.toJsonString(this);
}
}
然后将列表转换为常规的PartETag
:
List<PartETag> partETags = new LinkedList<PartETag>();
partETags.addAll(partETagExts);
CompleteMultipartUploadRequest compRequest =
new CompleteMultipartUploadRequest(bucket, key, uploadId, partETags);
List partETags=newlinkedlist();
partETags.addAll(partETagExts);
CompleteMultipartUploadRequestCompRequest=
新的CompleteMultipartUploadRequest(bucket、key、uploadId、parteTag);
是否要添加多个步骤来处理多部分上传?共享代码片段。@ConfusedCoder是的,这是一个step函数,它会一直上载多端口加载的部分内容,直到完成为止。即使在调用lambda和step函数解析输入之前,也会引发此错误。我仍然会分享代码以防万一。
List<PartETag> partETags = new LinkedList<PartETag>();
partETags.addAll(partETagExts);
CompleteMultipartUploadRequest compRequest =
new CompleteMultipartUploadRequest(bucket, key, uploadId, partETags);