在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
ESPERTO
posta 5 mesi fa38 visualizzazioni
1 Risposta
0

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

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

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

profile picture
ESPERTO
con risposta 5 mesi fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande