当前位置:  开发笔记 > 编程语言 > 正文

AWS步骤功能 - 等到事件发生

如何解决《AWS步骤功能-等到事件发生》经验,为你挑选了1个好方法。

我有一个用例,我有一个AWS Step功能,当文件上传到S3时触发,从那里第一步运行ffprobe从外部服务获取文件的持续时间,如transloadit,其中写入输出回到S3.

我可以从该事件创建一个新的step函数,但是如果可以在原始step函数中有一个Await promise然后继续到下一个函数,我就会徘徊 - 考虑到ffprobe可能需要更长的时间才能恢复.

任何建议都非常感谢如何解决这个问题.



1> wrschneider..:

现在,AWS Step Functions作为第一类,支持长时间运行的步骤的异步回调。

这类似于@mixja的答案,但经过简化。工作流程中的单个状态可以直接调用Lambda,SNS,SQS或ECS并等待对的调用SendTaskSuccess

有一个针对SQS记录的好示例,其中步进函数发送消息并暂停工作流程执行,直到提供回调为止。Lambda是等效的(假定像transloadit这样的主要处理过程发生在Lambda本身之外)

您的步进函数定义如下所示

"Invoke transloadit": {
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken",
  "Parameters": {
    "FunctionName": "InvokeTransloadit",
    "Payload": {
        "some_other_param": "...",
        "token.$": "$$.Task.Token"
     }
  },
  "Next": "NEXT_STATE"
}

然后在您的Lambda中,您将执行以下操作

def lambda_handler(event, context):
    token = event['token']

    # invoke transloadit via SSM, ECS, passing token along

那么在您长​​期运行的主要流程中,您将使用令牌(如aws stepfunctions send-task-success --task-token $token来自shell脚本/ CLI 的令牌)或与API调用类似的令牌发出回调。

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有