处理 Serverless 部署错误:“API Gateway with an integration failed to set up the integration”的解决方案

阅读时长 5 分钟读完

Serverless(无服务器)架构已经成为前端领域的热门技术,它可以帮助我们降低系统运维成本,提高开发效率。然而,在使用 Serverless 进行部署的过程中,有时候我们会遇到各种问题。其中一个比较常见的问题是:“API Gateway with an integration failed to set up the integration”。在这篇文章中,我们将探讨这个问题的解决方案。

问题描述

在使用 Serverless 进行部署时,我们需要定义一个 serverless.yml 文件来描述我们的服务。通常,这个文件会包含一些函数和 API Gateway 的配置。例如,下面是一个简单的 serverless.yml 文件:

-- -------------------- ---- -------
-------- ---------------
---------
  ----- ---
  -------- ----------
----------
  -----------------
    -------- -------------------
    -------
      - -----
          ----- ------------
          ------- ---

当我们使用 sls deploy 命令进行部署时,有时候会遇到以下错误信息:

这个错误信息非常简洁,它告诉我们 API Gateway 集成时出现了问题,并且当前方法没有定义映射。

解决方案

要解决这个问题,我们需要对 serverless.yml 文件进行修改。具体来说,我们需要增加 API Gateway 的映射定义。

在 serverless.yml 文件中,我们可以使用 events 配置块来定义 API Gateway 的映射。例如,下面是修改后的 serverless.yml 文件:

-- -------------------- ---- -------
-------- ---------------
---------
  ----- ---
  -------- ----------
----------
  -----------------
    -------- -------------------
    -------
      - -----
          ----- ------------
          ------- ---
          ------------ ------
          --------
            ---------
              ----------------- -- ------------- ------ ------- ------------- --

在这个配置文件中,我们增加了 integration 和 request 配置块,用来定义 API Gateway 的集成方式和请求模板。具体来说:

  • integration 配置块指定了 API Gateway 的集成方式,这里我们使用了 AWS Lambda 作为集成目标。
  • request 配置块用来定义 HTTP 请求的模板。这里我们使用了 application/json 模板,将返回一个 JSON 响应体。

通过增加这些配置,我们就可以成功地解决这个问题。

示例代码

为了帮助大家更好的理解上述解决方案,下面提供了一个简单的示例代码,它是一个使用 AWS Lambda 和 API Gateway 的 Hello World 应用程序。

首先,我们需要创建一个 index.js 文件,它包含了我们的 Lambda 函数代码:

然后,我们需要创建一个 serverless.yml 文件来描述整个服务的配置,它包含了一个 AWS Lambda 函数和一个 API Gateway 集成的定义。

-- -------------------- ---- -------
-------- ---------------
---------
  ----- ---
  -------- ----------
----------
  -----------------
    -------- -------------
    -------
      - -----
          ----- ------------
          ------- ---
          ------------ ------
          --------
            ---------
              ----------------- -- ------------- ------ ------- ------------- --

最后,我们使用 sls deploy 命令将服务部署到 AWS。运行完毕后,可以在 AWS 控制台中找到 Lambda 函数和 API Gateway 的相关信息。顺利的话,你应该可以通过 https://{api-id}.execute-api.{region}.amazonaws.com/my-endpoint 访问到 Hello World 了。

总结

本文介绍了如何解决 Serverless 部署错误:“API Gateway with an integration failed to set up the integration”。我们发现,这个问题通常是由于缺少映射配置引起的,只需要在 serverless.yml 文件中增加相应配置即可解决。最后,希望这篇文章能对大家在使用 Serverless 进行开发和部署时有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a2896748841e9894ef21ea

纠错
反馈