CodeDeploy AppSpec 檔案參考 - AWS CodeDeploy

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

CodeDeploy AppSpec 檔案參考

本節僅供參考。如需 AppSpec 檔案的概念性概述,請參閱〈〉Application Specification Files

應用程式規格檔AppSpec 案 (檔案) 是用 CodeDeploy 來管理部署的 YAML 格式或 JSON 格式檔案。

注意

除非您正在執行本機部署appspec.yml,否則必須命名 EC2/ 內部部署的 AppSpec 檔案。如需詳細資訊,請參閱 建立本機部署

AppSpec Amazon ECS 運算平台上的檔案

對於 Amazon ECS 運算平台應用程式,會使用 AppSpec 檔案 CodeDeploy 來判斷:

  • 您的 Amazon ECS 任務定義檔案。這在 AppSpec 文件中的指TaskDefinition令中以其 ARN 指定。

  • 取代工作集中的容器和連接埠,應用程式負載平衡器或 Network Load Balancer 會在部署期間重新路由傳送流量。這是通過 AppSpec 文件中的指LoadBalancerInfo令指定的。

  • 有關 Amazon ECS 服務的選用資訊,例如執行所在的平台版本、子網路及其安全群組。

  • 可在 Amazon ECS 部署期間與生命週期事件相對應的掛接期間執行的選用 Lambda 函數。如需詳細資訊,請參閱 AppSpec Amazon ECS 部署的「掛鉤」部分

AppSpec AWS Lambda 運算平台上的檔案

對於 AWS Lambda 運算平台應用程式,會使用該 AppSpec 檔案 CodeDeploy 來判斷:

  • 要部署哪個 Lambda 函數版本。

  • 哪些 Lambda 函數用作驗證測試。

AppSpec 檔案可以是 YAML 格式或 JSON 格式。您也可以在建立部署時,將 AppSpec 檔案內容直接輸入 CodeDeploy 主控台。

AppSpec EC2/內部部署計算平台上的檔案

如果您的應用程式使用 EC2 /內部部署計算平台,該 AppSpec 檔案必須是名為 YAML 格式的檔案,appspec.yml而且必須放置在應用程式原始程式碼目錄結構的根目錄結構中。否則,部署會失敗。它被用 CodeDeploy 來確定:

  • 它應該從 Amazon S3 或 GitHub. 中的應用程式修訂版安裝到執行個體上的項目。

  • 為回應部署生命週期事件而執行的生命週期事件勾點。

在您有完成的 AppSpec 檔案之後,您可以將它與要部署的內容一起捆綁到歸檔檔案 (zip、tar 或壓縮的 tar) 中。如需詳細資訊,請參閱 使用的應用程式修訂 CodeDeploy

注意

視窗伺服器執行個體不支援 tar 和壓縮的 tar 封存檔案格式 (.tar 和 .tar.gz)。

在您擁有隨附的封存檔案 (在修訂版中稱 CodeDeploy 為) 之後,您可以將其上傳到 Amazon S3 儲存貯體或 Git 儲存庫。然後,您可 CodeDeploy 以使用部署修訂版本。如需說明,請參閱使用建立部署 CodeDeploy

EC2 /內部部署計算平台部署的 appspec.yml 會儲存在修訂版本的根目錄中。如需詳細資訊,請參閱 新增EC2/ AppSpec 內部部署的檔案規劃修訂 CodeDeploy

AppSpec 檔案間距

以下是 AppSpec 檔案間距的正確格式。方格括弧中的數字表示在項目之間必需的空格數。例如,[4]意味著在項目之間插入四個空格。 CodeDeploy 如果檔案中的位置和空格數目不正確,則會引發可能難以偵 AppSpec 錯的錯誤。

version:[1]version-number os:[1]operating-system-name files: [2]-[1]source:[1]source-files-location [4]destination:[1]destination-files-location permissions: [2]-[1]object:[1]object-specification [4]pattern:[1]pattern-specification [4]except:[1]exception-specification [4]owner:[1]owner-account-name [4]group:[1]group-name [4]mode:[1]mode-specification [4]acls: [6]-[1]acls-specification [4]context: [6]user:[1]user-specification [6]type:[1]type-specification [6]range:[1]range-specification [4]type: [6]-[1]object-type hooks: [2]deployment-lifecycle-event-name: [4]-[1]location:[1]script-location [6]timeout:[1]timeout-in-seconds [6]runas:[1]user-name

下面是一個正確間隔的 AppSpec 文件的例子:

version: 0.0 os: linux files: - source: / destination: /var/www/html/WordPress hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh - location: scripts/create_test_db.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root

如需有關間距的詳細資訊,請參閱 YAML 規格。