我想知道如何让 API Gateway 调用 Step Function 并执行它。
4 回答
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”:“字符串”}
您可以创建一个 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"
]
}
]
}
我认为您可以使用 API Gateway 代理集成到 AWS 服务。看:https ://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings-console.html
考虑创建一个支持 APIGw 端点的 AWS Lambda 函数,并让它通过代码调用 AWS StepFunctions。我们使用这种方法是因为我们的用例允许 API 端点参数指示我们需要执行几个 StepFunction 中的哪一个。
诚然,它是“更多代码”;我们希望 AWS 详细说明 StepFunction,以便它们可以由整个 AWS 资源事件主机触发。