為什麼我的 AWS OpsWorks Stacks 執行個體未啟動並停留在 "start_failed" 狀態?

上次更新日期:2021-12-29

由 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" 狀態?

解決方案

驗證您的 EC2 執行個體是否可以連接到 OpsWorks Stacks 服務

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

如果您的 EC2 執行個體無法連接到 OpsWorks Stacks 服務

如果 NAT 閘道可讓您的 EC2 執行個體存取網際網路

遵循為什麼我的 EC2 執行個體無法使用 NAT 閘道存取網際網路?中的指示

如果網際網路閘道可讓您的 EC2 執行個體存取網際網路

遵循為什麼 EC2 執行個體無法使用網際網路閘道連接至網際網路?中的指示

如果 NAT 執行個體可讓您的 EC2 執行個體存取網際網路

開啟 EC2 主控台並驗證以下情況:

  • NAT 執行個體處於 running (執行中) 狀態。
    注意:如果 NAT 執行個體未處於 running (執行中) 狀態,請將狀態變更為 running (執行中)。
  • NAT 執行個體通過運作狀態檢查。
    注意:如果 NAT 執行個體未通過運作狀態檢查,請執行以下動作:建立新的 NAT 執行個體。然後,在 NAT 執行個體的路由表中將新的 NAT 執行個體與 EC2 執行個體建立關聯。
  • EC2 執行個體位於 預設 Amazon Virtual Private Cloud (Amazon VPC) 中。
    注意:如果 OpsWorks Stacks 管理的 EC2 執行個體在預設 Amazon VPC 之外啟動,則其一律進入 start_failed 狀態。

如需詳細資訊,請參閱檢視狀態檢查

如果 VPC 端點可讓您的 EC2 執行個體存取網際網路

如果您的 EC2 執行個體可以連接到 OpsWorks Stacks 服務

檢查 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 代理程式是否正在執行

1.    登入您的 Amazon EC2 執行個體

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 執行個體指派給多個層,請確保每個層都具有相同的網路設定

如需詳細資訊,請參閱將執行個體新增至層


此文章是否有幫助?


您是否需要帳單或技術支援?