

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

# 使用 CodeDeploy 代理程式
<a name="codedeploy-agent"></a>

 AWS CodeDeploy 代理程式是一種軟體套件，當在執行個體上安裝和設定時，可讓該執行個體在 CodeDeploy 部署中使用。

AWS 支援 CodeDeploy 代理程式的最新次要版本。目前最新的次要版本為 1.8.x。

**注意**  
 只有在您部署到 EC2/現場部署運算平台時，才需要 CodeDeploy 代理程式。使用 Amazon ECS 或 AWS Lambda 運算平台的部署不需要代理程式。

安裝代理程式時，組態檔案會置放於執行個體上。檔案會用於指定代理程式的運作方式。此組態檔案會指定目錄路徑和其他設定 AWS CodeDeploy ，以供 在與執行個體互動時使用。您可以在檔案中變更一部分的組態選項。如需有關使用 CodeDeploy 代理程式組態檔案的資訊，請參閱 [CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。

如需使用 CodeDeploy 代理程式的詳細資訊，例如安裝、更新和驗證版本的步驟，請參閱 [管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)。

**Topics**
+ [CodeDeploy 代理程式支援的作業系統](#codedeploy-agent-supported-operating-systems)
+ [CodeDeploy 代理程式的通訊協定和連接埠](#codedeploy-agent-outbound-port)
+ [CodeDeploy 代理程式的版本歷史記錄](#codedeploy-agent-version-history)
+ [管理 CodeDeploy 程序](#codedeploy-agent-processes)
+ [應用程式修訂和日誌檔案清除](#codedeploy-agent-revisions-logs-cleanup)
+ [CodeDeploy 代理程式安裝的檔案](#codedeploy-agent-install-files)
+ [管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)

## CodeDeploy 代理程式支援的作業系統
<a name="codedeploy-agent-supported-operating-systems"></a>

### 支援的 Amazon EC2 AMI 作業系統
<a name="codedeploy-agent-supported-operating-systems-ec2"></a>

CodeDeploy 代理程式已在下列 Amazon EC2 AMI 作業系統上進行測試：
+ Amazon Linux 2023 (ARM、x86)
+ Amazon Linux 2 (ARM、x86)
+ Microsoft Windows Server 2022、2019
+ Red Hat Enterprise Linux (RHEL) 9.x、8.x、7.x
+ Ubuntu Server 22.04 LTS、20.04 LTS、18.04 LTS、16.04 LTS

CodeDeploy 代理程式可供您做為開放原始碼，以適應您的需求。它可以與其他 Amazon EC2 AMI 作業系統搭配使用。如需詳細資訊，請前往 GitHub 中的 [CodeDeploy 代理](https://github.com/aws/aws-codedeploy-agent)程式儲存庫。

### 支援的現場部署作業系統
<a name="codedeploy-agent-supported-operating-systems-on-premises"></a>

CodeDeploy 代理程式已在下列內部部署作業系統上進行測試：
+ Microsoft Windows Server 2022、2019
+ Red Hat Enterprise Linux (RHEL) 9.x、8.x、7.x
+ Ubuntu Server 22.04 LTS、20.04 LTS

CodeDeploy 代理程式可供您做為開放原始碼，以適應您的需求。它可搭配其他現場部署執行個體作業系統使用。如需詳細資訊，請前往 GitHub 中的 [CodeDeploy 代理](https://github.com/aws/aws-codedeploy-agent)程式儲存庫。

## CodeDeploy 代理程式的通訊協定和連接埠
<a name="codedeploy-agent-outbound-port"></a>

CodeDeploy 代理程式會透過連接埠 443 使用 HTTPS 進行傳出通訊。

CodeDeploy 代理程式在 EC2 執行個體上執行時，將使用 [EC2 中繼資料](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)端點擷取執行個體相關資訊。深入了解[限制和授與執行個體中繼資料服務存取](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#instance-metadata-limiting-access)的相關資訊。

## CodeDeploy 代理程式的版本歷史記錄
<a name="codedeploy-agent-version-history"></a>

您的執行個體必須執行 CodeDeploy 代理程式的支援版本。目前支援的最低版本為 1.8.x。

**注意**  
建議使用最新版本的 CodeDeploy 代理程式。如果您遇到問題，請先更新至最新版本，再聯絡 AWS Support。如需升級資訊，請參閱 [更新 CodeDeploy 代理程式](codedeploy-agent-operations-update.md)。

下表列出 CodeDeploy 代理程式的所有版本，以及每個版本隨附的功能和增強功能。


| 版本 | 版本日期 | 詳細資訊 | 
| --- | --- | --- | 
| 1.8.1 | 2026 年 2 月 3 日 | **已修正**：S3 端點錯誤修正。<br />**新增**：Sectigo CA 憑證至 Windows CA 清單。 | 
| 1.8.0 | 2025 年 7 月 31 日 | **已變更**：將適用於 Windows 的 CodeDeploy 代理程式中的 Bundled Ruby 升級至 3.2。 | 
| 1.7.1 | 2024 年 11 月 14 日 | **已變更**：更新了安全修補程式的相依性。 | 
| 1.7.0 | 2024 年 3 月 6 日 | **新增**：CodeDeploy 代理程式`:disable_imds_v1:`組態檔案的組態設定。使用此設定可在發生 IMDSv2 錯誤時停用 IMDSv1 IMDSv2的後援。預設為 `false`（啟用後援）。如需詳細資訊，請參閱 [CodeDeploy 代理程式組態參考](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-agent-configuration.html)。<br />**新增**：支援 Red Hat Enterprise Linux 9 (RHEL 9) 作業系統。<br />**新增**：支援 Ubuntu Server 上的 Ruby 3.1 和 3.2 版。<br />**已修正**：如果 CodeDeploy 代理程式組態檔案無法載入，CodeDeploy 代理程式現在會產生易於使用的錯誤。<br />**已變更**：在適用於 Windows 的 CodeDeploy 代理程式中，將 Ruby 升級到 2.7.8-1。 | 
| 1.6.0 | 2023 年 3 月 30 日 | **新增**：支援 Ruby 3.1、3.2。<br />**新增**：支援 Amazon Linux 2023。<br />**新增**：支援 Windows Server 2022。<br />**已變更**： 的預設設定`verbose`現在`false`適用於 Windows Server 執行個體。若要繼續在 Windows 的日誌檔案中列印偵錯訊息，您必須將 `verbose`設定為 `true`。<br />**已移除**：支援 Windows Server 2016 和 Windows Server 2012 R2。<br />**已移除**：支援 Amazon Linux 2018.03.x。 | 
| 1.5.0 | 2023 年 3 月 3 日 | **新增**：支援 Ruby 3。<br />**新增**：支援 Ubuntu 22.04。<br />**已修正**：啟動後立即重新啟動 CodeDeploy 代理程式會導致代理程式懸置的問題。<br />**已變更**：如果代理程式服務在執行掛接指令碼時意外重新啟動，則 CodeDeploy 代理程式現在會在代理程式啟動時失敗主機部署。此修正可讓您避免在重試部署之前等待 70 分鐘的逾時期間。<br />**棄用通知**：CodeDeploy 代理程式 1.5.0 是支援 Windows Server 2016 和 Windows Server 2012 R2 的最後一個版本。<br />**已移除：**支援 Ubuntu 14.04 LTS、Windows Server 2008 R2 和 Windows Server 2008 R2 32 位元上的 CodeDeploy 代理程式。 | 
| 1.4.1 | 2022 年 12 月 6 日 | **已修正**：與記錄相關的安全性漏洞。<br />**增強功能**：改善輪詢主機命令時的日誌記錄。 | 
| 1.4.0 | 2022 年 8 月 31 日 | **新增**：支援 Red Hat Enterprise Linux 8。<br />**新增**：支援 Windows CodeDeploy 代理程式上的長檔案路徑。若要啟用長檔案路徑，您需要設定適當的 Windows 登錄機碼，然後重新啟動您的代理程式。如需詳細資訊，請參閱[長檔案路徑會導致「沒有此類檔案或目錄」錯誤](troubleshooting-deployments.md#troubleshooting-long-file-paths)。<br />**已修正**：磁碟已滿時解壓縮操作的問題。CodeDeploy 代理程式現在會偵測 unzip 的[結束程式碼 50](https://linux.die.net/man/1/unzip)，指出完整磁碟、移除部分解壓縮的檔案，並引發例外狀況，以將失敗發佈至 CodeDeploy 伺服器。錯誤訊息顯示為生命週期事件錯誤訊息，且主機層級部署將停止，而不會卡住或逾時。<br />**已修正**：會導致代理程式失敗的問題。<br />**已修正**：勾點在邊緣案例競賽條件期間會逾時的問題。沒有指令碼的勾點現在將繼續，不會再導致失敗或逾時。<br />**已變更**：已移除 CodeDeploy 代理程式`bin`目錄中的`update`指令碼，因為它不再使用。<br />**已變更**：適用於 Windows Server 的 CodeDeploy 代理程式現在綁定 Ruby 2.7。<br />**已變更**：新增了新的環境變數，供掛接指令碼根據部署套件的來源 (Amazon S3 或 GitHub) 使用。<br />如需詳細資訊，請參閱[勾點的環境變數可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-environment-variable-availability)。 **棄用通知**：CodeDeploy 代理程式 1.4.0 是將包含 32 位元 Windows Server 安裝程式的最後一個版本。 <br />**棄用通知**：CodeDeploy 代理程式 1.4.0 是支援 Windows Server 2008 R2 的最後一個版本。 <br />**已移除**：支援下列 Amazon EC2 AMIs 上的 CodeDeploy 代理程式：Amazon Linux 2014.09、2016.03、2016.09 和 2017.03。  | 
| 1.3.2 | 2021 年 5 月 6 日 |  CodeDeploy 代理程式 1.3.2 解決了會影響執行代理程式之 Windows 主機的 [CVE-2018-1000201](https://nvd.nist.gov/vuln/detail/CVE-2018-1000201)。CVE 引用 ruby-ffi，這是 CodeDeploy 代理程式的相依性。如果您的代理程式已安裝 Amazon EC2 Systems Manager (SSM)，且設定為自動更新，則不需要採取任何動作。否則，需要採取動作來手動更新代理程式。若要升級代理程式，請遵循[在 Windows Server 上更新 CodeDeploy 代理程式](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-update-windows.html)中的指示。 <br />**已修正**：在 Ubuntu 20.04 及更新版本上安裝 CodeDeploy 代理程式時發生問題。<br />**已修正**：擷取壓縮檔案時發生間歇性問題，因為未正確處理相對路徑。<br />**新增**：支援 Windows 執行個體的 [AWS PrivateLink 和 VPC 端點](https://docs.aws.amazon.com//vpc/latest/userguide/endpoint-services-overview.html)。<br />**新增**：AppSpec 檔案改進，如下所述。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/codedeploy-agent.html)<br />**升級**：CodeDeploy 現在使用適用於 Ruby 的 AWS SDK 3.0。 | 
| 1.3.1 | 2020 年 12 月 22 日 | **已修正**：1.3.0 導致內部部署執行個體無法啟動的問題。 | 
| 1.3.0 | 2020 年 11 月 10 日 |  此版本已棄用。 **已修正**：已移除不再使用的過期憑證。<br />**已修正**：從 使用的代理程式解除安裝指令碼中移除提示訊息 AWS Systems Manager，讓您更輕鬆地將主機或機群降級為舊版代理程式。 | 
| 1.2.1 | 2020 年 9 月 23 日 | **已變更**：將 適用於 Ruby 的 AWS SDK 相依性從 v2 升級到 v3。<br />**新增**：支援 IMDSv2。如果 IMDSv2 http 請求失敗，請包含 IMDSv1 的無提示後援。 IMDSv2 <br />**已變更**：已更新安全修補程式的 Rake 和 Rubyzip 相依性。<br />**已修正**：確保空的 PID 檔案會傳回 狀態，`No CodeDeploy Agent Running`並在代理程式啟動時清除 PID 檔案。 | 
| 1.1.2 | 2020 年 8 月 4 日 | **新增**：支援 Ubuntu Server 19.10 和 20.04。<br />**注意**： 19.10 版已達到其end-of-life，Ubuntu 或 CodeDeploy 不再支援此版本。<br />**新增**：Linux 和 Ubuntu 的記憶體效率改善，以更及時地釋出預留記憶體。<br />**新增**：與 Windows Server「無提示清除」的相容性，這會導致代理程式在某些情況下沒有回應。<br />**新增**：在清除期間忽略非空白目錄，以避免部署失敗。<br />**新增**：支援洛杉磯 (LA) 的 AWS Local Zone。<br />**新增**：從執行個體中繼資料擷取 AZ，以提供 AWS Local Zones 的相容性。<br />**已新增**：使用者現在可以在子目錄中提供封存，而且不需要將其存放在根目錄中。<br />**新增**：偵測到 Rubyzip 可能導致記憶體洩漏的問題。更新 unzip 命令，先嘗試使用系統安裝的 unzip 公用程式，再使用 Rubyzip。<br />**新增**： `:enable_auth_policy:` 做為代理程式組態設定。<br />**已變更**：解壓縮警告現在會被忽略，因此部署將繼續。 | 
| 1.1.0 | 2020 年 6 月 30 日 | **已變更**：CodeDeploy 代理程式的版本控制現在遵循 Ruby 標準版本控制慣例。<br />**已新增**：安裝和更新命令的新參數，以允許從命令列安裝特定的代理程式版本。<br />**已移除**：已移除適用於 Linux 和 Ubuntu 的 CodeDeploy 代理程式自動更新程式。若要設定 CodeDeploy 代理程式的自動更新，請參閱[使用 安裝 CodeDeploy 代理程式 AWS Systems Manager](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ssm.html)。 | 
| 1.0.1.1597 | 2018 年 11 月 15 日 | **增強功能**：CodeDeploy 支援 Ubuntu 18.04。<br />**增強功能**：CodeDeploy 支援 Ruby 2.5。<br />**增強功能**：CodeDeploy 支援 FIPS 端點。如需 FIPS 端點的詳細資訊，請參閱 [FIPS 140-2 概觀](https://aws.amazon.com/compliance/fips/)。如需可與 CodeBuild 搭配使用的端點，請參閱 [CodeDeploy 區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)。 | 
| 1.0.1.1518 | 2018 年 6 月 12 日 | **增強功能**：修正 CodeDeploy 代理程式在接受輪詢請求時關閉時導致錯誤的問題。<br />**增強功能**：新增部署追蹤功能，可防止 CodeDeploy 代理程式在部署進行中時關閉。<br />**加強功能**：改善刪除檔案時的效能。 | 
| 1.0.1.1458 | 2018 年 3 月 6 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**加強功能**：改善憑證驗證，支援更多受信任的授權單位。<br />**加強功能**：修正包含 BeforeInstall 生命週期事件的部署期間造成本機 CLI 失敗的問題。<br />**增強功能**：修正 CodeDeploy 代理程式更新時，可能導致作用中部署失敗的問題。 | 
| 1.0.1.1352 | 2017 年 11 月 16 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**功能**：推出一項新功能，用於測試和偵錯已安裝 CodeDeploy 代理程式的本機機器或執行個體上的 EC2/現場部署。 | 
| 1.0.1.1106 | 2017 年 5 月 16 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**功能**：在不屬於最近一次成功部署之應用程式修訂的目標位置中，針對處理內容的功能推出新支援。現有內容的部署選項現在包含保留內容、覆寫內容，或令部署失敗。<br />**增強功能**：讓 CodeDeploy 代理程式與 適用於 Ruby 的 AWS SDK (aws-sdk-core 2.9.2) 的 2.9.2 版相容。 | 
| 1.0.1.1095 | 2017 年 3 月 29 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**增強功能**：在中國 （北京） 區域引進對 CodeDeploy 代理程式的支援。<br />**增強功能**：當生命週期事件掛鉤調用時，啟用 Puppet 以在 Windows Server 執行個體上執行。<br />**加強功能**：改善 `untar` 操作的處理。 | 
| 1.0.1.1067 | 2017 年 1 月 6 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**加強功能**：修訂許多錯誤訊息，包含造成部署失敗的更明確原因。<br />**增強功能**：修正 CodeDeploy 代理程式無法識別某些部署期間要部署之正確應用程式修訂版的問題。<br />**加強功能**：還原在 `untar` 操作之前或之後使用 `pushd` 和 `popd` 的方法。 | 
| 1.0.1.1045 | 2016 年 11 月 21 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**增強功能**：讓 CodeDeploy 代理程式與 適用於 Ruby 的 AWS SDK (aws-sdk-core 2.6.11) 的 2.6.11 版相容。 | 
| 1.0.1.1037 | 2016 年 10 月 19 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />Amazon Linux、RHEL 和 Ubuntu Server 執行個體的 CodeDeploy 代理程式已更新，變更如下。對於 Windows Server 執行個體，最新版本仍為 1.0.1.998。<br />**加強功能**：代理程式現在可以判斷執行個體上安裝的 Ruby 版本，並使用該版本呼叫 `codedeploy-agent` 指令碼。 | 
| 1.0.1.1011.1 | 2016 年 8 月 17 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**加強功能**：因殼層支援問題，移除 1.0.1.1011 版推出的變更。此版本的代理程式在功能上與 2016 年 7 月 11 日發行的 1.0.1.998 版相同。 | 
| 1.0.1.1011 | 2016 年 8 月 15 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />Amazon Linux、RHEL 和 Ubuntu Server 執行個體的 CodeDeploy 代理程式已透過下列變更進行更新。對於 Windows Server 執行個體，最新版本仍為 1.0.1.998。<br />**功能**：新增了在使用 systemd init 系統的作業系統上使用 bash shell 調用 CodeDeploy 代理程式的支援。增強功能：已啟用 CodeDeploy 代理程式和 CodeDeploy 代理程式更新程式中所有 Ruby 2.x 版本的支援。更新的 CodeDeploy 代理程式不再僅依賴 Ruby 2.0。(CodeDeploy 代理程式安裝程式的 deb 和 rpm 版本仍然需要 Ruby 2.0。) | 
| 1.0.1.998 | 2016 年 7 月 11 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**增強功能**：已修正對使用*根*目錄以外的使用者設定檔執行 CodeDeploy 代理程式的支援。名為 `USER` 的變數現已取代為 `CODEDEPLOY_USER`，避免與環境變數產生衝突。 | 
| 1.0.1.966 | 2016 年 6 月 16 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**功能**：引進對使用*根*目錄以外的使用者設定檔執行 CodeDeploy 代理程式的支援。<br />**增強功能**：已修正指定您希望 CodeDeploy 代理程式為部署群組封存的應用程式修訂版數量的支援。<br />**增強功能**：讓 CodeDeploy 代理程式與 適用於 Ruby 的 AWS SDK (aws-sdk-core 2.3) 的 2.3 版相容。<br />**加強功能**：修正部署期間的 UTF-8 編碼問題。<br />**加強功能**：改善識別程序名稱的準確度。 | 
| 1.0.1.950 | 2016 年 3 月 24 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**功能**：新增安裝代理支援。<br />**增強功能**：更新安裝指令碼，如果已安裝最新版本，則不下載 CodeDeploy 代理程式。 | 
| 1.0.1.934 | 2016 年 2 月 11 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**功能**：引進指定您希望 CodeDeploy 代理程式為部署群組封存之應用程式修訂版數量的支援。 | 
| 1.0.1.880 | 2016 年 1 月 11 日 | **注意**：現已不支援此版本，並可能導致部署失敗。<br />**增強功能**：讓 CodeDeploy 代理程式與 適用於 Ruby 的 AWS SDK (aws-sdk-core 2.2) 的 2.2 版相容。仍支援 2.1.2 版本。 | 
| 1.0.1.854 | 2015 年 11 月 17 日 | **注意**：現已不支援此版本。如果您使用此版本，您的部署可能會失敗。<br />**功能**：推出 SHA-256 雜湊演算法支援。<br />**功能**：推出 `.version` 檔案中的版本追蹤支援。<br />**功能**：讓部署群組 ID 可透過環境變數使用。<br />**增強功能**：新增支援使用 Amazon CloudWatch Logs 監控 CodeDeploy 代理程式日誌。 [Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) | 

如需相關資訊，請參閱以下內容：
+ [判斷 CodeDeploy 代理程式的版本](codedeploy-agent-operations-version.md)
+ [安裝 CodeDeploy 代理程式](codedeploy-agent-operations-install.md)

如需 CodeDeploy 代理程式版本的歷史記錄，請參閱 [ GitHub 上的發行儲存庫](https://github.com/aws/aws-codedeploy-agent/releases)。

## 管理 CodeDeploy 程序
<a name="codedeploy-agent-processes"></a>

CodeDeploy 代理程式 (rpm 和 deb) 的所有 Linux 發行版本預設使用[系統化](https://systemd.io/)來管理代理程式程序。

不過，rpm 和 deb 分佈都隨附位於 的啟動指令碼`/etc/init.d/codedeploy-agent`。根據您使用的分佈，使用 等命令時`sudo service codedeploy-agent restart`，`/etc/init.d`可能會執行 的指令碼來啟動代理程式程序，而不是允許 `systemd` 管理程序。在 執行指令碼`/etc/init.d`是不理想的。

為了避免此問題，對於支援 的系統`systemd`，我們建議將 `systemctl`公用程式用於任何代理程式操作，而不是使用 `service`命令。

例如，若要重新啟動 CodeDeploy 代理程式，請使用 `sudo systemctl restart codedeploy-agent`而非具有 `service`公用程式的同等命令。

## 應用程式修訂和日誌檔案清除
<a name="codedeploy-agent-revisions-logs-cleanup"></a>

CodeDeploy 代理程式會在執行個體上封存修訂和日誌檔案。CodeDeploy 代理程式會清除這些成品，以節省磁碟空間。

**應用程式修訂部署日誌**：您可以使用代理程式組態檔案中的 **：max\_revisions：** 選項，輸入任何正整數來指定要封存的應用程式修訂數目。CodeDeploy 也會封存這些修訂的日誌檔案。所有其他的項目都會遭到刪除，除了最後一次成功部署的日誌檔案。該日誌檔案一律予以保留，即使失敗的部署數超過保留的修訂數也一樣。如果未指定任何值，除了目前部署的修訂之外，CodeDeploy 還會保留五個最新的修訂。

**CodeDeploy 日誌**：對於 Amazon Linux、Ubuntu Server 和 RHEL 執行個體，CodeDeploy 代理程式會在 `/var/log/aws/codedeploy-agent` 資料夾下輪換日誌檔案。日誌檔案會在每天 00:00:00 (執行個體時間) 進行輪換。日誌檔案會在七天之後刪除。輪換日誌檔案的命名模式為 `codedeploy-agent.{{YYYYMMDD}}.log`。

## CodeDeploy 代理程式安裝的檔案
<a name="codedeploy-agent-install-files"></a>

CodeDeploy 代理程式會將修訂版、部署歷史記錄和部署指令碼存放在執行個體的根目錄中。此目錄的預設名稱和位置為：

`'/opt/codedeploy-agent/deployment-root'` 適用於 Amazon Linux、Ubuntu Server 和 RHEL 執行個體。

`'C:\ProgramData\Amazon\CodeDeploy'` 適用於 Windows Server 執行個體。

您可以使用 CodeDeploy 代理程式組態檔案中的 **root\_dir** 設定來設定目錄的名稱和位置。如需詳細資訊，請參閱[CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。

以下是根目錄下檔案及目錄結構的範例。結構假設有 N 個部署群組，且每個部署群組都包含 N 個部署。

```
|--deployment-root/
|-- deployment group 1 ID 
|    |-- deployment 1 ID 
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment 2 ID
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment N ID
|    |    |-- Contents and logs of the deployment's revision
|-- deployment group 2 ID
|    |-- deployment 1 ID
|    |    |-- bundle.tar
|    |    |-- deployment-archive
|    |    |    | -- contents of the deployment's revision
|    |    |-- logs
|    |    |    | -- scripts.log     
|    |-- deployment 2 ID
|    |    |-- bundle.tar
|    |    |-- deployment-archive
|    |    |    | -- contents of the deployment's revision
|    |    |-- logs
|    |    |    | -- scripts.log     
|    |-- deployment N ID
|    |    |-- bundle.tar
|    |    |-- deployment-archive
|    |    |    | -- contents of the deployment's revision
|    |    |-- logs
|    |    |    | -- scripts.log     
|-- deployment group N ID
|    |-- deployment 1 ID
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment 2 ID
|    |    |-- Contents and logs of the deployment's revision
|    |-- deployment N ID
|    |    |-- Contents and logs of the deployment's revision
|-- deployment-instructions
|    |-- [deployment group 1 ID]_cleanup
|    |-- [deployment group 2 ID]_cleanup
|    |-- [deployment group N ID]_cleanup
|    |-- [deployment group 1 ID]_install.json
|    |-- [deployment group 2 ID]_install.json
|    |-- [deployment group N ID]_install.json
|    |-- [deployment group 1 ID]_last_successful_install
|    |-- [deployment group 2 ID]_last_successful_install
|    |-- [deployment group N ID]_last_successful_install
|    |-- [deployment group 1 ID]_most_recent_install
|    |-- [deployment group 2 ID]_most_recent_install
|    |-- [deployment group N ID]_most_recent_install
|-- deployment-logs
|    |-- codedeploy-agent-deployments.log
```


+  **部署群組 ID** 資料夾表示您的每個部署群組。部署群組目錄的名稱便是其 ID (例如，`acde1916-9099-7caf-fd21-012345abcdef`)。每個部署群組目錄都會為該部署群組中的每一次嘗試部署包含一個子目錄。

   您可以使用 [batch-get-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/batch-get-deployments.html) 命令來尋找部署群組 ID。
+  **部署 ID** 資料夾表示部署群組中的每一個部署。每一個部署目錄的名稱便是其 ID。每個資料夾都包含：
  +  **bundle.tar** – 包含部署修訂內容的壓縮檔案。若要檢視修訂內容，則可使用 zip 格式的解壓縮公用程式。
  +  **deployment-archive** – 包含部署修訂內容的目錄。
  +  **logs**，一個包含 `scripts.log` 檔案的目錄。此檔案會列出部署 AppSpec 檔案中指定之所有指令碼的輸出。

   如果您想要尋找部署的資料夾，但不知道其部署 ID 或部署群組 ID，您可以使用 [AWS CodeDeploy 主控台](https://console.aws.amazon.com/codedeploy)或 AWS CLI 來尋找它們。如需詳細資訊，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

   部署群組中預設可封存的部署數上限為五。當到達這數字後，便會封存未來的部署，並刪除最舊的封存。您可以使用 CodeDeploy 代理程式組態檔案中的 **max\_revisions** 設定來變更預設值。如需詳細資訊，請參閱[CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。
**注意**  
 若您想要還原封存部署所使用的硬碟空間，請更新 **max\_revisions** 設定，將該值減少 1 或 2。下一個部署會刪除封存部署，所以這個數目等於是您指定的。
+  **deployment-instructions** 包含每個部署群組的四個文字檔：
  + **[Deployment Group ID]-cleanup**，一個文字檔，具有在部署期間執行之每個命令的還原版本undo 。範例檔案名稱為`acde1916-9099-7caf-fd21-012345abcdef-cleanup` 
  + **[Deployment Group ID]-install.json**，在最新的部署期間建立的 JSON 檔。它包含在部署中執行的命令。範例檔案名稱為`acde1916-9099-7caf-fd21-012345abcdef-install.json`
  + **[Deployment Group ID]\_last\_successfull\_install**，一個文字檔，其列出上一次成功部署的封存目錄。當 CodeDeploy 代理程式已將部署應用程式中的所有檔案複製到執行個體時，就會建立此檔案。CodeDeploy 代理程式會在下一次部署期間使用它，以判斷要執行哪些 `ApplicationStop`和 `BeforeInstall`指令碼。範例檔案名稱為`acde1916-9099-7caf-fd21-012345abcdef_last_successfull_install`
  + **[Deployment Group ID]\_most\_recent\_install**，一個文字檔，其列出最近部署的封存目錄的名稱。這個檔案是在部署中的檔案成功下載時建立的。[deployment group ID]\_last\_successfull\_install 檔案則在下載的檔案複製到其最終目的地後建立。範例檔案名稱為`acde1916-9099-7caf-fd21-012345abcdef_most_recent_install`
+  **deployment-logs** 包含下列日誌檔：
  +  每天有部署時建立 **codedeploy-agent.yyyymmdd.log** 檔案。每個日誌檔案包含當日的部署資訊。這些日誌檔也許對偵測問題有用處，例如權限問題。這個日誌檔原本命名為 `codedeploy-agent.log`。隔天，其部署的日期會插入檔案名稱。例如，如果今天是 2018 年 1 月 3 日，您可以查看有關所有今日在`codedeploy-agent.log`的部署 。明日 2018，1 月 4 日，日誌檔會重新命名 `codedeploy-agent.20180103.log`。
  +  **codedeploy-agent-deployments.log** 為每個部署編譯 `scripts.log` 檔案的內容。`scripts.log` 檔案位於每個 `Deployment ID` 資料夾下的 `logs` 子資料夾。此檔案中的項目前面是部署 ID。例如，「`[d-ABCDEF123]LifecycleEvent - BeforeInstall`」可能會在 ID 為 `d-ABCDEF123` 的部署期間寫入。當 `codedeploy-agent-deployments.log`達到其大小上限時，CodeDeploy 代理程式會在刪除舊內容時繼續寫入。