在Step Functions中调用Redshift Data API:ExecuteStatement后,没有等待Redshift 函数/存储过程执行完毕。

0

【以下的问题经过翻译处理】 我在一个Step Function中使用了Redshift Data API:ExecuteStatement(https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html)。分别有两个Step Function states/tasks 按顺序调用了2个独立的Redshift函数 - 1)在中间阶段表中加载数据 2)从阶段表中加载数据到最终表中,使用upsert(update/insert)逻辑。

在执行Step Function时,我观察到Step function简单地触发ExecuteStatement,没有等待Redshift中的存储过程/函数的完成确认,而是直接运行了剩余任务并返回成功结果。

我该如何让Step Function可以等待Redshift存储过程/函数执行完成?目前Step Function中没有类似Glue可以等待子步骤完成的任务选项。

profile picture
EXPERTE
gefragt vor 5 Monaten38 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 ExecuteStatement是一个异步API,这意味着你会得到一个statement ID,然后您需要调用DescribeStatement来检查语句的状态。当它完成时再继续后面的操作。

在state machine中,您可以添加ExecuteStatement step -> 进入Wait state等待几秒钟 -> DescribeExecution step -> Choice state来检查它是否完成,然后根据结果,要么返回Wait state,要么进入下一步。

对于我们的一些已经做好优化的集成,我们有.sync集成类型会为你完成这些。但RedShift不是其中之一,所以您需要自己实现。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen