【问题标题】:How to use getExecutionHistory from aws java sdk to check status of a step function如何使用 aws java sdk 中的 getExecutionHistory 来检查步进函数的状态
【发布时间】:2022-09-29 11:36:53
【问题描述】:

我是 aws 新手,并围绕 aws lambda 和 step 函数进行 PoC。 所以我的问题陈述是: 一个 http 请求到达 API 网关,它触发了一个 lambda 函数,通过那个 lambda 我触发了一个类似的阶跃函数awsStepFunction.startExecution(executionRequest)

现在,由于这本质上是异步的,它只会触发 step 函数并返回响应,但是 我只想在 lambda 执行完成或失败时从 lambda 返回响应。

我在用获取执行历史递归地获得执行的响应,但这会影响我的执行时间以及在进行负载测试时限制异常说速率超出

ExecutionResult result = awsStepFunction.startExecution(executionRequest);
getHistory(awsStepFunction, result);

private void getHistory(awsStepFunction, result){

List<HistoryEvents> list = GetExecutionHistory(request).getEvents;

while(true) {
If(list.get(0).getId == 71 || list.get(0).getStatus.equals("ExecutionFailed")){
    return;
} else {
   Thread.sleep(1000);
  getHistory(awsStepFuncrion,result);
}
return;
}
}

71 是确认执行成功的事件的最终 id。

但是在这里,当触发多个请求时,会出现错误 400超出限制异常率在 cloudwatch 日志中,因此得到 http 响应502错误的网关

This is the error screenshot that I am getting

【问题讨论】:

    标签: java amazon-web-services aws-lambda aws-step-functions aws-java-sdk


    【解决方案1】:

    您想从 Lambda 获得响应,或者您想知道 Step 函数的响应? Lambda 将启动 step 函数并返回 that's it 。 在这种情况下,您将不希望从 Lambda 获得响应。 您想在哪里获得响应 API 网关? Amazon API 有 29 秒超时。

    所以归结为从 Step 函数获取响应的一种选择。 您可以做的是运行 step 功能。 让它自己花时间,完成后创建一个触发器。

    您可以在 SUCCEEDED、FAILED、TIMED_OUT 和 ABORTED 上有一个事件桥 Event Bridge。 事件桥的目标将是另一个 lambda 函数,它可以指示您步进函数的状态。

    如果您想在每个 step 函数 step 函数中获取 step 函数的历史记录,例如输入和输出,您可以很好地在这个 lambda 函数中调用 getExecutionHistory 。

    【讨论】:

    • 因此,为阶跃函数状态更改创建 EventBridge 规则也会产生运行持续时间吗?
    • 是的,正确的@ArchitAgarwal
    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2019-08-18
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多