如何使用 Serverless Framework 在 Azure 上构建无服务器应用

阅读时长 9 分钟读完

引言

Serverless 架构已经成为了云计算领域的热门话题,作为一种新型的应用架构模式,它通过将应用程序的开发、部署和运行过程从基础设施中抽象出来,进一步降低了应用程序的开发和运维成本。在这个领域,Serverless Framework 作为一个开源的项目,已经在国内外的开发者中广泛应用。本文将会介绍如何使用 Serverless Framework 在 Azure 上构建无服务器应用,包括使用 Azure Functions 和 Azure Storage 创建无服务器函数、使用 Azure Active Directory 进行身份验证、以及构建简单的 RESTful API 等。

准备工作

在开始构建我们的无服务器应用之前,我们需要先进行准备工作,包括:

  • 安装 Node.js
  • 在 Azure 上创建一个资源组,并创建以下资源:
    • Azure Functions 应用程序
    • Azure Storage 账户
    • Azure Active Directory 应用程序

创建无服务器函数

Azure Functions 是一个无服务器计算平台,它可以让开发者使用多种语言(包括 C#、JavaScript、Python 等)来创建和部署无服务器函数。下面我们将用 Serverless Framework 和 JavaScript 语言来创建一个简单的无服务器函数。

步骤一:安装 Serverless Framework

运行以下命令安装 Serverless Framework:

步骤二:创建 Serverless 应用程序

运行以下命令创建一个新的 Serverless 应用程序:

步骤三:配置 Azure 账户

运行以下命令配置 Azure 账户信息:

其中,subscriptionIdtenantIdclientIdclientSecret 是 Azure Active Directory 应用程序的相关信息。

步骤四:配置 Serverless 应用程序

打开 serverless.yml 文件,将以下代码添加到文件末尾:

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

该代码定义了一个名为 hello 的 Azure Function,该 Function 的入口函数是 handler.hello,并可以通过 HTTP GET 或 POST 请求来触发。

步骤五:部署无服务器函数

运行以下命令将无服务器函数部署到 Azure Functions:

部署完成后,您可以在 Azure Portal 中找到您创建的函数应用程序,并测试您的函数是否能够正常运行。

使用 Azure Active Directory 进行身份验证

在实际的应用中,我们通常需要使用身份验证来保护我们的资源免受未经授权的访问。Azure Active Directory 是 Azure 的一种身份认证服务,它可以帮助我们实现一些常见的身份认证和授权方案。下面我们将介绍如何使用 Serverless Framework 和 Azure Active Directory 在我们的函数应用程序中添加身份验证。

步骤一:创建一个 Azure Active Directory 应用程序

打开 Azure Portal,进入 Azure Active Directory 服务,创建一个新的 App registration。在 App registration 中创建一个新的 Web 应用程序,并记录下其 Application ID 和 Client secret。

步骤二:安装依赖包

运行以下命令安装依赖包:

步骤三:配置函数应用程序

打开 serverless.yml 文件,将以下代码添加到 hello Function 中:

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

其中,<clientId><clientSecret><tenantId> 为您在步骤一中创建的 Azure Active Directory 应用程序的相关信息,而 <audience> 为您创建的 Web API 的域名或者 IP 地址。

步骤四:在函数代码中添加认证

打开 handler.js 文件,在 context.res 前添加以下代码:

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

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

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

当请求进入 hello Function 时,我们调用 authenticate 函数来获取 Azure Active Directory 中的令牌,将其添加到请求头中并返回结果。

步骤五:重新部署函数应用程序

运行以下命令重新部署函数应用程序:

构建一个简单的 RESTful API

Serverless Framework 可以帮助我们轻松构建基于 API 的应用程序。下面我们将展示如何使用 Serverless Framework 和 Azure Functions 来构建一个简单的 RESTful API。

步骤一:创建一个新的 Function

运行以下命令创建一个新的 Function:

步骤二:在 Function 中添加路由

打开 serverless.yml 文件,添加以下代码到您创建的 Function 下:

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

该代码添加了两个 HTTP GET 请求路由,分别对应 /api/example/api/example/{id}。其中,{id} 是一个动态路由参数,我们将在实现 GET 请求时使用该参数。

步骤三:在 Function 中实现 API

打开 api/example/index.js 文件,编写以下代码:

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

在该代码中,我们返回了一些示例数据,如果 URL 中带有 {id} 参数,我们将返回对应的数据。否则,我们将返回所有数据。

步骤四:测试 API

运行以下命令部署和测试您的 API:

在部署完成之后,您可以使用任何 HTTP 客户端工具,例如 Postman 或 cURL 来测试您的 API。

总结

本文介绍了如何使用 Serverless Framework 在 Azure 上构建无服务器应用。通过该文章的学习,您已经掌握了如何使用 Azure Functions 和 Azure Storage 创建无服务器函数、使用 Azure Active Directory 进行身份验证以及构建简单的 RESTful API 等。当然,Serverless 架构是一种新型应用架构模式,仍然存在很多问题和挑战,但我们相信,通过不断探索和尝试,我们能够将它应用到更多场景中,极大地提高我们的开发效率和应用的可用性。

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

纠错
反馈