代码之家  ›  专栏  ›  技术社区  ›  Hasan Abdullah

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

  •  53
  • Hasan Abdullah  · 技术社区  · 8 年前

    我正在使用AWS API网关和AWS Lambda。在尝试部署API时,我经常会遇到这种类型的错误消息。错误消息显示选择部署阶段。但我仍在选择并尝试部署!但同样的错误也会发生!

    Screenshot of pop up error message

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

    请任何人帮我修一下。此外:我不使用AWS CLI工具,只使用AWS web dashboard。

    5 回复  |  直到 8 年前
        1
  •  72
  •   Hasan Abdullah    8 年前

    在这个API中有一个不整合的方法。假设有一个资源 image 我创建了一个 POST

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

    注:

        2
  •  13
  •   Marcin    6 年前

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

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

    例如,当使用两个 AWS::ApiGateway::Method AWS::ApiGateway::部署 需要依赖这两种方法:

      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
    

    DependOn 属性,则CloudFormation可能是 在部署资源之后创建它们,导致 No integration defined for method

        3
  •  2
  •   Justin Herrera    5 年前

    如果您有另一个未完成配置的资源,它也将读取。简而言之,如果您没有为它们提供lambda函数,那么在完成其余部分之前,不允许部署api本身。

        4
  •  1
  •   JoFox    4 年前

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

        5
  •  0
  •   Faisal Ilyas    4 年前