检查 cloudformation 中阶跃函数的状态

问题描述

我正在编写一个 cloudformation 模板,其中我将有一个 lambda 支持自定义资源,它将触发一个 step 函数执行。 这个 step 函数可能需要超过 15 分钟才能执行,所以我不能等待它在调用 lambda 中完成。所以 Lambda 会在调用 step 函数后立即返回。 但是,我想等待 step 函数完成,然后再根据 step 函数输出继续创建另一个资源。

这是如何实现的。我引用的 step 函数已经创建,而不是我当前堆栈的一部分。

我知道 cloudformation 支持等待条件和等待条件句柄,但这需要更新步骤函数调用等待条件句柄,这是不可能的,因为步骤函数归不同的团队所有。

有什么办法可以解决这个问题吗?

解决方法

棘手的事情。但是您可以尝试使用 CloudWatch 事件来侦听给定的事件配置:

            EventPattern:
                source:
                    - "aws.states"
                detail-type:
                    - "Step Functions Execution Status Change"

然后,您可以编写自己的 Lambda 函数来触发您的等待条件。或者,如果可以精确过滤您想要等待的事件,请将此事件模式目标直接绑定到 SNS 主题,这样如果您可以在简单的 JSON 过滤器中表达您的需求,您就不需要为此自定义代码。