8

我想知道如何让 API Gateway 调用 Step Function 并执行它。

4

4 回答 4

11

API Gateway 当前添加了对Step Functions的支持。现在,您可以通过 API Gateway 控制台创建 AWS 服务集成。

  • 集成类型:AWS 服务
  • AWS 服务:Step Functions
  • HTTP 方法:POST
  • 动作类型:使用动作名称
  • 行动:开始执行
  • 执行角色:启动执行的角色
  • 标题:

    X-Amz-Target -> 'AWSStepFunctions.StartExecution'
    内容类型 -> 'application/x-amz-json-1.0'

  • 身体映射模板/请求有效负载:

    { “输入”:“字符串”,“名称”:“字符串”,“stateMachineArn”:“字符串”}

于 2017-01-22T08:18:10.200 回答
4

您可以创建一个 API Gateway EndpointIntegration type: AWS Service并将其设置为调用所需的 Step Function。

如果您想使用 API Gateway 来控制 Step Functions 端点的公开,您可以创建一个新的 IAM 用户(仅限编程访问),其策略仅授予对该端点的访问权限,例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:my-aws-account-id:my-api-id/my-stage/GET/my-resource-path"
      ]
    }
  ]
}  
于 2016-12-19T16:34:01.990 回答
1

我认为您可以使用 API Gateway 代理集成到 AWS 服务。看:https ://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings-console.html

于 2017-01-12T10:31:34.430 回答
1

考虑创建一个支持 APIGw 端点的 AWS Lambda 函数,并让它通过代码调用 AWS StepFunctions。我们使用这种方法是因为我们的用例允许 API 端点参数指示我们需要执行几个 StepFunction 中的哪一个。

诚然,它是“更多代码”;我们希望 AWS 详细说明 StepFunction,以便它们可以由整个 AWS 资源事件主机触发。

于 2017-01-19T23:47:50.503 回答