You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Serverless Framework中无插件配置ApiGateway到Step Function代理

你可以通过原生Serverless Framework的CloudFormation资源配置 + API Gateway服务集成能力实现需求,无需依赖第三方插件,完整配置如下:

service: apigw-to-stepfunction-demo
provider:
  name: aws
  runtime: nodejs18.x # 替换为你的实际运行时
  stage: ${opt:stage, 'dev'}
  region: ${opt:region, 'us-east-1'}
  iam:
    role:
      statements:
        # 给API Gateway授予调用对应Step Function的权限
        - Effect: Allow
          Action: states:StartSyncExecution
          Resource: arn:aws:states:${self:provider.region}:${aws:accountId}:stateMachine:fetchAndCombineDataStateMachine-${self:provider.stage}

resources:
  Resources:
    # 1. 定义Step Function状态机(替代插件的stepFunctions配置段)
    FetchAndCombineDataStateMachine:
      Type: AWS::StepFunctions::StateMachine
      Properties:
        StateMachineName: fetchAndCombineDataStateMachine-${self:provider.stage}
        StateMachineType: EXPRESS
        RoleArn: # 替换为你状态机实际的执行角色ARN,和之前插件配置的role参数一致
        DefinitionString: |
          # 替换为你实际的状态机JSON定义
          {
            "Comment": "拉取合并数据状态机",
            "StartAt": "FetchData",
            "States": {
              "FetchData": {
                "Type": "Pass",
                "End": true
              }
            }
          }

    # 2. 配置API Gateway根路径POST方法直接对接Step Function
    ApiGatewayMethodRootPost:
      Type: AWS::ApiGateway::Method
      Properties:
        HttpMethod: POST
        ResourceId: !GetAtt ApiGatewayRestApi.RootResourceId
        RestApiId: !Ref ApiGatewayRestApi
        AuthorizationType: NONE # 可按需替换为COGNITO_USER_POOLS、AWS_IAM等鉴权方式
        Integration:
          Type: AWS
          IntegrationHttpMethod: POST
          Uri: arn:aws:apigateway:${self:provider.region}:states:action/StartSyncExecution
          Credentials: !GetAtt IamRoleLambdaExecution.Arn # 直接复用Serverless默认生成的执行角色
          RequestTemplates:
            application/json: |
              #set( $body = $util.escapeJavaScript($input.json('$')) )
              #set( $stepFunctionName = 'fetchAndCombineDataStateMachine-${self:provider.stage}') 
              {
                "input": "$body", 
                "stateMachineArn":"arn:aws:states:${self:provider.region}:${aws:accountId}:stateMachine:$stepFunctionName"
              }
          IntegrationResponses:
            - StatusCode: 200
              ResponseTemplates:
                # 直接透传Step Function的执行结果,可按需调整返回结构
                application/json: $input.json('$.output')
        MethodResponses:
          - StatusCode: 200
            ResponseModels:
              application/json: Empty

关键说明

  • 状态机直接通过CloudFormation官方资源AWS::StepFunctions::StateMachine定义,参数和你之前插件配置的参数完全对齐
  • API Gateway直接对接Step Functions官方服务APIStartSyncExecution,请求模板逻辑和你原有插件配置完全一致,不需要修改业务调用逻辑
  • 遵循最小权限原则,仅给API Gateway开放对应状态机的执行权限,没有额外权限溢出

内容的提问来源于stack exchange,提问作者Royi Namir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:01