【问题标题】:No integration defined for method - Choose a stage where your API will be deployed没有为方法定义集成 - 选择部署 API 的阶段
【发布时间】:2018-02-15 16:37:27
【问题描述】:

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

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

请任何人帮助我解决它。另外:我不使用 AWS CLI 工具,只使用 AWS Web 仪表板。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

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

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

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

    注意:对于这个未集成的问题,AWS 给出了这种类型的错误错误消息。他们应该更新他们的消息以节省开发者的时间。

    【讨论】:

    • 谢谢您,先生。为此,我必须等待至少 2 天(按照 SO 规则)。 :-)
    • “没有为方法定义集成”起初看起来很神秘,但我不明白为什么你认为它是错误的,如果如上所述,这意味着你创建了一个没有定义集成的方法.
    • 先生,我几天前错误地在我的 API 中添加了一个方法。当我添加另一个资源和方法时,我需要部署。所以发生了错误。如果 AWS 给我一个错误,比如“发现未集成的方法”,最好找到问题。
    • > 为什么你认为它是错误的,我认为它不完整。该消息应该类似于“Resource POST /image defined without endpoint handler”,以某种方式指出引用了哪个方法。
    • 是的,如果您尝试创建部署而不为每种方法设置集成,您将收到此错误。为创建的每个方法设置集成以允许部署/阶段创建
    【解决方案2】:

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

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

    例如,使用两个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
    

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

    【讨论】:

      【解决方案3】:

      如果您有另一个资源没有完成配置,它也会被读取。简而言之,如果你没有给他们一个 lambda 函数,那么在你完成其余部分之前,不允许部署 api 本身。

      【讨论】:

        【解决方案4】:

        我在通过 Terraform 部署时遇到了同样的错误。原因是我为我的 API 定义了一个 IAM 角色,并且在部署 API 时我没有将角色资源包含到triggers。只需确保在部署之前定义的所有资源都包含在 triggers 中。

        【讨论】:

          【解决方案5】:

          只需将 Lambda 函数集成到您创建的每个方法中即可。

          【讨论】:

          • 酷,这对我有用。我忘了集成一个方法... dammm
          猜你喜欢
          • 1970-01-01
          • 2021-04-22
          • 2018-06-19
          • 2022-01-27
          • 2016-12-19
          • 2018-11-12
          • 2020-11-24
          • 1970-01-01
          • 2019-02-11
          相关资源
          最近更新 更多