1 Resposta
- Mais recentes
- Mais votos
- Mais comentários
0
【以下的回答经过翻译处理】 你好,
re:Post 帖子中的答案对使用 .waitForTaskToken 能够从 ECS/Fargate 获得更动态的输出有很好的建议,并且是准确的:<https://docs.aws.amazon.com/step-functions /latest/dg/connect-ecs.html>
我设法按照此处的说明使用 .waitForTaskToken 进行测试:https://docs.aws.amazon.com/step-functions/latest/dg/callback-task-sample-sqs.html
该示例的工作方式(基于说明,我最后确认):
- Step Functions 将包含任务令牌的消息传递到 Amazon Simple Queue Service (Amazon SQS) 队列。
- Step Functions 然后暂停,等待返回该令牌。
- Amazon SQS 队列触发 AWS Lambda 函数,该函数使用相同的任务令牌调用 SendTaskSuccess。下面的代码显示了如何使用 Lambda 函数完成此操作:
console.log('加载函数');
const aws = require('aws-sdk');
exports.lambda_handler = (event, context, callback) => {
const stepfunctions = new aws.StepFunctions();
for (const record of event.Records) {
const messageBody = JSON.parse(record.body);
const taskToken = messageBody.TaskToken;
常量参数 = {
output: "\"回调任务成功完成。\"",
任务令牌:任务令牌
};
console.log(`调用 Step Functions 完成参数回调任务 ${JSON.stringify(params)}`);
stepfunctions.sendTaskSuccess(参数,(错误,数据)=> {
如果(错误){
console.error(err.message);
回调(错误消息);
返回;
}
控制台日志(数据);
回调(空);
});
}
};
- 收到任务令牌后,工作流继续。
- “通知成功”任务发布一条 Amazon Simple Notification Service (Amazon SNS) 消息,表明已收到回调。
因此,我们现在可以基于上述理解将其应用于 ECS/Fargate,因为 Step Function 服务 ECS/Fargate 集成支持任务令牌:
- Step Functions 使用任务令牌调用 ECS/Fargate
- Step 函数然后暂停等待返回该令牌。
- ECS/Fargate 发回具有相同任务令牌的 SendTaskScucess。您可以使用上面提到的代码作为示例来构建解决方案。从代码中可以看出:
常量参数 = {
output: "\"回调任务成功完成。\"",
任务令牌:任务令牌
};
在哪里可以修改“输出”以获得您想要的任何类型的消息。他们使用 \"Callback task completed successfully.\"
但您可以将其更改为您喜欢的任何内容,例如数据存储在 S3/DynamoDB/其他地方的位置。
- 收到任务令牌后,工作流程继续。
从您链接的博客文章中,它说没有办法从 ECS 或 Fargate 任务输出并提到在 S3 中存储,我相信他们在谈论写入数据(让我们以 .jpeg 图像为例)。因此,按照该博文,您可以将 .jpeg 图像写入 S3,然后在“输出”中返回 .jpeg 图像在 S3 中的存储位置,以便 Step Function 的下一步知道位置和可以通过将位置交给 step 函数中的另一个任务来继续进行一些处理。
Conteúdo relevante
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 9 meses