问题描述
我对无服务器架构比较陌生,但在尝试为我的团队创建一个完全离线本地后端时遇到了一个非常令人沮丧的问题。显然我遗漏了一些基本的东西,所以请随时告诉我;)
我们正在尝试将此后端的无服务器框架与 AWS 提供的所有服务一起使用。我不打算讨论我们正在使用的多处理器 lambda,因为这发生在我将在下面展示的非常基本的示例中。仅供参考,我们正在尝试利用 AWS 自己的本地步骤函数环境,就无服务器框架方面而言,我们正在尝试使用他们的无服务器步骤函数和无服务器离线插件以及其他一些类似的(最重要的可能是) serverless-step-functions-local 你会看到在下面的 yaml 中列出。请记住,这是完全离线,使用模拟凭据等
我能够使用简单的 callback() 获得以下片段的同步形式以“返回/释放”到下一个 lambda 任务状态,没有问题……但是一旦我尝试使用异步 lambda返回一个对象(就像我试图开始工作的实际产品代码中的情况一样).. step 函数只是“挂起”并且永远不会将返回的数据释放到下一个 lambda 任务状态。
这是使用离线本地步骤函数和异步 lambda 的已知问题吗?我写错了 lambdas 吗?
Test1.js
module.exports.handler = async (event,context) => {
const msg = "Hello Folks";
console.log('Test1 Msg: ',msg);
return msg;
}
Test2.js
module.exports.handler = async (event,context) => {
const msg = "Hello Again";
console.log('Test2 Msg: ',msg);
return msg;
}
无服务器.yml
service: stepfuncsoffline
frameworkVersion: ">=1.21.0 <=2.0.0"
plugins:
- serverless-step-functions
- serverless-step-functions-local
- serverless-offline-lambda
- serverless-offline
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: 20201221
stage: dev
region: us-east-1
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:*
- s3:*
Resource: "*"
custom:
stepFunctionsLocal:
accountId: 101010101010
region: us-east-1
TaskResourceMapping:
Test1: arn:aws:lambda:us-east-1:101010101010:function:Test1
Test2: arn:aws:lambda:us-east-1:101010101010:function:Test2
functions:
Test1:
handler: test1.handler
Test2:
handler: test2.handler
stepFunctions:
stateMachines:
OfflinestateMachine:
deFinition:
StartAt: Wait2Start
States:
Wait2Start:
Type: Wait
Seconds: 2
Next: Test1
Test1:
Type: Task
Resource: !GetAtt Test1.Arn
Next: Test2
Test2:
Type: Task
Resource: !GetAtt Test2.Arn
Next: Pass2Wait
Pass2Wait:
Type: Pass
Next: Wait2End
Wait2End:
Type: Wait
Seconds: 2
End: true
package.json
{
"name": "stepfuncsoffline","version": "1.0.0","description": "","main": "handler.js","scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},"author": "","license": "ISC","dependencies": {
"aws-sdk": "^2.938.0","serverless": "1.83"
},"devDependencies": {
"serverless-offline": "^4.10.6","serverless-offline-lambda": "^1.0.6","serverless-step-functions": "^2.30.0","serverless-step-functions-local": "^0.1.6"
}
}
运行后控制台的照片..注意所有等待状态工作正常..第一个 lambda 的控制台日志出来..然后我在等待几分钟后将其杀死 serverless offline console log
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)