使用 Java SDK 的 AWS DataPipeline EvaluateExpression

AWS DataPipeline EvaluateExpression using Java SDK

像下面这样使用 AWS DataPipeline API, I'm trying to programmatically evaluate an 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 对象实际发出请求。我看过 EvaluateExpressionResultsetEvaluatedExpression 方法只需要 String 作为输入。

我是不是做错了什么,遗漏了一些基本的东西,或者 SDK 不支持我正在尝试做的事情?

任何意见或建议将不胜感激。谢谢!

所以我在发布问题后几分钟就弄明白了。事实证明答案很简单,我只是看这个东西太久了。 DataPipeline 对象具有方法 evaluateExpression(),它采用 EvaluateExpressionRequest 和 returns EvaluateExpressionResult。您可以通过对返回的对象调用 getEvaluatedExpression 来获得计算结果。

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

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

希望对有类似痛苦的人有所帮助!