本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS OpsWorks 堆疊代理程式 CLI
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
注意
代理程式 CLI 只適用於 Linux 執行個體。
在每個線上執行個體上, AWS OpsWorks Stacks 都會安裝代理程式,以便與服務進行通訊。St AWS OpsWorks acks 服務依次傳送命令給代理程式,以便在生命週期事件發生時,執行例如啟動 Chef 在執行個體上執行的工作。在 Linux 執行個體上,代理程式會公開命令列界面 (CLI),這對故障診斷非常有用。若要執行代理程式 CLI 命令,請使用 SSH 連線到執行個體。然後您可以執行代理程式 CLI 命令來執行各種任務,包括下列任務:
-
執行配方。
-
顯示 Chef 日誌。
-
顯示堆疊組態與部署 JSON。
如需如何設定與執行個體間 SSH 連線的詳細資訊,請參閱使用 SSH 登入。您也必須具有堆疊的 SSH 和 sudo 許可。
本節說明如何使用代理程式 CLI 進行故障診斷。如需詳細資訊和完整命令參考,請參閱 AWS OpsWorks 堆疊代理 CLI。
執行配方
代理程式 CLI run_command 命令會指示代理程式重新執行其先前執行過的命令。最實用的故障診斷命令為 setup
、configure
、deploy
和 undeploy
,並各自對應到一個生命週期事件。這些命令會指示代理程式起始 Chef 執行,以執行相關聯的配方。
注意
run_command
命令僅限執行與指定命令相關聯的配方群組,通常是與生命週期事件相關聯的配方。您無法用它執行特定配方。若要執行一或多個指定配方,請使用執行配方堆疊命令或同等的 CLI 或 API 動作 (create-deployment
和 CreateDeployment
)。
run_command
命令在為自訂配方除錯方面相當有用,尤其是指派至安裝和設定生命週期事件的配方,這些事件並無法直接從主控台加以觸發。透過使用 run_command
,您可以隨時視需要執行特定事件的配方,而無須啟動或停止執行個體。
注意
AWS OpsWorks Stack 會從執行個體的食譜快取執行方法,而非食譜儲存庫。 AWS OpsWorks Stacks 會在執行個體啟動時將食譜下載到此快取中,但是如果您之後修改食譜,則不會自動更新線上執行個體的快取。如果您在啟動執行個體後修改了技術指南,請務必執行更新技術指南堆疊命令堆疊命令,以使用儲存庫中的最新版本更新技術指南快取。
代理程式僅快取最新的命令。您可以執行 list_commands 來列出這些命令,這會傳回已快取命令及其執行時間的清單。
sudo opsworks-agent-cli list_commands
2013-02-26T19:08:26 setup
2013-02-26T19:12:01 configure
2013-02-26T19:12:05 configure
2013-02-26T19:22:12 deploy
若要重新執行最新的命令,請執行:
sudo opsworks-agent-cli run_command
若要重新執行最新執行個體的指定命令,請執行:
sudo opsworks-agent-cli run_command
command
例如,若要重新執行安裝配方,您可以執行下列命令:
sudo opsworks-agent-cli run_command setup
每個命令都有一個相關聯的堆疊組態和部署 JSON,代表該命令執行時堆疊和部署的狀態。由於該資料可能隨著命令不同有所差異,因此較舊執行個體的命令可能使用與最新執行個體不同的資料。若要重新執行特定執行個體的命令,請複製 list_commands
輸出中的時間,並執行以下命令:
sudo opsworks-agent-cli run_command
time
上述範例均使用預設 JSON 重新執行命令,也就是為該命令安裝的 JSON。您可以對任意 JSON 檔案重新執行命令,如下所示:
sudo opsworks-agent-cli run_command -f
/path/to/valid/json.file
顯示 Chef 日誌
代理程式 CLI show_log 命令會顯示指定的日誌。在命令完成後,您將會看到檔案結尾。因此,show_log
命令提供方便查看日誌結尾的方法,您通常會在這裡找到錯誤資訊。您可以向上捲動以查看日誌的先前部分。
若要顯示目前命令的日誌,請執行:
sudo opsworks-agent-cli show_log
您也可以顯示特定命令的日誌,但請注意,代理程式僅快取最後三十個命令的日誌。您可以執行 list_commands 列出執行個體的命令,這會傳回已快取命令及其執行時間的清單。如需範例,請參閱執行配方。
若要顯示特定命令最新執行狀況的日誌,請執行下列命令:
sudo opsworks-agent-cli show_log
command
命令參數可以設為 setup
、configure
、deploy
、undeploy
、start
、stop
或 restart
。這些命令大部分都對應到生命週期事件,並指示代理程式執行相關聯配方。
若要顯示特定命令執行狀況的日誌,請複製 list_commands
輸出中的日期並執行:
sudo opsworks-agent-cli show_log
date
如果命令仍在執行,show_log
會顯示日誌的目前狀態。
注意
疑難排解錯誤和 out-of-memory問題的其中一種方法是在執行期間追蹤記錄檔,如下所示:show_log
-
使用
run_command
來觸發適當的生命週期事件。如需詳細資訊,請參閱 執行配方。 -
重複執行
show_log
以在寫入日誌時查看日誌的結尾。
如果 Chef 記憶體不足或意外結束,日誌會突然結束。如果配方失敗,日誌的結尾為例外狀況和堆疊追蹤。
顯示堆疊組態與部署 JSON
配方使用的許多資料來自堆疊組態和部署 JSON,這定義了一組 Chef 屬性,以提供堆疊組態、任何部署和使用者可新增之選用自訂屬性的詳細說明。 AWS OpsWorks Stacks 會針對每個命令安裝 JSON,代表命令執行時的堆疊和部署狀態。如需詳細資訊,請參閱 堆疊組態及部署屬性。
如果自訂配方從堆疊組態和部署 JSON 取得資料,您可以檢查該 JSON 來驗證資料。顯示堆疊組態和部署 JSON 最簡單的方式,是執行代理程式 CLI get_json 命令,這會顯示 JSON 物件的格式化版本。以下提供某些一般輸出的前幾行:
{
"opsworks": {
"layers": {
"php-app": {
"id": "4a2a56c8-f909-4b39-81f8-556536d20648",
"instances": {
"php-app2": {
"elastic_ip": null,
"region": "us-west-2",
"booted_at": "2013-02-26T20:41:10+00:00",
"ip": "10.112.235.192",
"aws_instance_id": "i-34037f06",
"availability_zone": "us-west-2a",
"instance_type": "c1.medium",
"private_dns_name": "ip-10-252-0-203.us-west-2.compute.internal",
"private_ip": "10.252.0.203",
"created_at": "2013-02-26T20:39:39+00:00",
"status": "online",
"backends": 8,
"public_dns_name": "ec2-10-112-235-192.us-west-2.compute.amazonaws.com"
...
您可以顯示最新的堆疊組態和部署 JSON,如下所示:
sudo opsworks-agent-cli get_json
您可以執行下列命令來顯示指定命令的最新堆疊組態和部署 JSON:
sudo opsworks-agent-cli get_json
command
命令參數可以設為 setup
、configure
、deploy
、undeploy
、start
、stop
或 restart
。這些命令大部分都對應到生命週期事件,並指示代理程式執行相關聯配方。
您可以指定命令的日期,來顯示特定命令執行的堆疊組態和部署 JSON,如下所示:
sudo opsworks-agent-cli get_json
date
使用此命令的最簡單方式如下:
-
執行
list_commands
會傳回清單,內含已在執行個體上執行的命令,以及每個命令的執行日期。 -
複製適當命令的日期,並將其做為
get_json
date
引數使用。