我使用envContainerOverrides从stepfunctions读取输出,然后使用此nodejscode调用批处理作业:在这里,我正在读取传递给批量作业。如何在java类(lambda函数)中使用AWS批处理提交批作业
Stepfunctions输出:
{"bucketName":"bucketName","filesList":["filelist-bucket/filelist1.txt","filelist-bucket/filelist2.txt"]}
此代码的NodeJS不能如果其抓取的阵列[文件清单:桶/ filelist1.txt“”文件列表斗/ filelist2.txt]它完美如果其一个单一的价值。
我想这个转换代码的NodeJS成Java:
'use strict';
const AWS = require('aws-sdk');
console.log('Loading function');
exports.handler = (event, context, callback) => {
// Take the data from step 1 and modify, send to standard output
var comment = event.Comment ;
var envContainerOverrides ={
"environment" :[
{
"name":"s3Bucket",
"value":event.bucketName
},
{
"name":"s3FileList",
"value":event.filesListUrl
}
]
};
const params = {
jobDefinition: process.env.JOB_DEFINITION,
jobName: process.env.JOB_NAME,
jobQueue:process.env.JOB_QUEUE,
containerOverrides: envContainerOverrides || null,
parameters: event.parameters || null,
};
// Submit the Batch Job
new AWS.Batch().submitJob(params, (err, data) => {
if (err) {
console.error(err);
const message = `Error calling SubmitJob for: ${event.jobName}`;
console.error(message);
callback(message);
} else {
const jobId = data.jobId;
console.log('jobId:', jobId);
callback(null, "Job Id : "+jobId);
}
});
};
我做这样的事情:
public class InitiateBatchJob1 {
public static BatchJobRequest process(BatchJobRequest batchJobRequest) throws Exception {
String s3Bucket = batchJobRequest.getBucketName();
List<String> s3FileList = batchJobRequest.getFilesListUrl();
Job job = new Job();
job.setJobDefinition("testbatchjobenv:2");
job.setJobQueue("nbatchjobqueue");
job.setJobName("Filedownload");
/*// Submit the Batch Job
new AWS.Batch().submitJob(params, (err, data) => {
if (err) {
console.error(err);
const message = `Error calling SubmitJob for: ${event.jobName}`;
console.error(message);
callback(message);
} else {
const jobId = data.jobId;
console.log('jobId:', jobId);
callback(null, "Job Id : "+jobId);
}
});
*/
return null;
}
}
BatchJobRequest.java
import java.util.List;
public class BatchJobRequest {
private String bucketName;
private List<String> filesListUrl;
public String getBucketName() {
return bucketName;
}
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
public List<String> getFilesListUrl() {
return filesListUrl;
}
public void setFilesListUrl(List<String> filesListUrl) {
this.filesListUrl = filesListUrl;
}
}
Job.java:
public class Job {
private String jobDefinition;
private String jobName;
private String jobQueue;
private String containerOverrides;
private String parameters;
public String getJobDefinition() {
return jobDefinition;
}
public void setJobDefinition(String jobDefinition) {
this.jobDefinition = jobDefinition;
}
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getJobQueue() {
return jobQueue;
}
public void setJobQueue(String jobQueue) {
this.jobQueue = jobQueue;
}
public String getContainerOverrides() {
return containerOverrides;
}
public void setContainerOverrides(String containerOverrides) {
this.containerOverrides = containerOverrides;
}
public String getParameters() {
return parameters;
}
public void setParameters(String parameters) {
this.parameters = parameters;
}
}
,我发现这个API AWSBatch http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/batch/AWSBatch.html#cancelJob-com.amazonaws.services.batch.model.CancelJobRequest-
但不知道它在我的class.I使用正确的API在网上搜心不是在Java中使用AWS批量多链接。
基本上我需要知道如何设置作业denfition,jobName,作业队列和使用java类提交batchjob。任何人都可以帮助我这个。