没有为方法定义集成 - 选择将部署API的阶段

Has*_*lah 15 amazon-web-services aws-lambda aws-api-gateway

我正在使用AWS API Gateway和AWS Lambda.在尝试部署API时,我经常会遇到此类错误消息.错误消息表示选择部署阶段.但我仍然选择并尝试部署!但同样的错误发生!

弹出错误消息的屏幕截图

在这个API中,我有多个具有多种方法的资源.以前我成功地以相同的方式部署这个相同的API.但现在我无法部署它.

请有人帮我修理它.另外:我不使用AWS CLI工具,只使用AWS Web仪表板.

Has*_*lah 26

我与AWS的客户服务中心进行了交谈.问题是:

在这个API中有一个未整合的方法.假设有一个资源image,我POST为这个资源创建了一个方法.但我忘了将它集成到任何AWS Lambda函数或HTTP.因此无法部署API.

如果不需要该方法,则删除该方法.或者您可以将其集成为Mock端点.您可以随时更改此端点.

注意:对于此unintegration问题,AWS会提供此类错误的错误消息.他们应该更新他们的消息以节省开发人员的时间.

  • 有什么办法可以找出具体是哪个方法失败了?我有一个包含 100 个方法的 API 网关,但我无法找出哪些方法出现问题。 (5认同)
  • > 为什么你认为它是错误的 我认为它不完整。该消息应该类似于“Resource POST /image defined without endpoint handler”,以某种方式指出引用了哪个方法。 (4认同)
  • 您可能希望将此标记为已接受的答案. (3认同)
  • “没有为方法定义集成”一开始似乎很神秘,但我不明白为什么您认为它是错误的,如果如上所述,这意味着您创建了一个方法而没有为其定义集成。 (3认同)

Mar*_*cin 9

我遇到了同样的错误,但是在使用 CloudFormation 创建 API 时。

事实证明,在我的AWS::ApiGateway::Deployment资源中,我需要包含DependsOn“依赖”于我的所有 API 方法的属性。

例如,在构建具有两种AWS::ApiGateway::Method资源的API 时,AWS::ApiGateway::Deployment需要同时依赖这两种方法:

  MyFirstApiMethod:
    Type: AWS::ApiGateway::Method
    Properties: 
       <your properties>

  MySecondApiMethod:
    Type: AWS::ApiGateway::Method
    Properties: 
       <your properties>

  MyDeployment:
    Type: AWS::ApiGateway::Deployment
    DependsOn: [MyFirstApiMethod, MySecondApiMethod] # <-- REQUIRED 
    Properties: 
      RestApiId: !Ref MyRestApi
Run Code Online (Sandbox Code Playgroud)

如果DependOn所有 API 方法上没有该属性,CloudFormation 可能会在部署资源之后创建它们,从而导致No integration defined for method错误。