一次调用在无服务器中获取两步函数执行 [AWS]
Getting Two Step Function Executions in serverless for one call [AWS]
我正在使用无服务器框架和步骤函数,我有一个由 s3 对象上传触发的 lambda 函数,然后该 lambda 被编程为启动状态机执行,但每次我上传一些文件时它总是显示两次处决。
serverless.yml
plugins:
- serverless-step-functions
provider:
iamManagedPolicies:
- arn:aws:iam::aws:policy/AWSStepFunctionsFullAccess
iamRoleStatements:
- Effect: "Allow"
Action:
- states:*
Resource: "*"
functions:
init:
handler: src/functions/main/handler.startStepFunction
events:
- s3:
bucket: ${IMAGE_BUCKET_NAME}
event: s3:ObjectCreated:*
函数
module.exports.startStepFunction = async event => {
// start the step function with event parameter
const params = {
stateMachineArn: `${STATE_MACHINE}`,
input: JSON.stringify(event)
};
const functionPromise = stepfunctions.startExecution(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
}).promise();
await functionPromise;
};
单个文件上传执行(两次成功执行均为一个文件上传)
我不确定为什么会发生这样的事情,我错过了什么或者让它表现得很奇怪?提前致谢。
问题出在这些行中:
const functionPromise = stepfunctions.startExecution(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
}).promise();
我承诺了 startExecution 函数以及回调,
正确的代码应该是下面这样,
const functionPromise = stepfunctions.startExecution(params).promise();
我正在使用无服务器框架和步骤函数,我有一个由 s3 对象上传触发的 lambda 函数,然后该 lambda 被编程为启动状态机执行,但每次我上传一些文件时它总是显示两次处决。
serverless.yml
plugins:
- serverless-step-functions
provider:
iamManagedPolicies:
- arn:aws:iam::aws:policy/AWSStepFunctionsFullAccess
iamRoleStatements:
- Effect: "Allow"
Action:
- states:*
Resource: "*"
functions:
init:
handler: src/functions/main/handler.startStepFunction
events:
- s3:
bucket: ${IMAGE_BUCKET_NAME}
event: s3:ObjectCreated:*
函数
module.exports.startStepFunction = async event => {
// start the step function with event parameter
const params = {
stateMachineArn: `${STATE_MACHINE}`,
input: JSON.stringify(event)
};
const functionPromise = stepfunctions.startExecution(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
}).promise();
await functionPromise;
};
单个文件上传执行(两次成功执行均为一个文件上传)
我不确定为什么会发生这样的事情,我错过了什么或者让它表现得很奇怪?提前致谢。
问题出在这些行中:
const functionPromise = stepfunctions.startExecution(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
}).promise();
我承诺了 startExecution 函数以及回调,
正确的代码应该是下面这样,
const functionPromise = stepfunctions.startExecution(params).promise();