建立應用程式原始碼套件 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立應用程式原始碼套件

當您使用 AWS Elastic Beanstalk 主控台部署新的應用程式或應用程式版本,將需要上傳原始碼套件。您的原始碼套件必須符合下列要求:

  • 內含單一 ZIP 檔案或 WAR 檔案 (您可於 WAR 檔案納入多個 ZIP 檔案)

  • 不超過 500 MB

  • 不含父資料夾或最上層目錄 (可包含子目錄)

若您想要部署會定期處理背景任務的工作者應用程式,您的應用程式原始碼套件務必納入 cron.yaml 檔案。如需更多詳細資訊,請參閱 周期性任務

若您透過 Elastic Beanstalk 命令列界面 (EB CLI)、AWS Toolkit for Eclipse 或 AWS Toolkit for Visual Studio 來部署應用程式,將自動正確建構 ZIP 或 WAR 檔案。如需詳細資訊,請參閱 使用 Elastic Beanstalk 命令列界面 (EB CLI)在 Elastic Beanstalk 建立和部署 Java 應用程式AWS Toolkit for Visual Studio

自命令列建立原始碼套件

使用 zip 命令來建立原始碼套件。欲包含隱藏檔案和資料夾,需使用的模式如下。

~/myapp$ zip ../myapp.zip -r * .[^.]* adding: app.js (deflated 63%) adding: index.js (deflated 44%) adding: manual.js (deflated 64%) adding: package.json (deflated 40%) adding: restify.js (deflated 85%) adding: .ebextensions/ (stored 0%) adding: .ebextensions/xray.config (stored 0%)

如此可確保 Elastic Beanstalk 組態檔案與其他以句點 (.) 為首的檔案和資料夾,均包含在封存中。

以 Tomcat Web 應用程式而言,請使用 jar 來建立 Web 封存檔。

~/myapp$ jar -cvf myapp.war .

上述命令納入的隱藏檔案,可能會增加原始碼套件不必要的大小。如需其他控制,請使用更詳細的檔案模式,或透過 Git 建立您的原始碼套件

透過 Git 建立原始碼套件

若您透過 Git 管理您的應用程式原始碼,請使用 git archive 命令來建立您的原始碼套件。

$ git archive -v -o myapp.zip --format=zip HEAD

git archive 僅納入存放於 Git 的檔案,且會排除忽略檔案和 Git 檔案,如此將盡可能減少原始碼套件的大小。如需詳細資訊,請前往 git-archive 手冊頁面

於 Mac OS X Finder 或 Windows 檔案總管壓縮檔案

當您於 Mac OS X Finder 或 Windows 檔案總管建立 ZIP 檔案,請確保您壓縮的是檔案和子資料夾本身,而非壓縮父資料夾。

注意

Mac OS X 和 Linux 作業系統的圖形使用者介面 (GUI),不會顯示檔名以句點 (.) 為首的檔案和資料夾。若 ZIP 檔案必須納入諸如 .ebextensions 的隱藏資料夾,請使用命令列來壓縮您的應用程式,不要使用 GUI。如需於 Mac OS X 或 Linux 作業系統上透過命令列程序建立 ZIP 檔案的詳細資訊,請參閱 自命令列建立原始碼套件

範例

假設您有一個標記為 myapp 的 Python 專案資料夾,其中包含下列檔案和子資料夾:

myapplication.py README.md static/ static/css static/css/styles.css static/img static/img/favicon.ico static/img/logo.png templates/ templates/base.html templates/index.html

如上列要求,您壓縮的原始碼套件不得包含父資料夾,因此其解壓縮後的結構,不會出現額外的最上層目錄。在此範例中,檔案解壓縮時不應建立 myapp 資料夾 (,或者,不應於命令列將 myapp 區段新增至檔案路徑)。

本主題全程採用此範例檔案結構,藉此說明如何壓縮檔案。

欲在 Mac OS X Finder 壓縮檔案
  1. 開啟最上層的專案資料夾,並選取其中的所有檔案和子資料夾。請不要選取最上層資料夾本身。

    於 Mac OS X Finder 選擇的檔案
  2. 在所選檔案上按一下滑鼠右鍵,然後選擇 Compress X items (壓縮 X 個項目),其中 X 是您所選擇的檔案和子資料夾的數量。

    於 Mac OS X Finder 壓縮檔案
欲在 Windows 檔案總管壓縮檔案
  1. 開啟最上層的專案資料夾,並選取其中的所有檔案和子資料夾。請不要選取最上層資料夾本身。

    於 Windows 檔案總管選擇的檔案
  2. 在所選檔案上按一下滑鼠右鍵,選擇 Send to (傳送到),然後選擇 Compressed (zipped) folder (壓縮的 (zipped) 資料夾)

    於 Windows 檔案總管壓縮檔案

建立 .NET 應用程式的原始碼套件

如果您使用 Visual Studio,您可以使用包含在 AWS Toolkit for Visual Studio 中的部署工具,將您的 .NET 應用程式部署到 Elastic Beanstalk。如需更多詳細資訊,請參閱 使用部署工具在 .NET 中部署 Elastic Beanstalk 應用程式

若您需要手動建立 .NET 應用程式的原始碼套件,您無法直接建立內含專案目錄的 ZIP 檔案。您必須為您的專案建立能夠部署至 Elastic Beanstalk 的 Web 部署套件。建立部署套件可採用多種方法:

  • 使用 Visual Studio 內的 Publish Web (發佈 Web) 精靈,藉此建立部署套件。如需詳細資訊,請前往 How to: Create a Web Deployment Package in Visual Studio

    重要

    建立 Web 部署套件時,Site name (網站名稱) 開頭必須為 Default Web Site

  • 若您有 .NET 專案,則可以使用 msbuild 命令來建立部署套件,如下列範例所示。

    重要

    DeployIisAppPath 參數開頭必須為 Default Web Site

    C:/> msbuild <web_app>.csproj /t:Package /p:DeployIisAppPath="Default Web Site"
  • 若您有網站專案,則可以使用 IIS Web 部署工具來建立部署套件。如需詳細資訊,請前往 Packaging and Restoring a Web site

    重要

    apphostconfig 參數開頭必須為 Default Web Site

若您部署多個應用程式或 ASP.NET Core 應用程式,請將 .ebextensions 資料夾放置於原始碼套件的根目錄,與應用程式套件和資訊清單檔案並列:

~/workspace/source-bundle/ |-- .ebextensions | |-- environmentvariables.config | `-- healthcheckurl.config |-- AspNetCore101HelloWorld.zip |-- AspNetCoreHelloWorld.zip |-- aws-windows-deployment-manifest.json `-- VS2015AspNetWebApiApp.zip

測試您的原始碼套件

建議您先於本機測試來源套件,之後再上傳至 Amazon Elastic Beanstalk。由於 Elastic Beanstalk 基本上使用命令列來擷取檔案,因此建議從命令列進行測試,而不要使用 GUI 工具。

欲在 Mac OS X 或 Linux 測試檔案擷取
  1. 開啟終端視窗 (Mac OS X) 或連接至 Linux 伺服器。前往內含原始碼套件的目錄。

  2. 使用 unziptar xf 命令,解壓縮封存檔。

  3. 請確認解壓縮的檔案與封存檔出現在相同的資料夾,而非在新的最上層資料夾或目錄。

    注意

    若您使用 Mac OS X Finder 來解壓縮封存檔時,無論封存檔本身的結構為何,都會建立新的最上層資料夾。為了獲得最佳結果,請使用命令列。

欲在 Windows 測試檔案擷取
  1. 下載或安裝可讓您透過命令列擷取壓縮檔案的程式。例如,您可以自 http://stahlforce.com/dev/index.php?tool=zipunzip 免費下載 unzip.exe 程式。

  2. 可視需要將執行檔複製至內含原始碼套件的目錄。若您已安裝全系統的工具,則可略過此步驟。

  3. 使用合適的命令,解壓縮封存檔。若您已使用步驟 1 的連結下載 unzip.exe,則命令為 unzip <archive-name>

  4. 請確認解壓縮的檔案與封存檔出現在相同的資料夾,而非在新的最上層資料夾或目錄。