API 网关的 Serverless 实现,PlusServerless-API 网关实践方案

阅读时长 16 分钟读完

什么是 API 网关?

API 网关是一个扮演逻辑入口角色的服务,它主要负责对外提供服务 API,同时完成对请求进行管理、访问控制、响应合并、性能优化等多种功能。API 网关一般都是部署在云端,可以为服务提供统一的访问入口,同时将请求路由到后端服务提供者。

Serverless 技术背景

在 Serverless 技术背景下,开发人员不需要关心基础设施,更专注于应用程序的编写,而大多数云厂商都提供了相关的 Serverless 服务,如 AWS 的 Lambda,Azure 的 Functions 等等。尤其是 AWS 的 Lambda,通过使用它可以管理、运行和扩展代码,只需少量代码即可构建出强大的应用程序。利用 Serverless 技术可以提高应用程序的可靠性、弹性和可伸缩性。

PlusServerless-API 网关实践方案

PlusServerless-API 是一种 Serverless 技术实现的 API 网关方案,它可以很方便地配置和运行,同时可以自动缩放,无需管理不必要的基础设施。

实现步骤

步骤 1:创建 API Gateway

首先需要创建 API Gateway 对象。可以通过运行以下代码在 AWS Lambda 中创建一个 API Gateway:

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

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

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

步骤 2:创建 Lambda Function

创建 Lambda Function 非常简单,只需在 AWS Lambda 界面单击“创建函数”按钮,上传代码包到 Lambda 并为其指定适当的配置即可。调用 Lambda 时可以使用 API Gateway 触发器。

步骤 3:创建 Authorization Policy

创建授权策略包括这些步骤:

  1. 创建 IAM 角色并分派 API Gateway 授权。
-- -------------------- ---- -------
-- ----
----- ---------- - -------------------------
----- -------- ------------------ -
  -- -- --------
  ----- ---- - ----- ------------------------------------- ---------------------------------
  -- ----- --- ------- --
  ----- ------ - --- ----------------
    ----------- ----------------------------
    --------------- -
      -------- -------------
      ---------- -
        -
          ------- --------
          ------- -
            ---------
            ----------------
          --
          --------- ----
        --
      --
    --
  ---
  ----- ------------------- --------- ------------------ -------------
  ------ -----
-
  1. 在 API Gateway 中配置 OAuth2 授权模式。
-- -------------------- ---- -------
----- -------- ------------------------------------------ --------- ------------- -
  ----- ----------- - --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

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

-

步骤 4:绑定 Lambda Function 和 API Gateway

将使用者从 API Gateway 中删除并添加资源,然后添加相应的 Lambda 触发器。

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

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

-

示例代码

以下是一个具体的使用 PlusServerless-API 实现的 API 网关的示例代码。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----------

总结

通过使用 PlusServerless-API,开发人员可以轻松地创建自己的 API 网关实现方案而无需关心基础设施的管理。同时,PlusServerless-API 方案提供了多种安全性规范,可以实现授权策略。

总之,PlusServerless-API 可以为 Serverless 应用程序的开发和部署提供可靠、安全的 API 入口,从而帮助开发人员有效地管理和监视其云端资产。

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

纠错
反馈