跳至內容

如果對在 CloudFormation 中包含 EC2 執行個體中繼資料時發現的問題進行疑難排解?

2 分的閱讀內容
0

在 AWS CloudFormation 中,我使用 AWS:: CloudFormation:: Init 在 Amazon Elastic Cloud Compute (Amazon EC2) 執行個體上包含中繼資料。但是,我在執行個體上沒有看到變更。

解決方法

先決條件:將 CloudFormation 堆疊的失敗時還原選項設定為

如果將失敗時還原設為,但仍無法在 EC2 執行個體中包含中繼資料,請執行下列動作。

**注意:**下列解決方法步驟適用於您使用 Linux 執行個體建立的 CloudFormation 堆疊。

確認已安裝 cfn-init 輔助程式指令碼

若要確認您已在設定為傳送訊號至 CloudFormation 資源的執行個體上安裝 cfn-init,請完成下列步驟:

  1. 使用 SSH 連線到執行個體
  2. 確認 cfn-initaws-cfn-bootstrap 套件已安裝在您的目錄中。
    若要檢查 cfn-init,請執行下列命令:
    sudo find / -name cfn-init/opt/aws/bin/cfn-init
    /opt/aws/apitools/cfn-init
    /opt/aws/apitools/cfn-init-1.4-34.24.amzn1/bin/cfn-init
    /var/lib/cfn-init
    若要檢查 aws-cfn-bootstrap 套件,請執行下列命令:
    sudo rpm -q aws-cfn-bootstrapaws-cfn-bootstrap-1.4-34.24.amzn1.noarch
    **注意:**上述命令僅適用於使用 RPM 套件管理員的發行版。

依預設,Amazon Linux Amazon Machine Image (AMI) 上已安裝 CloudFormation 協助程式指令碼

確認執行個體已連線到網際網路

如果執行個體位於 Amazon Virtual Private Cloud (Amazon VPC) 中,則執行個體可以透過下列方法連線到網際網路:

  • 私人子網路中的 NAT 裝置
  • 公有子網路中的網際網路閘道

若要測試執行個體的網際網路連線,請開啟公有網頁,例如 AWS 首頁。然後,在執行個體上執行 curl 命令。範例:

curl -I https://aws.amazon.com

如果執行個體已連線到網際網路,則命令會傳回 HTTP 200 狀態代碼。

如果您使用介面 VPC 端點,則端點必須與執行個體位於相同的 AWS 區域。此外,連接到介面端點的安全群組必須允許從 Amazon VPC 的私人子網路連接埠 443 傳入連線。

在 cloud-init 或 cfn-init 日誌中搜尋錯誤

若要在 cloud-init 日誌或 cfn-init 日誌中搜尋語法錯誤或不正確的值,請完成下列步驟:

  1. 使用 SSH 連接至執行個體
  2. 若要尋找詳細的錯誤訊息,請在下列日誌中搜尋 errorfailure 關鍵字:
    /var/log/cloud-init-output.log
    /var/log/cloud-init.log
    /var/log/cfn-init.log
    /var/log/cfn-init-cmd.log
    若要尋找 /var/log/cfn/var/log/cloud-init 檔案中字詞 errorfailure 的所有執行個體,請執行下列命令:
    grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)
    **注意:**上述命令會傳回檔名、行號和錯誤訊息。
  3. 使用詳細的錯誤訊息來修正錯誤,然後更新堆疊

如果 cfn-init.log 不存在,則表示 CloudFormation 範本未執運行 cfn-init

若要確認您已將 UserData 屬性設定為執行 cfn-init,請完成下列步驟:

  1. 在程式碼編輯器中,開啟堆疊的 CloudFormation 範本。
  2. UserData 下,檢查是否有錯誤,例如語法錯誤、空格遺失、拼字錯誤和其他錯誤。
  3. 確認堆疊、資源和區域內容的值正確無誤。
  4. 對於 UserData 屬性的 Fn::Join 內建函數,請使用 -v 在詳細模式下執行 cfn-init。如需範例輸出,請參閱範例

相關資訊

CloudFormation VPC 端點的注意事項

AWS::CloudFormation::Init

如何解決 AWS CloudFormation 中的「無法在指定的持續時間內收到 X 個資源訊號」錯誤?

AWS 官方已更新 1 年前