在 AWS Elastic Beanstalk 上部署 Web 應用程式

入門指南

單元 3:部署 Web 應用程式

在本單元,我們要將應用程式部署到雲端。

簡介

在本單元,您將會學到如何封包 NodeJS 應用程式,以便於部署。您也會學到如何使用 AWS CDK 在單元 2 中佈建所有建立的 AWS Elastic Beanstalk 資源。

您將學到的內容

  • 封包您的 NodeJS 應用程式
  • 建置並部署您的 CDK 應用程式
  • 更新 NodeJS 應用程式部署

 完成時間

10 分鐘

 單元先決條件

  • 有管理員等級存取權限的 AWS 帳戶**
  • 建議的瀏覽器:最新版的 Chrome 或 Firefox

[**]過去 24 小時內建立的帳戶可能尚未有權存取本教學課程所需的服務。

實作

封包您的 NodeJS 應用程式

在單元 2 中,您學習到我們將會使用來自 AWS CDK 的 S3 資產模組,把壓縮檔中的應用程式上傳到 S3。

為了達到此目的,您需要建立 NodeJS 應用程式的壓縮檔,並將它放在 AWS CDK 應用程式的根目錄中。  為壓縮檔「app.zip」命名。為了達到此目的,請執行以下命令:

zip -r ../app.zip ./*
gsg_build_elb_3

啟動程序帳戶中的 CDK

如果您是第一次在此帳戶及此區域中使用 AWS CDK,您需要啟動程序。將 AWS CDK 應用程式部署到 AWS 帳戶與區域時,CDK 需要佈建所需的資源才能執行部署。這些資源包含用來儲存部署檔案的 Amazon S3 儲存貯體,以及授與所需許可執行部署的 IAM 角色。部署這些初始資源稱為自舉。

若要自舉 AWS 帳戶與區域,請執行

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

應如下所示:

cdk bootstrap aws://123456789012/us-east-1

您可以從 AWS 管理主控台取得帳戶號碼,並從此列表取得區域名稱。

建置並部署您的 CDK 應用程式

在封包 NodeJS 應用程式並將其放置在 CDK 應用程式根目錄,以及自舉您的 AWS 帳戶與區域後,您就可以建置並部署您的 CDK 應用程式了。

第一步就是建置 CDK 應用程式。

node run build

如果應用程式中沒有發生錯誤,這個步驟會順利進行,現在您可以部署雲端中的 CDK 應用程式了。

cdk deploy

首先會請您確認是否要變更一部份的帳戶安全層級,因為已建立新角色。

gsg_build_elb_4

回覆「y」後,部署將會開始。需要幾分鐘完成。完成後,您將會收到此部署為您建立的 CloudFormation 堆疊的 ARN (Amazon 資源名稱) 訊息。

如果您開啟 CloudFormation 管理主控台,將會看到有 2 個新的堆疊。

gsg_build_elb_5

該堆疊稱為 CdkEbInfraStack,包含在先前的單元中建立的所有 Elastic Beanstalk 資源:Elastic Beanstalk 應用程式、應用程式版本、執行個體描述檔及環境。

另一個堆疊 (具有隨機字串) 由 Elastic Beanstalk 建立,包含 Elastic Beanstalk 應用程式執行所需的所有資源:Auto Scaling 群組、執行個體、Amazon CloudWatch 警示與指標、負載平衡與安全群組。

檢視雲端中的應用程式

如果您想要檢視部署在雲端的應用程式,首先您需要找到 web 應用程式的 URL。若要尋找此 URL,請前往 AWS 主控台中的 Elastic Beanstalk 服務,並尋找名為 MyWebAppEnvironment 的環境。

gsg_build_elb_6

接著,您會看到 URL。按一下之後,web 應用程式就會啟動。

更新 NodeJS 應用程式部署

如果您想要變更 web 應用程式,並重新部署到雲端,請依照下列步驟:

  • 在 web 應用程式中進行變更
  • 封包到 app.zip 檔案
  • 將 app.zip 檔案放到 CDK 應用程式中的根目錄
  • 建置 CDK 專案 - npm run build
  • 部署 CDK 專案 - cdk deploy

現在,您可以驗證已部署 Elastic Beanstalk 應用程式的新版本。造訪 web 應用程式 URL 時,將會部署新的版本,這需要花一些時間,請留意主控台的完成進度。

gsg_build_elb_7

常見錯誤

壓縮應用程式

如果在將 NodeJS 應用程式上傳到 Elastic Beanstalk 時發現此錯誤。

Failed to find package.json. Node.js may have issues starting. Verify package.json is valid or place code in a file named server.js or app.js.

發生的原因可能是封包應用程式的方式有誤。請移除 package-lock.json 與 node_modules 目錄,並執行 web 應用程式目錄中的命令。

zip -r app.zip .

這會正確地壓縮 Elastic Beanstalk 檔案。

封包應用程式時的節點模組

您可以將 node_modules 目錄與所有已下載的相依性封包到 web 應用程式的壓縮檔中。

擁有此目錄時,Elastic Beanstalk 會假設不需要下載相依性。

請參閱詳細說明:處理 Elastic Beanstalk 封包中的 NodeJS 相依性

結論

在本指南中,您學習到如何封包 NodeJS web 應用程式並使用 Elastic Beanstalk 進行部署,以及如何將所有基礎設施部署為 CDK 應用程式。

下一步:清理資源

讓我們知道我們表現如何。

感謝您的意見回饋
我們很高興此頁面對您有所幫助。您願意分享更多詳細資訊以協助我們繼續改進嗎?
關閉
感謝您的意見回饋
很抱歉此頁面沒有幫助到您。您願意分享更多詳細資訊以協助我們繼續改進嗎?
關閉