如何在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官方服务API
StartSyncExecution,请求模板逻辑和你原有插件配置完全一致,不需要修改业务调用逻辑 - 遵循最小权限原则,仅给API Gateway开放对应状态机的执行权限,没有额外权限溢出
内容的提问来源于stack exchange,提问作者Royi Namir
相关产品推荐
相关产品推荐

