簡體   English   中英

如何使用 aws java sdk 中的 getExecutionHistory 檢查步驟 function 的狀態

[英]How to use getExecutionHistory from aws java sdk to check status of a step function

I am new to aws and doing a PoC around aws lambda and step function. So my problem statement is: A http request comes to API gateway which triggers a lambda function and through that lambda I am trigerring a step function something like awsStepFunction.startExecution(執行請求)

現在,由於這本質上是異步的,它只會觸發步驟 function 並返回響應,但我只想在 lambda 的執行完成或失敗時返回來自 lambda 的響應。

我遞歸地使用getExecutionHistory來獲取執行的響應,但這會影響我的執行時間,並且在進行負載測試時也會出現節流異常,說明速率超出

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。

但是在這里,當觸發多個請求時,在 cloudwatch 日志中出現錯誤 400 Throttling exception rate exceeded並因此獲得502 bad gateway的 http 響應

這是我得到的錯誤截圖

你想得到 Lambda 的回復,還是想知道步驟 function 的回復? Lambda 將開始步驟 function 返回就是這樣。 在那種情況下,您將不想從 Lambda 獲得響應。您希望從哪里獲得響應 API 網關? 亞馬遜 API 超時 29 秒。

所以它歸結為從步驟 function 獲取響應的一個選項。你可以做的是運行步驟 function。讓它自己花時間,完成后創建一個觸發器。

您可以在 SUCCEEDED、FAILED、TIMED_OUT 和 ABORTED 上設置事件橋Event Bridge 事件橋的目標將是另一個 lambda function,它可以指示您步驟 function 的狀態。

如果你想獲得步驟 function 的歷史記錄,如輸入和 output 在每個步驟 function 步驟 function 中,你可以在這個 lambda function 中調用 getExecutionHistory。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM