本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Elastic Beanstalk Node.js 平台
本主題說明如何在 Elastic Beanstalk 上設定、建置和執行 Node.js 應用程式。
AWS Elastic Beanstalk 支援不同版本的 Node.js 程式設計語言的多個平台分支。如需完整清單,請參閱 AWS Elastic Beanstalk 平台文件中的 Node.js。
Elastic Beanstalk 提供組態選項,可用來自訂在 上執行的軟體 EC2 Elastic Beanstalk 環境中的 執行個體。您可以設定應用程式所需的環境變數,啟用 Amazon S3 的日誌輪換,並將包含靜態檔案的應用程式來源中的資料夾映射到代理伺服器提供的路徑。
Elastic Beanstalk 主控台中提供了修改正在執行環境組態的組態選項。要避免在終止環境的組態時遺失組態,您可以使用已儲存組態來儲存您的設定,並在之後套用至另一個環境。
若要將設定儲存於原始程式碼,您可以包含組態檔案。每次您建立環境或部署應用程式,組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼,並在部署期間執行其他執行個體自訂操作。
您可以在來源套件中包含Package.json檔案,以在部署期間安裝套件、提供啟動命令,以及指定 Node.js 您希望應用程式使用的版本。您可以包含一個 npm-shrinkwrap.json 檔案來鎖定相依性版本。
所以此 Node.js 平台包含代理伺服器,可提供靜態資產、將流量轉送至您的應用程式,以及壓縮回應。您可以針對進階的應用情境,來擴展或覆寫預設的代理組態。
有幾個選項可以啟動您的應用程序。您可以新增 Procfile 至您的來源套件,以指定啟動應用程式的命令。如果您未提供 Procfile
但提供 package.json
檔案,則 Elastic Beanstalk 會執行 npm start
。如果您也沒有提供該檔案,則 Elastic Beanstalk 會依序尋找 app.js
或 server.js
檔案,並執行程式碼。
在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定,並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊,請參閱組態選項。
如需各種擴充 Elastic Beanstalk Linux 類型平台方式的詳細資訊,請參閱 擴充 Elastic Beanstalk Linux 平台。
設定您的 Node.js 環境
您可以使用 Node.js 平台設定,以微調 Amazon EC2執行個體的行為。您可以使用 Elastic Beanstalk 主控台編輯 Elastic Beanstalk 環境的 Amazon EC2執行個體組態。
使用 Elastic Beanstalk 主控台來啟用至 Amazon S3 的日誌輪換,和設定您的應用程式可以從環境讀取的變數。
若要設定您的 Node.js Elastic Beanstalk 主控台中的環境
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
容器選項
您可以指定這些平台特有的選項:
-
代理伺服器 – 要在您的環境執行個體上使用的代理伺服器。根據預設,NGINX 已使用。
日誌選項
Log Options (日誌選項) 區段有兩個設定:
-
Instance profile (執行個體描述檔) – 指定執行個體描述檔,此描述檔具有的許可,可存取和您應用程式相關的 Amazon S3 儲存貯體。
-
啟用 Amazon S3 的日誌檔案輪換 – 指定應用程式的 Amazon EC2執行個體的日誌檔案是否複製到與您應用程式相關聯的 Amazon S3 儲存貯體。
靜態檔案
若要改善效能,您可以使用靜態檔案區段來設定代理伺服器,以從 Web 應用程式內的一組目錄提供靜態檔案 (例如,HTML或映像)。對於每個目錄,您可以設定目錄映射的虛擬路徑。代理伺服器收到位於指定路徑下的檔案請求時,會直接提供檔案而非將請求路由至您的應用程式。
如需使用組態檔案或 Elastic Beanstalk 主控台設定靜態檔案的詳細資訊,請參閱提供靜態檔案。
環境屬性
使用環境屬性區段,在執行應用程式的 Amazon EC2執行個體上指定環境組態設定。這些設定會以金鑰值對的形式傳到應用程式。
在 內 Node.js 在 中執行的環境 AWS Elastic Beanstalk,您可以透過執行 來存取環境變數process.env.ENV_VARIABLE
。
var endpoint = process.env.API_ENDPOINT
所以此 Node.js 平台會設定 PORT 環境變數至代理伺服器將流量傳遞至其中的連接埠。如需詳細資訊,請參閱設定代理伺服器。
如需更多資訊,請參閱環境屬性與其他軟體設定。
只有 Elastic Beanstalk 支援下列主控台軟體組態類別 Node.js 使用 Amazon Linux AMI平台版本 (舊版 Amazon Linux 2) 的環境。
備註
-
本主題中的資訊僅適用於以 Amazon Linux AMI() 為基礎的平台分支AL1。AL2023/AL2 平台分支與先前的 Amazon Linux AMI(AL1) 平台版本不相容,且需要不同的組態設定。
-
在 2022 年 7 月 18 日,Elastic Beanstalk 會根據 Amazon Linux AMI(AL1) 將所有平台分支的狀態設定為已淘汰。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2。
在組態頁面上指定下列項目:
-
Proxy 伺服器 – 指定要用於代理連線的 Web 伺服器 Node.js。 根據預設,NGINX 已使用。如果未選取 ,靜態檔案映射不會生效,且 GZIP 壓縮已停用。
-
Node.js 版本 – 指定 的版本 Node.js。 如需支援的清單 Node.js 版本,請參閱 Node.js AWS Elastic Beanstalk 平台指南中的 。
-
GZIP 壓縮 – 指定是否 GZIP 壓縮已啟用。根據預設,GZIP 壓縮已啟用。
-
節點命令 – 可讓您輸入用來啟動 的命令 Node.js 應用程式。空白字串 (預設值) 表示 Elastic Beanstalk 將會依序使用
app.js
、server.js
和npm start
。
Node.js 組態命名空間
您可以使用組態檔案來設定組態選項,並在部署期間執行其他的執行個體設定工作。組態選項可以是平台特定的,也可以套用至 Elastic Beanstalk 服務整體中的所有平台。組態選項會組織成命名空間 。
您可以使用 aws:elasticbeanstalk:environment:proxy
命名空間來選擇要在環境的執行個體上使用的代理。下列範例會將您的環境設定為使用 Apache
HTTPD 代理伺服器。
範例 .ebextensions/nodejs-settings.config
option_settings:
aws:elasticbeanstalk:environment:proxy:
ProxyServer: apache
您可以使用 aws:elasticbeanstalk:environment:proxy:staticfiles
命名空間設定代理提供靜態檔案。如需詳細資訊和範例,請參閱 提供靜態檔案。
Elastic Beanstalk 可提供許多組態選項讓您自訂環境。除了組態檔案之外,您也可以使用主控台、儲存的組態、EB CLI或 設定組態選項 AWS CLI。如需更多資訊,請參閱組態選項。
如果您的 Elastic Beanstalk Node.js 環境使用 Amazon Linux AMI平台版本 (Amazon Linux 2 之前的版本),請考慮本節中的特定組態和建議。
備註
-
本主題中的資訊僅適用於以 Amazon Linux AMI() 為基礎的平台分支AL1。AL2023/AL2 平台分支與先前的 Amazon Linux AMI(AL1) 平台版本不相容,且需要不同的組態設定 。
-
在 2022 年 7 月 18 日,Elastic Beanstalk 會根據 Amazon Linux AMI(AL1) 將所有平台分支的狀態設定為已淘汰。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2。
Elastic Beanstalk 支援 Amazon Linux 的一些平台特定組態選項 AMI Node.js 平台版本。您可以選擇要在應用程式之前執行的代理伺服器,選擇特定版本的 Node.js 執行,然後選擇用於執行應用程式的命令。
對於代理伺服器,您可以使用 NGINX 或 Apache 代理伺服器。您可以將 none
值設定為 ProxyServer
選項。使用此設定,Elastic Beanstalk 會獨立執行您的應用程式,而不會在任何代理伺服器後方執行。如果您的環境執行獨立應用程式,請更新程式碼以聆聽 NGINX 會將流量轉送至 。
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log('Server running at http://127.0.0.1:%s', port);
});
在支援的語言版本方面,Node.js Amazon Linux AMI平台與其他 Elastic Beanstalk 受管平台不同。這是因為每個 Node.js 平台版本僅支援幾個 Node.js 語言版本。如需支援的清單 Node.js 版本,請參閱 Node.js AWS Elastic Beanstalk 平台指南中的 。
您可以使用平台特定的組態選項來設定語言版本。如需說明,請參閱 設定您的 Node.js 環境。或者,使用 Elastic Beanstalk 主控台來更新 Node.js 環境用來更新平台版本的版本。
注意
如果您所使用的 Node.js 版本的支援已從平台移除,您必須在平台更新之前變更或移除版本設定。當發現一個或多個版本的 Node.js 存在安全漏洞時,可能會出現此種狀況。
發生這種情況時,嘗試更新到不支援已設定 的新平台版本會NodeVersion失敗。若要避免建立新環境,請將NodeVersion組態選項變更為舊平台版本和新平台版本都支援的 Node.js 版本,或移除選項設定 ,然後執行平台更新。
若要設定環境的 Node.js Elastic Beanstalk 主控台中的 版本
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
在環境概觀頁面的 Platform (平台) 下,選擇 Change (變更)。
-
在更新平台版本對話方塊中,選取 Node.js 版本。
-
選擇 Save (儲存)。
所以此 Node.js Amazon Linux AMI平台定義 aws:elasticbeanstalk:container:nodejs:staticfiles
和 aws:elasticbeanstalk:container:nodejs
命名空間中的其他選項。
下列組態檔案會告知 Elastic Beanstalk 使用 npm start
來執行應用程式。它也會將代理類型設定為 Apache 並啟用壓縮。最後,它設定代理從兩個來源目錄提供靜態檔案。一個來源是 HTML 檔案位於statichtml
來源目錄的網站根下的html
路徑。另一個來源是來自 staticimages
來源目錄的網站根目錄下的 images
路徑的映像檔案。
範例 .ebextensions/node-settings.config
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"
ProxyServer: apache
GzipCompression: true
aws:elasticbeanstalk:container:nodejs:staticfiles:
/html: statichtml
/images: staticimages
Elastic Beanstalk 可提供許多組態選項讓您自訂環境。除了組態檔案之外,您也可以使用主控台、儲存的組態、EB CLI或 設定組態選項 AWS CLI。如需更多資訊,請參閱組態選項。