本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Elastic Beanstalk 應用程式原始碼套件
本主題說明如何在原始碼套件中將您的應用程式原始碼檔案上傳至 Elastic Beanstalk。它說明了原始碼套件的要求、結構以及建立原始碼套件的方法。
原始碼套件是存放在 Amazon Simple Storage Service (Amazon S3) 中應用程式來源的封存檔 (例如 ZIP或 WAR 檔案)。標準和叢集模式 (與 的相同SourceBundle輸入) 都支援此功能CreateApplicationVersion。Elastic Beanstalk 使用方式有所不同。在 Beanstalk Standard 中,它會部署到受管平台上,因此本主題中的平台特定封裝僅限標準。在 Beanstalk 叢集中,它是輸入 Elastic Beanstalk 建置為具有 Dockerfile 或 Cloud Native Buildpacks 的容器映像 (如果不是從映像 URI 部署)。如需叢集建置路徑,請參閱 為 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 檔案會自動正確建構。如需詳細資訊,請參閱設定 EB 命令列界面 (EB CLI) 以管理 Elastic Beanstalk、使用 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 區段新增至檔案路徑)。
本主題全程採用此範例檔案結構,藉此說明如何壓縮檔案。
建立 .NET 應用程式的原始碼套件
如果您使用 Visual Studio,您可以使用 中包含的部署工具 AWS Toolkit for Visual Studio ,將 .NET 應用程式部署至 Elastic Beanstalk。如需詳細資訊,請參閱使用部署工具在 .NET 中 AWS 部署 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 工具。
請確認解壓縮的檔案與封存檔出現在相同的資料夾,而非在新的最上層資料夾或目錄。