我正在使用AmazonSWF实现一个工作流,我的一个活动以lambda函数的形式出现。
SWF和Lambda都在伦敦地区运行,它们都单独工作。但是,轮询任务后我的决策程序失败,原因为"LAMBDA_SERVICE_NOT_AVAILABLE_IN_REGION">
我没有在代码中明确指定我正在使用哪个区域,我认为它将与我运行 SWF Web 客户端的区域相同。
这是我的决策程序中的相关代码:
val attrs = ScheduleLambdaFunctionDecisionAttributes()
.withId("S3ControlWorkflowFunction")
.withName("S3ControlWorkflowFunction")
decisions.add(
Decision()
.withDecisionType(DecisionType.ScheduleLambdaFunction)
.withScheduleLambdaFunctionDecisionAttributes(attrs)
)
我的活动工作线程根本不为 lambda 函数做任何事情,但它不应该正确吗?
我已在此处使用我的 IAM 角色注册了工作流:
wf.registerWorkflowType(RegisterWorkflowTypeRequest()
.withDomain(DOMAIN)
.withName(WORKFLOW)
.withVersion(WORKFLOW_VERSION)
.withDefaultChildPolicy(ChildPolicy.TERMINATE)
.withDefaultTaskList(TaskList().withName(TASKLIST))
.withDefaultTaskStartToCloseTimeout("30")
.withDefaultLambdaRole(iamARN.id))
找到了修复程序。
事实证明,从 SWF 调用 lambda 函数只是在区域 eu-west-2 以及其他一些区域上不受支持。但是,我在文档中根本找不到对此的任何引用。找到这个论坛帖子,给了我提示。将我所做的所有工作迁移到 eu-west-1 解决了这个问题。亚马逊的糟糕表现在这里