由 AWS OpsWorks Stacks 管理的其中一個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體停留在 "start_failed" 狀態。為什麼我的 OpsWorks Stacks 執行個體未進入 "online" 狀態,以及如何解決此問題?
由於各種原因,OpsWorks Stacks 執行個體可能進入 start_failed 狀態,而且未在設定生命週期事件期間啟動。不過,問題通常是聯網問題的結果。
若要解決此問題,請首先驗證 EC2 執行個體是否可以連接到 OpsWorks Stacks 服務。如果沒有連線,請參閲本文的如果您的 EC2 執行個體無法連接到 OpsWorks Stacks 服務一節。若有連線,請參閲本文的如果您的 EC2 執行個體可以連接到 OpsWorks Stacks 服務一節。
**注意:**對於停留在 setup_failed 狀態的執行個體,請參閲為什麼我的 AWS OpsWorks Stacks 執行個體未啟動並停留在 "setup_failed" 狀態?
1. 登入您的 Amazon EC2 執行個體。
2. 使用 Linux 命令列界面 (CLI) 執行以下 netcat (nc) 命令,將測試請求傳送至執行個體的相關聯 OpsWorks 端點:
**重要:**將 opsworks.us-east-1.amazonaws.com 取代為您正在使用的 OpsWorks Stacks 端點。
nc -vz opsworks.us-east-1.amazonaws.com 443
如果您的 EC2 執行個體可以連接到 OpsWorks Stacks 服務,則命令輸出看起來如下所示:
Ncat: Connected to <ipaddress>
**注意:**如果您的 EC2 執行個體上未安裝 netcat,則執行以下命令,在執行個體上手動安裝 netcat 套件:
sudo yum install -y nc
如果 NAT 閘道可讓您的 EC2 執行個體存取網際網路
遵循為什麼我的 EC2 執行個體無法使用 NAT 閘道存取網際網路?中的指示
如果網際網路閘道可讓您的 EC2 執行個體存取網際網路
遵循為什麼 EC2 執行個體無法使用網際網路閘道連接至網際網路?中的指示
如果 NAT 執行個體可讓您的 EC2 執行個體存取網際網路
開啟 EC2 主控台並驗證以下情況:
如需詳細資訊,請參閱檢視狀態檢查。
如果 VPC 端點可讓您的 EC2 執行個體存取網際網路
檢查 EC2 執行個體的 IAM 許可
驗證執行個體設定檔的 AWS Identity and Access Management (IAM) 角色是否存在,並包括所有的必要許可。
如果執行個體設定檔沒有 IAM 角色,請執行下列動作:
1. 停止執行個體。
2. 執行下列動作將執行個體設定檔角色與 EC2 執行個體分開: 在 EC2 主控台 中,選擇 Instances (執行個體)。然後,選取您的 EC2 執行個體。 選擇 Actions (動作) 標籤,選擇 Security (安全),然後選擇 Modify IAM role (修改 IAM 角色)。 選擇 No IAM Role (無 IAM 角色)。然後,選擇 Save (儲存)。
3. 使用現有的 EC2 執行個體取代執行個體設定檔。 -或- 取代 OpsWorks Stacks 中的 EC2 執行個體。
**注意:**如需如何取代 OpsWorks Stacks 中 EC2 執行個體的詳細資訊,請參閲將執行個體新增至層。
對於 Amazon Elastic Block Store (Amazon EBS) 支援的 EC2 執行個體,請驗證執行個體的根設備磁碟區是否已滿
如需指示,請參閲檢視 Linux 的可用磁碟空間或檢視 Windows 的可用磁碟空間 。
驗證 EC2 執行個體是否使用 IMDSv1
若要檢查執行個體使用的中繼資料並視需要重新設定執行個體,請參閲設定執行個體中繼資料選項。
**注意:**OpsWorks Stacks 僅支援 Instance Metadata Service 第 1 版 (IMDSv1),而不支援 IMDSv2。
對於自訂 AMI 支援的 EC2 執行個體,驗證 AMI 是否設定正確
如需詳細資訊,請參閲從 AWS OpsWorks Stacks 執行個體建立自訂 Linux Amazon Machine Image (AMI)。
驗證 EC2 執行個體上安裝的 OpsWorks Stacks 代理程式是否正在執行
2. 在 Linux CLI 上執行以下命令,驗證 EC2 執行個體上安裝的 OpsWorks Stacks 代理程式是否正在執行:
sudo service opsworks-agent status
如果 OpsWorks Stacks 代理程式正在執行,則命令輸出看起來如下所示:
Active: active (running)
如果 OpsWorks Stacks 代理程式未執行,則命令輸出看起來如下所示:
Active: inactive (dead)
如果 OpsWorks Stacks 代理程式未執行,則執行以下命令來啟動代理程式:
sudo service opsworks-agent start
檢查 EC2 執行個體的 CloudTrail 日誌是否有 "Client.UnauthorizedOperation" 錯誤
檢閱 OpsWorks Stacks 執行個體在 AWS CloudTrail 中記錄的 API 呼叫。尋找傳回下列錯誤訊息的 EC2 RunInstances 事件:Client.UnauthorizedOperation。
如果執行個體的 CloudTrail 中出現錯誤訊息,請參閲下列文章:當我嘗試使用 AWS Backup 還原 Amazon EC2 執行個體時,如何對編碼的授權失敗訊息進行疑難排解?
如果將 EC2 執行個體指派給多個層,請確保每個層都具有相同的網路設定
如需詳細資訊,請參閱將執行個體新增至層。