amazon-web-services - 如何从 Node.js Lambda 函数调用 step 函数?
问题描述
我正在尝试从 Node.js lambda 函数调用 step 函数。我从这个线程尝试了解决方案并更新了实现。
显示错误响应但更新的代码显示成功响应的解决方案。但是更新后的代码没有调用 step 函数。
我的代码:
console.log('Loading function');
const AWS = require('aws-sdk');
exports.handler = function(event, context) {
console.log('Loading step functions');
const stepFunctions = new AWS.StepFunctions({
region: 'us-east-2'
});
console.log('Loading init');
module.exports.init = (event, context, callback) => {
console.log('Loading params');
const params = {
stateMachineArn: 'ARN of My State Machine',
// input: JSON.stringify({}), Optional if your statemachine requires an application/json input, make sure its stringified
name: 'TestExecution' // name can be anything you want, but it should change for every execution
};
console.log('start step functions');
stepFunctions.startExecution(params, (err, data) => {
if (err) {
console.log(err);
const response = {
statusCode: 500,
body: JSON.stringify({
message: 'There was an error'
})
};
callback(null, response);
} else {
console.log(data);
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'Step function worked'
})
};
callback(null, response);
console.log(response);
}
});
};
};
我已经在 Lambda 函数中添加了上述代码并部署了这些代码。之后,我使用了 lambda 函数的 Test 选项。这是执行 Lambda 函数的正确方法吗?测试结果是成功,但是当我检查状态机时,最近没有执行。帮我找到解决方案,我对步进功能很陌生。提前致谢。
解决方案
以下是我所做的事情:
- 创建了 lambda 并在
lambda role
- 创建了类型的阶跃函数(只是一个你好世界)
standard
。在创作时,我选择ALL Logs
了CloudWatch Log Group
. 甚至它们也显示在step function
控制台中,如下所示Logging
。
下面是我调用 step 函数的代码:
var aws = require('aws-sdk')
exports.handler = (event, context, callback) => {
var params = {
stateMachineArn: 'arn:aws:states:us-east-1:1234567890:stateMachine:Helloworld',
input: JSON.stringify({})
};
var stepfunctions = new aws.StepFunctions()
stepfunctions.startExecution(params, (err, data) => {
if (err) {
console.log(err);
const response = {
statusCode: 500,
body: JSON.stringify({
message: 'There was an error'
})
};
callback(null, response);
} else {
console.log(data);
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'Step function worked'
})
};
callback(null, response);
}
});
}
Lambda 执行日志
Step Function 执行日志
推荐阅读
- javascript - 转换 Scratch 颜色
- php - 在服务类中使用 Symfonybundle 中的参数
- docker - Docker openCV 安装问题
- javascript - 如何在同一页面上进行控件,直到文本框正确为止。字符?
- vue.js - 需要帮助在我的 Vue 应用程序中实现 v-tooltip npm 包
- python - python用正则表达式替换模式
- android - lib/home.dart:2:8: 错误:未找到:'dart:html'
- javascript - 如何用动漫js创建文本显示动画?
- azure-pipelines - 如何忽略 Azure Pipelines 工作区映射中的所有文件夹?
- r - 绘制使用 R 中的 season 包中的函数 monthglm() 生成的一般线性模型 (glm)