AWS Step Functions: how to deal with AWS API endpoints which support pagination

0

Hello,

I am using AWS Step Functions with the new AWS SDK integrations. I am wondering how to deal with API endpoints which return only a limit number of items like for instance "rds:describePendingMaintenanceActions" so that following requests using the "NextToken" value are required to get all data. Is there any construct/suggestion available how to model this. I am aware that I can use a Choice state in order to check if "NextToken" is empty or not and to act accordingly (go back to the API request step and repeat the whole process with the NextToken value) but this feels somehow clumsy. Thank you very much for any information.

已提問 3 年前檢視次數 978 次
3 個答案
0
已接受的答案

What you suggest is the right way to go at the moment, i.e., run the loop yourself and use a Choice state to check if the NextToken is empty as an exit criteria from the loop. If you need to do it in different places, maybe it is possible to do it with a nested workflow to run the loop.

profile pictureAWS
專家
Uri
已回答 3 年前
profile picture
專家
已審閱 3 個月前
  • Looping by using the NextToken is currently not working within Step Functions and SDK Integration, since the NextToken only works within the same IAM Session, but Step Functions assumes a new IAM Session/Role at each SDK Integration step/task. So the workaround is to call a Lambda which calls the API and the handles possible NextTokens.

0

Lambda supports up to 15 min execution time as of October 18, 2018. You could process the next tokens in the function itself.

profile pictureAWS
已回答 3 年前
0

We use the same technique: We want to load > 1 million data sets from a database and process it with different lambda functions and do some other stuff with it. Therefore, we use a choice state with a loop within the step functions and have an "iterator" step that is loading new data right after the choice.

Seems like I can not add an image here, I'm sorry :)

I would NOT go the way Rodney Lester suggests to do the looping in Lambda as you do not have retries over certain batches for example.

已回答 3 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南