佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 使用無(wú)服務(wù)器框架構(gòu)建應(yīng)用, AWS, 和大查詢(xún)

使用無(wú)服務(wù)器框架構(gòu)建應(yīng)用, AWS, 和大查詢(xún)

熱門(mén)標(biāo)簽:梧州電銷(xiāo) 黑龍江電銷(xiāo) 安順電銷(xiāo) 潛江電銷(xiāo) 三亞電銷(xiāo) 廊坊電銷(xiāo) 天津電銷(xiāo) 平?jīng)鲭婁N(xiāo)
摘要

最后修改:2個(gè)個(gè)7/01/2021閱讀時(shí)間:無(wú)服務(wù)器是指由云提供商管理和分配服務(wù)器和資源的應(yīng)用程序。這意味著云提供商將動(dòng)態(tài)分配資源。該應(yīng)用程序在可以由事件觸發(fā)的無(wú)狀態(tài)容器中運(yùn)行。上面的一個(gè)示例以及我們將在本文中使用的示例都是關(guān)于AWS拉姆達(dá)。簡(jiǎn)而言之,我們可以將“無(wú)服務(wù)器應(yīng)用程序”確

最后修改: 2個(gè)個(gè)7/01/2021 閱讀時(shí)間:

無(wú)服務(wù)器是指由云提供商管理和分配服務(wù)器和資源的應(yīng)用程序。 這意味著云提供商將動(dòng)態(tài)分配資源。 該應(yīng)用程序在可以由事件觸發(fā)的無(wú)狀態(tài)容器中運(yùn)行。 上面的一個(gè)示例以及我們將在本文中使用的示例都是關(guān)于 AWS 拉姆達(dá)。

簡(jiǎn)而言之, 我們可以將“無(wú)服務(wù)器應(yīng)用程序”確定為基于事件的基于云的系統(tǒng)的應(yīng)用程序。 該應(yīng)用程序依賴(lài)第三方服務(wù), 客戶(hù)端邏輯, 和遠(yuǎn)程呼叫(直接調(diào)用它 服務(wù)功能)。

無(wú)服務(wù)器框架是一個(gè)開(kāi)放源代碼框架。 它由命令行界面或CLI和托管的儀表板組成, 為我們提供了一個(gè)完全無(wú)服務(wù)器的應(yīng)用程序管理系統(tǒng)。 使用框架可確保更少的開(kāi)銷(xiāo)和成本, 快速開(kāi)發(fā)和部署, 并保護(hù)無(wú)服務(wù)器應(yīng)用程序。

在繼續(xù)安裝無(wú)服務(wù)器框架之前, 您必須先設(shè)置節(jié)點(diǎn)JS。 在大多數(shù)操作系統(tǒng)上,該操作非常容易-您只需訪問(wèn)節(jié)點(diǎn)JS官方網(wǎng)站即可下載并安裝。 請(qǐng)記住選擇高于6的版本。0。0。

安裝后, 您可以通過(guò)在控制臺(tái)中運(yùn)行來(lái)確認(rèn)NodeJS可用。 它應(yīng)該返回您已安裝的節(jié)點(diǎn)版本:

您現(xiàn)在可以出發(fā)了, 因此,繼續(xù)安裝無(wú)服務(wù)器框架。

為了做到這一點(diǎn), 請(qǐng)按照文檔設(shè)置和配置框架。 如果你比較喜歡, 您只能為一個(gè)項(xiàng)目安裝它, 但是在DevriX, 我們通常在全球范圍內(nèi)安裝框架:

等待該過(guò)程完成,并通過(guò)運(yùn)行以下命令來(lái)確保Serverless已成功安裝:

在繼續(xù)創(chuàng)建示例應(yīng)用程序之前, 您應(yīng)該在中創(chuàng)建一個(gè)帳戶(hù) 亞馬遜AWS。 如果您還沒(méi)有, 就像去Amazon AWS并單擊 “創(chuàng)建一個(gè)AWS賬戶(hù)” 在右上角,然后按照以下步驟創(chuàng)建帳戶(hù)。

亞馬遜要求您輸入信用卡, 因此,您必須輸入相應(yīng)的信息才能繼續(xù)操作。 成功注冊(cè)和登錄后,您應(yīng)該看到AWS管理控制臺(tái):

偉大的! 現(xiàn)在開(kāi)始創(chuàng)建您的應(yīng)用程序。

在這一步中 我們必須使用AWS提供程序配置無(wú)服務(wù)器框架。 某些服務(wù)(例如AWS 拉姆達(dá))在訪問(wèn)憑據(jù)時(shí)需要憑據(jù),以確保您擁有該服務(wù)擁有的資源的權(quán)限。 AWS建議使用AWS Identity 和 Access M一個(gè)ager(我是)來(lái)完成此任務(wù)。

所以, 首先也是最重要的是創(chuàng)建一個(gè) 我是 用戶(hù)AWS 在我們的應(yīng)用程序中使用它:

在AWS控制臺(tái)上:

  • 類(lèi)型 IAM 在里面 “查找服務(wù)” 場(chǎng)地。
  • 點(diǎn)擊 “我是”。
  • “用戶(hù)”。
  • 點(diǎn)擊 “添加用戶(hù)”。

為了 “用戶(hù)名” 使用任何您想要的。 例如, 我們正在使用 無(wú)服務(wù)器管理員。 為了 ”訪問(wèn)類(lèi)型” 查看 “程序訪問(wèn)” 然后點(diǎn)擊 “下一個(gè)權(quán)限”。

在那之后, 我們必須為用戶(hù)附加權(quán)限, 點(diǎn)擊 “直接附加現(xiàn)有政策,” 搜索 “管理員訪問(wèn)權(quán)限” 然后單擊它。 繼續(xù)點(diǎn)擊 “下一個(gè)標(biāo)簽”

標(biāo)簽是可選的, 因此您可以點(diǎn)擊 “下次點(diǎn)評(píng)”“創(chuàng)建用戶(hù)”。 完成并加載后, 頁(yè)面上會(huì)顯示一條成功消息,其中包含我們所需的憑據(jù)。

現(xiàn)在我們必須運(yùn)行以下命令:

代替 鑰匙秘密 與上面提供的一個(gè)。 您的AWS憑證已創(chuàng)建為配置文件。 您可以通過(guò)打開(kāi) ?/。AWS /憑證 文件。 它應(yīng)包含AWS配置文件。 目前, 在下面的示例中, 這只是我們創(chuàng)建的一個(gè):

到目前為止做得好! 您可以繼續(xù)使用以下方法創(chuàng)建一個(gè)示例應(yīng)用程序 NodeJS 以及內(nèi)置的啟動(dòng)模板。

筆記: 此外, 在文章中 我們正在使用命令, 這是的縮寫(xiě)。
創(chuàng)建一個(gè)空目錄并輸入。 運(yùn)行命令

使用 創(chuàng)建–模板 命令指定可用模板之一, 在這種情況下, aws-nodejs, 這是一個(gè) NodeJS “ Hello world”模板應(yīng)用程序。

完成后, 您的目錄應(yīng)包含以下內(nèi)容, 看起來(lái)像這樣:

我們已經(jīng)創(chuàng)建了新文件 處理程序。js無(wú)服務(wù)器。yml。

處理程序。js 文件存儲(chǔ)您的功能, 和 無(wú)服務(wù)器。yml 存儲(chǔ)您稍后將更改的配置屬性。 如果您想知道 。yml 文件是 簡(jiǎn)而言之, 它是一個(gè) 可讀數(shù)據(jù)序列化語(yǔ)言。 熟悉它是一件好事, 因?yàn)樵诓迦肴魏闻渲脜?shù)時(shí)使用它。 但是,讓我們看一下我們所擁有的 無(wú)服務(wù)器。yml 立即提交:

服務(wù):aws-sample-applic在ion
提供者:
  名稱(chēng):aws
  運(yùn)行時(shí):nodejs12。X
功能:
  你好:
    處理程序:處理程序。你好
  • 服務(wù): –我們的服務(wù)名稱(chēng)。
  • 提供者: –包含提供程序?qū)傩缘膶?duì)象, 正如我們?cè)谶@里看到的 我們的提供商是AWS, 并且我們正在使用NodeJS運(yùn)行時(shí)。
  • 功能: –該對(duì)象包含可部署到拉姆達(dá)的所有功能。 在這個(gè)例子中 我們只有一個(gè)命名為 你好 指向 處理程序。js 你好函數(shù)。

在繼續(xù)部署應(yīng)用程序之前,您必須在這里做一件重要的事情。 早一點(diǎn) 我們使用配置文件為AWS設(shè)置憑證(我們將其命名為 無(wú)服務(wù)器管理員)。 現(xiàn)在您要做的就是告訴 無(wú)服務(wù)器 配置以使用該配置文件和您所在的區(qū)域。 打開(kāi) 無(wú)服務(wù)器。yml 并在 提供者 在運(yùn)行時(shí)下面的屬性中輸入以下內(nèi)容:

概要文件:serverless-admin
地區(qū):us-east-2

到底, 我們應(yīng)該有這個(gè):

提供者:
  名稱(chēng):aws
  運(yùn)行時(shí):nodejs12。X
  概要文件:serverless-admin
  地區(qū):us-east-2

筆記: 要獲得該地區(qū), 一種簡(jiǎn)單的方法是登錄到控制臺(tái)后查找URL:示例:

現(xiàn)在,我們有了有關(guān)生成的模板的必要信息。 讓我們檢查一下如何在本地調(diào)用該函數(shù)并將其部署到AWS Lambda。
我們可以通過(guò)在本地調(diào)用該函數(shù)立即測(cè)試該應(yīng)用程序:

它調(diào)用函數(shù)(但僅在本地?。?并將輸出返回到控制臺(tái):

現(xiàn)在, 如果一切順利, 您可以嘗試將功能部署到 AWS Lambda。

所以, 這么復(fù)雜嗎? 不, 不是! 非常感謝 無(wú)服務(wù)器框架 這只是一個(gè)單行代碼:

等待一切完成, 可能要花幾分鐘 如果一切正常,您應(yīng)該以以下內(nèi)容結(jié)束:

現(xiàn)在,讓我們檢查一下AWS中發(fā)生了什么。 轉(zhuǎn)到Lambda(在“查找服務(wù)“ 類(lèi)型 Lambda), 你應(yīng)該看到你的 Lambda 函數(shù)已創(chuàng)建。

現(xiàn)在,您可以嘗試從AWS Lambda調(diào)用您的函數(shù)。 在終端類(lèi)型

它應(yīng)該返回與先前(當(dāng)我們?cè)诒镜販y(cè)試時(shí))相同的輸出:

您可以通過(guò)在 AWS Lambda 然后轉(zhuǎn)到“監(jiān)控方式”標(biāo)簽,然后點(diǎn)擊“在CloudWatch中查看日志。”。

您應(yīng)該在那里有一個(gè)日志。

現(xiàn)在, 您的應(yīng)用程序中仍然缺少一件事, 但是這是什么。。。? 出色地, 您沒(méi)有端點(diǎn)可以訪問(wèn)您的應(yīng)用, 因此,我們使用 AWS API網(wǎng)關(guān)。

你必須打開(kāi) 無(wú)服務(wù)器。yml 歸檔并首先清除注釋。 您需要添加一個(gè) 大事記 在我們的職能范圍內(nèi) http 財(cái)產(chǎn)。 這說(shuō)明了 無(wú)服務(wù)器框架 在部署應(yīng)用程序時(shí)創(chuàng)建一個(gè)API網(wǎng)關(guān)并將其附加到我們的Lambda函數(shù)。 我們的配置文件應(yīng)以以下結(jié)尾:

服務(wù):aws-sample-application
提供者:
  名稱(chēng):aws
  運(yùn)行時(shí):nodejs12。X
  概要文件:serverless-admin
  地區(qū):us-east-2
功能:
  你好:
    處理程序:處理程序。你好
    事件:
      -http:
          路徑:/ 你好
          方法:獲取

http 我們指定路徑和HTTP方法。
而已, 讓我們通過(guò)運(yùn)行再次部署我們的應(yīng)用程序

完成后, 一個(gè)新的東西應(yīng)該出現(xiàn)在輸出終端中, 這就是已經(jīng)創(chuàng)建的端點(diǎn):

讓我們打開(kāi)端點(diǎn):

您應(yīng)該看到您的函數(shù)正在執(zhí)行, 返回輸出, 以及有關(guān)請(qǐng)求的一些信息。 讓我們檢查一下Lambda函數(shù)中發(fā)生了什么變化。

打開(kāi) AWS Lambda, 然后點(diǎn)擊您的功能。

我們?cè)凇?strong>設(shè)計(jì)師”我們擁有的標(biāo)簽 API網(wǎng)關(guān) 附加到我們的Lambda和API端點(diǎn)。

偉大的! 您已經(jīng)創(chuàng)建了一個(gè)超級(jí)簡(jiǎn)單的無(wú)服務(wù)器應(yīng)用程序, 將其部署到AWS Lambda, 并測(cè)試了其功能。 還, 我們使用 AWS API網(wǎng)關(guān)。

迄今為止, 我們知道我們可以在本地調(diào)用函數(shù), 但是也, 我們可以使用serverless-offline插件離線運(yùn)行整個(gè)應(yīng)用程序。

該插件可在本地/開(kāi)發(fā)計(jì)算機(jī)上模擬AWS Lambda和API網(wǎng)關(guān)。 它啟動(dòng)一個(gè)HTTP服務(wù)器,該服務(wù)器處理請(qǐng)求并調(diào)用您的處理程序。

要安裝插件,請(qǐng)?jiān)趹?yīng)用目錄中運(yùn)行以下命令

然后在項(xiàng)目的 無(wú)服務(wù)器。yml 打開(kāi)文件并添加 外掛程式 財(cái)產(chǎn):

插件:
  -無(wú)服務(wù)器離線

配置應(yīng)如下所示:

服務(wù):aws-sample-application
提供者:
  名稱(chēng):aws
  運(yùn)行時(shí):nodejs12。X
  概要文件:serverless-admin
  地區(qū):us-east-2
功能:
  你好:
    處理程序:處理程序。你好
    事件:
      -http:
          路徑:/ 你好
          方法:獲取
插件:
  -無(wú)服務(wù)器離線

要檢查我們是否已成功安裝和配置插件運(yùn)行

您應(yīng)該看到以下內(nèi)容:

現(xiàn)在,在您項(xiàng)目的根目錄中, 運(yùn)行命令

如你看到的, an HTTP 服務(wù)器正在監(jiān)聽(tīng)端口3000, 您可以訪問(wèn)您的功能, 例如, 在這里,我們的hello函數(shù)具有http:// localhost:3000 / dev / hello。 首先,我們的回應(yīng)與 API網(wǎng)關(guān), 我們之前創(chuàng)建的。

到目前為止,您做得很好! 您使用Serverless擁有一個(gè)可以正常運(yùn)行的應(yīng)用程序。 讓我們擴(kuò)展我們的應(yīng)用程序并添加 大查詢(xún) 與其集成,以查看其工作方式以及集成方式。

大查詢(xún)是一種無(wú)服務(wù)器的軟件即服務(wù)(SaaS), 這是一種支持查詢(xún)的經(jīng)濟(jì)高效且快速的數(shù)據(jù)倉(cāng)庫(kù)。 在我們繼續(xù)將其與NodeJS應(yīng)用集成之前, 我們必須創(chuàng)建一個(gè)帳戶(hù), 因此,讓我們繼續(xù)。

轉(zhuǎn)到https:// cloud。谷歌。com并使用您的帳戶(hù)登錄, 如果您還沒(méi)有,請(qǐng)創(chuàng)建一個(gè)帳戶(hù)并繼續(xù)。

當(dāng)您登錄到Google Cloud Console時(shí), 您必須創(chuàng)建一個(gè)新項(xiàng)目。 點(diǎn)擊徽標(biāo)旁邊的三個(gè)點(diǎn),它將打開(kāi)一個(gè)模式窗口,您可以在其中選擇“新項(xiàng)目。

輸入項(xiàng)目的名稱(chēng)。 我們將使用 big詢(xún)問(wèn)-eXample。 建立專(zhuān)案后, 導(dǎo)航 大查詢(xún) 使用抽屜:

當(dāng)大查詢(xún)載入時(shí), 在左側(cè), 您將看到該項(xiàng)目的數(shù)據(jù), 您可以訪問(wèn)的 以及公共數(shù)據(jù)集。 在此示例中,我們使用了公共數(shù)據(jù)集。 它被命名 covid19_ecdc

播放數(shù)據(jù)集和可用表。 預(yù)覽其中的數(shù)據(jù)。 這是一個(gè)每小時(shí)更新一次的公共數(shù)據(jù)集,其中包含有關(guān) 新冠肺炎 全球數(shù)據(jù)。

我們必須創(chuàng)建一個(gè)IAM用戶(hù)-> 服務(wù)帳戶(hù)才能訪問(wèn)數(shù)據(jù)。 所以, 在菜單中 點(diǎn)擊 “ IAM和管理員,” 然后 “服務(wù)帳戶(hù)?!?/strong>

點(diǎn)擊 “創(chuàng)建服務(wù)帳戶(hù)” 按鈕, 輸入服務(wù)帳戶(hù)名稱(chēng),然后單擊 “創(chuàng)建?!?/strong> 下一個(gè), 去 ”服務(wù)帳戶(hù)權(quán)限”, 搜索并選擇, “ 大查詢(xún) Admin”

點(diǎn)擊 ”繼續(xù),”這是最后一步, 在這里,您需要您的鑰匙, 因此,請(qǐng)點(diǎn)擊“按鍵并導(dǎo)出為 JSON格式。 將其安全地保存在某個(gè)地方, 我們稍后將需要它。 點(diǎn)擊 完畢 完成服務(wù)帳戶(hù)的創(chuàng)建。

現(xiàn)在, 我們將使用此處生成的憑據(jù)連接NodeJS BigQuery庫(kù)。

您需要安裝 BigQuery NodeJS庫(kù)可在您剛剛創(chuàng)建的項(xiàng)目中使用它。 在app目錄中運(yùn)行以下命令:

第一的, 通過(guò)運(yùn)行初始化npm

填寫(xiě)所有問(wèn)題,然后繼續(xù)安裝 BigQuery 圖書(shū)館:

在繼續(xù)更改函數(shù)處理程序之前, 我們必須攜帶先前創(chuàng)建的JSON文件中的私鑰。 我們將要使用 無(wú)服務(wù)器環(huán)境 變量來(lái)做到這一點(diǎn)。 您可以在此處獲取更多信息。

打開(kāi) 無(wú)服務(wù)器。yml, 和在 提供者 屬性添加 環(huán)境 像這樣的屬性:

環(huán)境:
PROJECT_ID:${file(https:// devrix。com / tutorial / build-application-serverless-framework-aws-bigquery / 配置 / bigquery-config。json):project_id}
CLIENT_EMAIL:${file(https:// devrix。com / tutorial / build-application-serverless-framework-aws-bigquery / config / bigquery-config。json):client_email}
PRIVATE_KEY:${file(https:// devrix。com / tutorial / build-application-serverless-framework-aws-bigquery / config / bigquery-config。json):private_key}

創(chuàng)建 PROJECT_ID, PRIVATE_KEY, 和 CLIENT_EMAIL 環(huán)境變量, 它具有與我們生成的JSON文件相同的屬性(小寫(xiě))。 我們已將其放置在 config 文件夾并命名 bigquery-config。json。

現(xiàn)在, 您應(yīng)該最終得到無(wú)服務(wù)器的支持。yml文件如下所示:

服務(wù):aws-sample-application
提供者:
  名稱(chēng):aws
  運(yùn)行時(shí):nodejs12。x
  概要文件:serverless-admin
  地區(qū):us-east-2
  環(huán)境:
    PROJECT_ID:${file(https:// devrix。com / tutorial / build-application-serverless-framework-aws-bigquery / config / bigquery-config。json):project_id}
    CLIENT_EMAIL:${file(https:// devrix。com / tutorial / build-application-serverless-framework-aws-bigquery / config / bigquery-config。json):client_email}
    PRIVATE_KEY:${file(https:// devrix。com / tutorial / build-application-serverless-framework-aws-bigquery / config / bigquery-config。json):private_key}
功能:
  你好:
    處理程序:處理程序。hello
    事件:
      -http:
          路徑:/ hello
          方法:獲取
插件:
  -無(wú)服務(wù)器離線

現(xiàn)在打開(kāi) 處理程序。js 并導(dǎo)入BigQuery庫(kù), 在文件的“使用嚴(yán)格”下方,添加以下行:

現(xiàn)在,我們必須告訴BigQuery庫(kù)該憑據(jù)。 以此目的, 創(chuàng)建一個(gè)實(shí)例化的新常量 BigQuery 具有憑據(jù):

const bigQueryClient = new BigQuery({
    projectId:進(jìn)程。環(huán)境PROJECT_ID,
    credentials: {
        client_email:進(jìn)程。環(huán)境CLIENT_EMAIL,
        private_key:進(jìn)程。環(huán)境PRIVATE_KEY
    }
});

下一個(gè), 讓我們創(chuàng)建我們的BigQuery SQL查詢(xún)。 我們想檢索有關(guān)的最新信息 新冠肺炎 保加利亞的案例。 在繼續(xù)之前,我們正在使用BigQuery查詢(xún)編輯器對(duì)其進(jìn)行測(cè)試, 因此,我們創(chuàng)建了一個(gè)自定義查詢(xún):

SELECT * FROM`bigquery-public-data。covid19_ecdc。covid_19_geographic_distribution_worldwide` WHERE geo_id ='BG'ORDER BY date DESC LIMIT 1

好的! 現(xiàn)在,在我們的NodeJS應(yīng)用中實(shí)現(xiàn)它。
打開(kāi) 處理程序。js 并粘貼下面的代碼

const query ='SELECT * FROM`bigquery-public-data。covid19_ecdc。covid_19_geographic_distribution_worldwide` WHERE geo_id=\'BG' ORDER BY date DESC LIMIT 1';
const 選項(xiàng) ={
    查詢(xún):查詢(xún)
}

const [job]=await bigQueryClient。createQueryJob(options);
const [行數(shù)]=await job。getQueryResults();

我們已經(jīng)創(chuàng)建了 queryoptions 常數(shù)。 然后,我們將查詢(xún)作為作業(yè)運(yùn)行,并從中檢索結(jié)果。

我們還更改返回處理程序,以返回查詢(xún)生成的行:

return {
    statusCode:200,
    正文:JSON。串化(
        {
            行數(shù)
        },
        空值,
        2
    ),
};

讓我們看看完整的 處理程序。js

“使用嚴(yán)格”;

const {BigQuery}=require('@google-cloud/bigquery');
const bigQueryClient = new BigQuery({
    projectId:進(jìn)程。環(huán)境PROJECT_ID,
    credentials: {
        client_email:進(jìn)程。環(huán)境CLIENT_EMAIL,
        private_key:進(jìn)程。環(huán)境PRIVATE_KEY
    }
});

模塊。出口。你好=異步事件=> {
    const query ='SELECT * FROM`bigquery-public-data。covid19_ecdc。covid_19_geographic_distribution_worldwide` WHERE geo_id=\'BG' ORDER BY date DESC LIMIT 1';
    const options ={
        查詢(xún):查詢(xún)
    }

    const [job]=await bigQueryClient.createQueryJob(options);
    const [rows]=await job.getQueryResults();

    return {
        statusCode:200,
        正文:JSON。串化(
            {
                rows
            },
            空值,
            2
        ),
    };
};

好的! 讓我們?cè)诒镜販y(cè)試我們的功能:

我們應(yīng)該看到輸出:

繼續(xù)部署應(yīng)用程序以通過(guò)HTTP端點(diǎn)對(duì)其進(jìn)行測(cè)試,因此運(yùn)行

等待它完成并打開(kāi)端點(diǎn)。 結(jié)果如下:

做得好! 現(xiàn)在,我們有了一個(gè)應(yīng)用程序,可以從BigQuery檢索數(shù)據(jù)并返回響應(yīng)! 最后,讓我們檢查一下它是否可以離線運(yùn)行。 跑

并加載本地端點(diǎn):

做得好。 我們幾乎快要結(jié)束了。 最后一步是稍微更改應(yīng)用程序和行為。 代替 AWS API網(wǎng)關(guān), 我們要使用 應(yīng)用程序負(fù)載均衡器. 讓我們?cè)谙乱徽轮辛私馊绾螌?shí)現(xiàn)這一目標(biāo)。

我們使用 AWS API網(wǎng)關(guān)。 在這一章當(dāng)中, 我們將介紹如何用替換API網(wǎng)關(guān) 應(yīng)用程序負(fù)載平衡器(阿爾巴)。

第一的, 讓我們來(lái)看看與API網(wǎng)關(guān)相比,應(yīng)用程序負(fù)載平衡器的工作原理:

在應(yīng)用程序負(fù)載均衡器中, 我們會(huì)映射特定的路徑(例如G。,/你好/)到目標(biāo)組–一組資源, 就我們而言 這 Lambda 功能。

目標(biāo)組只能具有一個(gè)與其關(guān)聯(lián)的Lambda函數(shù)。 每當(dāng)目標(biāo)群體需要回應(yīng)時(shí), 應(yīng)用程序負(fù)載平衡器向Lambda發(fā)送請(qǐng)求, 并且該功能必須使用響應(yīng)對(duì)象進(jìn)行響應(yīng)。 像API網(wǎng)關(guān)一樣, 這 ALB 處理所有HTTP請(qǐng)求。

ALB和 API網(wǎng)關(guān). 主要區(qū)別在于API網(wǎng)關(guān)僅支持HTTPS(SSL), 而ALB同時(shí)支持HTTP和HTTPS。

但, 讓我們來(lái)看看API網(wǎng)關(guān)的優(yōu)缺點(diǎn):

API網(wǎng)關(guān):

優(yōu)點(diǎn):

  • 出色的安全性。
  • 實(shí)施起來(lái)很簡(jiǎn)單。
  • 部署迅速,一分鐘內(nèi)即可完成。
  • 可擴(kuò)展性和可用性。

缺點(diǎn):

  • 面對(duì)高流量時(shí),它可能會(huì)變得非常昂貴。
  • 需要更多的編排, 這給開(kāi)發(fā)人員增加了一定的難度。
  • 性能下降 由于API場(chǎng)景, 可能會(huì)影響應(yīng)用程序的速度和可靠性。

讓我們繼續(xù)創(chuàng)建ALB并切換到它,而不是使用API網(wǎng)關(guān):

應(yīng)用程序負(fù)載平衡器允許開(kāi)發(fā)人員配置和路由傳入的流量。 這是“彈性負(fù)載平衡。” 它是客戶(hù)的單一聯(lián)系點(diǎn), 將傳入的應(yīng)用程序流量分布在多個(gè)目標(biāo)上, 例如多個(gè)區(qū)域中的EC2實(shí)例。

讓我們通過(guò)Amazon AWS中的UI創(chuàng)建應(yīng)用程序負(fù)載平衡器(ALB)。 登錄到“ AWS控制臺(tái)”中的“查找服務(wù)。“ 類(lèi)型 ”EC2”,然后找到“負(fù)載均衡器。

點(diǎn)擊 ”創(chuàng)建負(fù)載均衡器,“ 在下面 ”應(yīng)用程序負(fù)載均衡器,“ 選擇 ”創(chuàng)建.”。 為了一個(gè)名字, 輸入您的選擇, 我們使用了“樣本相冊(cè)“選擇方案”面向互聯(lián)網(wǎng),” IP地址類(lèi)型 ipv4。

在 ”聽(tīng)眾”, 保留原樣– HTTP和端口80。 可以為HTTPS進(jìn)行配置, 盡管您必須先擁有一個(gè)域并進(jìn)行確認(rèn),然后才能使用HTTPS。

可用區(qū)–適用 VPC 從下拉列表中選擇一個(gè),然后將所有標(biāo)記為“可用區(qū)”:

點(diǎn)擊 ”下一步配置安全設(shè)置”,提示您改善負(fù)載均衡器的安全性。 點(diǎn)擊下一步。

在 ”第三步配置安全組“, at 分配安全組 選擇“創(chuàng)建新的安全組?!苯酉聛?lái),點(diǎn)擊“下一步:配置路由。”。 在第4步中,如上面的屏幕截圖所示配置它:

點(diǎn)擊 下一個(gè), 下一個(gè), 和 創(chuàng)建.

回到負(fù)載均衡器并復(fù)制ARN,如屏幕截圖所示:

現(xiàn)在,我們必須更改無(wú)服務(wù)器。yml并刪除API Gateway http屬性。 在事件屬性下, 刪除http屬性并添加alb屬性。 函數(shù)對(duì)象應(yīng)如下所示結(jié)束:

你好:
  處理程序:處理程序。hello
  事件:
    -白:
        listenerArn:arn:aws:elasticloadbalancing:us-east-2:115129174008:listener / app / sample-alb / ae6e398a898c48e6 / 67ce6bf319d0513d
        優(yōu)先級(jí):1
        情況:
          路徑:/ hello

保存文件并運(yùn)行用于部署應(yīng)用程序的命令

成功部署后,返回到AWS Load Balancers并找到您的DNS名稱(chēng),如屏幕截圖所示:

復(fù)制DNS名稱(chēng)并輸入路徑 /你好.

它應(yīng)該可以工作,并最終為您提供下載內(nèi)容的選項(xiàng):)。 迄今為止, 應(yīng)用程序負(fù)載平衡器運(yùn)行良好, 但是應(yīng)用程序需要為我們的最終用戶(hù)返回正確的響應(yīng)。 去做這個(gè), 打開(kāi) 處理程序。js 并將return語(yǔ)句替換為以下語(yǔ)句:

return {
    statusCode:200,
    狀態(tài)描述:“ 200 OK”,
    headers: {
        “ Content-Type”:“ application / json”
    },
    isBase64Encoded:否,
    正文:JSON。串化(行)
}

ALB的區(qū)別在于響應(yīng)必須包含容器statusDescription, 標(biāo)頭 和isBase64Encoded。 請(qǐng)保存文件, 并再次部署, 但是這次不是整個(gè)應(yīng)用程序, 但反而, 只有我們已更改的功能。 運(yùn)行以下命令:

這條路, 我們只定義功能 hello 部署。 成功部署后, 再次訪問(wèn)帶有路徑的DNS名稱(chēng), 您應(yīng)該有適當(dāng)?shù)幕貞?yīng)!

偉大的! 現(xiàn)在,我們已用Application Load Balancer替換了API網(wǎng)關(guān)。 應(yīng)用程序負(fù)載平衡器比API網(wǎng)關(guān)便宜, 現(xiàn)在我們可以擴(kuò)展我們的應(yīng)用程序以滿足我們的需求, 特別是如果我們希望流量會(huì)更高。

我們使用 無(wú)服務(wù)器框架, AWS, and BigQuery, 并涵蓋了其主要用法。 無(wú)服務(wù)器是未來(lái), 而且使用它來(lái)處理應(yīng)用程序也毫不費(fèi)力。 繼續(xù)學(xué)習(xí)并深入研究無(wú)服務(wù)器框架,以探索其所有功能和秘密。 這也是一個(gè)非常簡(jiǎn)單易用的工具。

根據(jù)您的技術(shù)規(guī)范構(gòu)建定制的解決方案。 提交您的提案或請(qǐng)求一個(gè)完整的發(fā)現(xiàn)會(huì)話,以確定您的要求并評(píng)估您的業(yè)務(wù)需求。

讓我們一起開(kāi)始一個(gè)新項(xiàng)目
瀏覽更多:詢(xún)問(wèn)您的代理商發(fā)展教程

后端開(kāi)發(fā)人員
你好! 我是Dimitar Dimitrov,并且是DevriX后端開(kāi)發(fā)團(tuán)隊(duì)的成員。 我在銷(xiāo)售和產(chǎn)品管理方面有經(jīng)驗(yàn), 但是成為開(kāi)發(fā)人員一直是我兒時(shí)的夢(mèng)想。 所以, 在DevriX,我的夢(mèng)想成真了! 我喜歡與家人度過(guò)閑暇時(shí)光, 我也喜歡攝影 旅行和快車(chē)。 我也喜歡讀書(shū)(驚悚片, 小說(shuō)), 我最喜歡的作家之一是詹姆斯·羅林斯。

標(biāo)簽:宜賓 懷化 桂林 連云港 洛陽(yáng) 廣安 通化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用無(wú)服務(wù)器框架構(gòu)建應(yīng)用, AWS, 和大查詢(xún)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用無(wú)服務(wù)器框架構(gòu)建應(yīng)用, AWS, 和大查詢(xún)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于使用無(wú)服務(wù)器框架構(gòu)建應(yīng)用, AWS, 和大查詢(xún)的相關(guān)信息資訊供網(wǎng)民參考!
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266
    乡城县| 顺义区| 师宗县| 新余市| 武清区| 北安市| 宁强县| 津市市| 乃东县| 仁化县| 渝北区| 无锡市| 焦作市| 道真| 卢湾区| 峡江县| 三原县| 柘城县| 鄂尔多斯市| 盱眙县| 岳普湖县| 玉环县| 宽城| 土默特左旗| 海宁市| 陇川县| 山阳县| 延长县| 鄂尔多斯市| 沭阳县| 合水县| 宣汉县| 江阴市| 钟祥市| 松潘县| 仪陇县| 突泉县| 新晃| 呼和浩特市| 高碑店市| 钟祥市|