如何使用 AWS Lambda 在 AWS Flow Framework 中实施 Decider 和 Activity worker?

How to implement Decider and Activity workers in AWS Flow Framework using AWS Lambda?

我们有 2 个 Spring-AWS Flow Framework 启动应用程序。

决策者工人:

@SpringBootApplication
public class WorkerApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(WorkerApplication.class);
        ApplicationContext context = application.run(args);
        WorkflowWorker workflowWorker = context.getBean(WorkflowWorker.class);

        workflowWorker.start();
    }
}

Activity工人:

@SpringBootApplication
public class ActivityApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(ActivityApplication.class);
        ApplicationContext context = application.run(args);
        ActivityWorker activityWorker = context.getBean(ActivityWorker.class);

        activityWorker.start();
    }
}

我想知道是否可以使用 AWS Lambda 服务实施其中的 any/both。我了解如何使用 Lambda 的函数处理程序:

public interface RequestHandler<I, O> {
    O handleRequest(I var1, Context var2);
}

但我不知道如何将它应用到我们的 SWF,因为工作人员 轮询 来自 AWS 的任务。

谢谢!

编辑:

正如 Maxim Fateev 所回答的,可以将 lambda 任务视为活动,但对于 decider/s。

当我在区域 ap-southeast-1 下的 SWF 上尝试时, 它返回错误:

ScheduleLambdaFunctionFailed [with EventId 5] selected
Cause: LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION
Decision Task Completed Event Id    : 4
Event Timestamp: Mon Oct 03 09:58:05 GMT+800 2016

但是当 运行 在区域 eu-west-1 上时,它成功完成。

似乎到目前为止,swf 到 lambda 的调用虽然可用,但在某些地区(如 ap-southeast-1)还不能正常工作。 当前文档中未指定这些

SWF 服务支持调用 Lambda 函数而不是活动。参见 Implementing AWS Lambda Tasks section of AWS Flow Framework for Java Programming Guide。不幸的是,目前还没有办法将决策程序绑定为 Lambda 函数。