在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
专家
已提问 5 个月前36 查看次数
1 回答
0

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

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

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

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则