问题描述
我正在编写一个 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 过滤器中表达您的需求,您就不需要为此自定义代码。