如何使用API​​网关调用AWS步骤功能?

时间:2016-12-13 04:20:07

标签: amazon-web-services aws-lambda aws-api-gateway aws-step-functions

根据亚马逊的文档,可以使用HTTP API调用步骤函数。

  

步骤功能可以通过步进功能访问和使用   控制台,AWS软件开发工具包或HTTP API。

我试图搜索详细信息,但似乎找不到任何好的信息。有没有人知道如何使用API​​网关调用AWS步骤功能,类似于调用Lambda函数的方式?

4 个答案:

答案 0 :(得分:4)

这不是"官方" AWS方式 - 请参阅Erndob的答案。

AWS方式的问题(使用AWS凭证签署每个请求)是大多数企业已经有成熟的方法来管理通过其API网关的身份验证和授权,并且(作为企业架构师发言)不想处理在AWS-credential级别重复此问题的头痛。

我确信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权限以与步骤功能进行交互。要授予其对所有操作的完全访问权限,请创建新角色并附加以下策略:

  • AWSLambdaBasicExecutionRole
  • AWSStepFunctionsFullAccess

现在正常配置要通过API网关调用的Lambda,传入一个包含两个属性的事件:

请务必锁定您的API! : - )

答案 1 :(得分:4)

如果您需要从API网关调用StepFunction,现在可以在文档中进行描述:https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-api-gateway.html

  • 对于集成类型,请选择AWS Service
  • 对于AWS服务,请从列表中选择Step Functions
  • 对于HTTP方法,请从列表中选择POST
  • 对于操作类型,请选择Use action name
  • 对于操作,请键入StartExecution
  • 对于执行角色,使用API Gateway受信任身份提供商和附加政策AWSStepFunctionsFullAccess
  • 键入角色的ARN

答案 2 :(得分:3)

它使用的是HTTP API,而不是API网关。

步骤功能端点遵循以下格式:

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,但其中并没有多大意义。

答案 3 :(得分:1)

我最近在https://stackoverflow.com/a/59326771/6697093上发布了一个示例代码,使其可以使用CloudFormation和OpenApi进行工作。