

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

# 對執行個體問題進行故障診斷
<a name="troubleshooting-ec2-instances"></a>

**Topics**
+ [標籤必須正確設定](#troubleshooting-EC2-tags)
+ [AWS CodeDeploy 代理程式必須在執行個體上安裝並執行](#troubleshooting-sds-agent)
+ [如果執行個體在部署期間終止，在最多一小時內部署不會失敗](#troubleshooting-one-hour-timeout)
+ [分析日誌檔案以調查執行個體的部署失敗](#troubleshooting-deploy-failures)
+ [如果不小心刪除新的 CodeDeploy 日誌檔案](#troubleshooting-create-new-log-file)
+ [對 “InvalidSignatureException – Signature expired: [time] is now earlier than [time]” 部署錯誤進行故障診斷](#troubleshooting-instance-time-failures)

## 標籤必須正確設定
<a name="troubleshooting-EC2-tags"></a>

使用 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) 命令，確認用於部署的執行個體已正確標記。如果輸出中缺少 EC2 執行個體，請使用 EC2 主控台確認已在執行個體上設定標籤。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[在主控台中使用標籤](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)。

**注意**  
如果您標記執行個體並立即使用 CodeDeploy 來部署應用程式，則執行個體可能不會包含在部署中。這是因為可能需要幾分鐘的時間CodeDeploy 才能讀取標籤。建議您在為執行個體套用標籤與嘗試對執行個體進行部署之間等待至少五分鐘。

## AWS CodeDeploy 代理程式必須在執行個體上安裝並執行
<a name="troubleshooting-sds-agent"></a>

若要驗證是否已在執行個體上安裝和執行 CodeDeploy 代理程式，請參閱 [驗證 CodeDeploy 代理程式是否正在執行](codedeploy-agent-operations-verify.md)。

若要安裝、解除安裝或重新安裝 CodeDeploy 代理程式，請參閱 [安裝 CodeDeploy 代理程式](codedeploy-agent-operations-install.md)。

## 如果執行個體在部署期間終止，在最多一小時內部署不會失敗
<a name="troubleshooting-one-hour-timeout"></a>

CodeDeploy 為每個要執行到完成的部署生命週期事件提供一小時的時段。這為長時間執行的指令碼提供足夠的時間。

如果指令碼在生命週期事件進行時未執行到完成 （例如，如果執行個體已終止或 CodeDeploy 代理程式已關閉），部署狀態最多可能需要一小時才會顯示為失敗。即使在指令碼中指定的逾時期間短於一小時，也會發生此情況。這是因為當執行個體終止時，CodeDeploy 代理程式會關閉且無法處理更多指令碼。

如果執行個體在生命週期事件之間或在第一個生命週期事件步驟開始之前終止，逾時將在五分鐘後發生。

## 分析日誌檔案以調查執行個體的部署失敗
<a name="troubleshooting-deploy-failures"></a>

如果部署中的執行個體具有 `Succeeded` 以外的任何狀態，您可以檢閱部署日誌檔案資料來協助識別問題。如需存取部署日誌資料的詳細資訊，請參閱[檢視 CodeDeploy EC2/現場部署的日誌資料](deployments-view-logs.md)。

## 如果不小心刪除新的 CodeDeploy 日誌檔案
<a name="troubleshooting-create-new-log-file"></a>

如果您意外刪除執行個體上的部署日誌檔案，CodeDeploy 不會建立替代日誌檔案。若要建立新的日誌檔案，請登入執行個體，然後執行這些命令：

**對於 Amazon Linux、Ubuntu Server 或 RHEL 執行個體**，請依序執行這些命令，一次一個：

```
systemctl stop codedeploy-agent
```

```
systemctl start codedeploy-agent
```

**對於 Windows Server 執行個體**：

```
powershell.exe -Command Restart-Service -Name codedeployagent
```

## 對 “InvalidSignatureException – Signature expired: [time] is now earlier than [time]” 部署錯誤進行故障診斷
<a name="troubleshooting-instance-time-failures"></a>

CodeDeploy 需要準確的時間參考來執行其操作。如果執行個體上的日期和時間未正確設定，則可能不符合 CodeDeploy 拒絕的部署請求的簽章日期。

若要避免與時間設定不正確相關的部署失敗，請參閱下列主題：
+  [設定您 Linux 執行個體的時間](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)
+  [設定 Windows 執行個體的時間](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-set-time.html)