使用Java SDK的AWS DataPipeline EvaluateExpression

时间:2018-08-26 18:15:10

标签: java aws-sdk amazon-data-pipeline

我正在使用AWS DataPipeline API,以编程方式评估Expression,如下所示:

sometext-#{format(@scheduledStartTime, 'YYYYMMddHHmmss')

要计算该表达式,我使用的PipelineObject如下所示:

Id:@MyPipelineObject_2018-08-26T01:00:00
Name:@MyPipelineObject_2018-08-26T01:00:00
     - Key:@scheduledStartTime
     - StringValue:2018-08-26T01:00:00
     - Key:@scheduledEndTime
     - StringValue:2018-08-27T01:00:00

假设我知道pipelineId和pipelineObjectId,如何计算表达式?我正在使用Java AWS SDK,并像这样创建EvaluateExpressionRequest

String expressionToBeEvaluated = "sometext-#{format(@scheduledStartTime, 'YYYYMMddHHmmss')";
String myPipelineObjectId = "@MyPipelineObject_2018-08-26T01:00:00";

EvaluateExpressionRequest evaluateExpressionRequest = new EvaluateExpressionRequest()
                .withPipelineId(myPipelineId)
                .withExpression(expressionToBeEvaluated)
                .withObjectId(myPipelineObjectId);

但是,从文档来看,我尚不清楚如何实际使用EvaluateExpressionRequest对象发出请求。我看过EvaluateExpressionResult,但是setEvaluatedExpression方法仅将String作为输入。

我是在做错什么,错过了一些基本知识,还是SDK只是不支持我正在尝试做的事情?

任何输入或建议,我们将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

因此,我在发布问题几分钟后就知道了。事实证明答案很简单,而我一直在研究这些东西太久了。 DataPipeline对象具有方法evaluateExpression(),该方法采用EvaluateExpressionRequest并返回EvaluateExpressionResult。通过在返回的对象上调用getEvaluatedExpression,可以得到评估结果。

EvaluateExpressionRequest evaluateExpressionRequest = new EvaluateExpressionRequest()
                .withPipelineId(myPipelineId)
                .withExpression(expressionToBeEvaluated)
                .withObjectId(myPipelineObjectId);

dataPipeline.evaluateExpression(evaluateExpressionRequest).getEvaluatedExpression(); //evaluates to sometext-20180826010000

希望能帮助患有类似疾病的人!