根据亚马逊的文档,可以使用 HTTP API 调用 step 函数。
Step Functions 可以通过 Step Functions 控制台、AWS 开发工具包或 HTTP API 访问和使用。
我试图搜索详细信息,但似乎找不到任何好的信息。有谁知道如何使用 API 网关调用 AWS step 函数,类似于它调用 Lambda 函数的方式?
根据亚马逊的文档,可以使用 HTTP API 调用 step 函数。
Step Functions 可以通过 Step Functions 控制台、AWS 开发工具包或 HTTP API 访问和使用。
我试图搜索详细信息,但似乎找不到任何好的信息。有谁知道如何使用 API 网关调用 AWS step 函数,类似于它调用 Lambda 函数的方式?
这不是 AWS 的“官方”方式——请参阅 Erndob 的回答。
AWS 方式(使用 AWS 凭证签署每个请求)的问题在于,大多数企业已经拥有成熟的方法来通过其 API 网关管理身份验证和授权,并且(作为企业架构师)不想处理令人头疼的在 AWS 凭证级别复制此内容。
我确信 AWS 最终会将 Step Functions 与 API Gateway 集成,但在撰写本文时(1/17),这可能是完成工作的最简单方法。下面是我编写的一个简单的 Lambda 代理函数,用于利用 SDK 对请求进行签名的能力:
'use strict';
const AWS = require('aws-sdk');
const stepfunctions = new AWS.StepFunctions();
exports.handler = (event, context, callback) => {
if(!event && event.action)
callback("Error: 'action' is required.");
if(!event && event.params)
callback("Error: 'params' is required.");
stepfunctions[event.action](event.params, function (err, data) {
if (err)
console.log(err, err.stack);
callback(err, data);
});
};
您将需要授予您的 Lambda 权限以与您的 Step Functions 交互。要授予它对所有操作的完全访问权限,请创建一个新角色并附加以下策略:
现在将 Lambda 配置为正常通过 API 网关调用,传入具有两个属性的事件:
并确保锁定您的 API!:-)
如果您需要从 API Gateway 调用 StepFunction,现在可以在文档中进行详细描述:https ://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html
AWS Service
Step Functions
从列表中选择POST
从列表中选择Use action name
StartExecution
API Gateway
受信任的身份提供者和附加策略的角色的 ARNAWSStepFunctionsFullAccess
它使用的是 HTTP API,而不是 API Gateway。
阶跃函数端点遵循以下格式:
https://states.${region}.amazonaws.com
例如:
https://states.us-east-1.amazonaws.com
您使用 HTTP API(同样,不是 API 网关)对您的状态执行操作。
更多关于 HTTP API 的信息:
http://docs.aws.amazon.com/step-functions/latest/apireference/Welcome.html
从技术上讲,您可以使用 API 网关来重定向到步骤函数 API,但这并没有多大意义。
我最近在https://stackoverflow.com/a/59326771/6697093上发布了一个使用 CloudFormation 和 OpenApi 使其工作的示例代码。