為什麼 Systems Manager 不會將我的 Amazon EC2 執行個體顯示為受管執行個體?

4 分的閱讀內容
0

我有一個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,但它在 AWS Systems Manager 中並未顯示為受管執行個體。

簡短說明

若要確定 AWS Systems Manager 為何未將您的執行個體顯示為受管執行個體,您可以使用 AWSSupport-TroubleshootManagedInstance 執行手冊。如需詳細資訊,請參閱執行 Systems Manager Automation 支援的自動化作業設定自動化

您也可以手動對 Amazon EC2 執行個體進行疑難排解。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

執行 Systems Manager自動化執行手冊

先決條件:在執行個體上安裝並執行 AWS Systems Manager Agent (SSM Agent)。在執行自動化作業之前,請確定您的 AWS Identity and Access Management (IAM) 使用者或角色具有必要的許可。請參閱 AWSSupport-TroubleshootManagedInstance 中的必要 IAM 許可一節。

若要執行手冊,請完成下列步驟:

  1. 開啟 Systems Manager 主控台
  2. 在導覽窗格中,選擇 Documents (文件)。
  3. 在搜尋列中,輸入 AWSSupport-TroubleshootManagedInstance (擁有者: Amazon)。
  4. 選擇 AWSSupport-TroubleshootManagedInstance 文件。
  5. 選擇 Execute automation (執行自動化)。
  6. 對於輸入參數,輸入下列資訊:
    對於 InstanceId,輸入受影響執行個體的 ID。您可以手動輸入執行個體 ID,也可以使用互動式執行個體選擇器。如果您使用執行個體選擇器,則將篩選器從 Show managed instance only (僅顯示受管執行個體) 變更為 Show all instances (顯所有執行個體)。
    (選擇性) 對於 AutomationAssumeRole 輸入 IAM 角色的 ARN,該角色可讓 Systems Manager Automation 代表您執行動作。如果您未指定角色,則 Systems Manager Automation 會使用可執行文件之使用者的許可。
  7. 選擇 Execute (執行)。

自動化完成後,請檢閱 Outputs (輸出) 區段以取得下列詳細結果:

  • InstanceIsOnline.Output 區段顯示Systems Manager 是否正在管理執行個體。
  • FinalOutput.Output 區段顯示檢查是否通過還是失敗,並包含有關如何疑難排解的相關資訊。

手動對 Amazon EC2 執行個體進行疑難排解

重要: 在整個疑難排解步驟中,請選取執行個體所在的 AWS 區域。

確認 SSM Agent 已安裝並在執行個體上執行

確認您的作業系統 (OS) 支援 Systems Manager 後,請確認 SSM Agent 已安裝並在您的執行個體上執行。

SSM Agent 已預先安裝在某些 Linux、macOS 和 Windows Amazon Machine Image (AMI) 上。

若要在未預先安裝代理程式時手動安裝 SSM Agent,請參閱下列 AWS 文件:

若要驗證 SSM Agent 是否正在執行,請執行適用於您作業系統的命令來檢查代理程式狀態

確認 SSM Agent 正在執行之後,請執行 ssm-cli 命令來疑難排解受管執行個體可用性。

驗證連接埠 443 上 Systems Manager 端點的連接性

連接埠 443 上 Systems Manager 端點的連線驗證,適用於您的作業系統和子網路設定。如需依區域劃分的 Systems Manager 端點清單,請參閱服務端點

注意: 在下列範例中,Session Manager (AWS Systems Manager 的一項功能) 需要 ssmmessages 端點。

EC2 Linux 執行個體

對 EC2 Linux 執行個體使用 Telnet 或 Netcat 命令驗證連接埠 443 上端點的連接性。Netcat 未預先安裝在 EC2 執行個體上。若要手動安裝 Netcat,請參閱 Nmap 網站上的 Ncat

注意: 在下列命令中,將 RegionID 取代為執行個體的區域 ID。

Telnet 命令:

telnet ssm.RegionID.amazonaws.com 443
telnet ec2messages.RegionID.amazonaws.com 443
telnet ssmmessages.RegionID.amazonaws.com 443

Telnet 連線範例:

root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443
Trying 52.46.141.158...
Connected to ssm.us-east-1.amazonaws.com.
Escape character is '^]'.

若要離開 telnet,請按 Ctrl 和**]** 鍵。輸入 quit,然後按 Enter

Netcat 命令:

nc -vz ssm.RegionID.amazonaws.com 443
nc -vz ec2messages.RegionID.amazonaws.com 443
nc -vz ssmmessages.RegionID.amazonaws.com 443

EC2 Windows 執行個體

若要對 EC2 Windows 執行個體驗證連接埠 443 上端點的連接性,請執行下列 Windows PowerShell 命令:

`Test-NetConnection ssm.RegionID.amazonaws.com -port 443 Test-N`etConnection ec2messages.RegionID.amazonaws.com -port 443
Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443

公有子網路

Systems Manager 端點為公有。若要解決公有子網路中執行個體的連線問題,執行個體的路由表必須將網際網路流量路由至網際網路閘道。此外,Amazon Virtual Private Cloud (Amazon VPC) 安全群組網路存取控制清單 (網路 ACL) 必須允許連接埠 443 上的傳出連線。

私有子網路

使用私有 IP 位址私密存取 Amazon EC2 和 Systems Manager API。若要解決私有子網路中執行個體的連線問題,執行個體的路由表必須將網際網路流量路由至 NAT 閘道。或者,您必須將 VPC 端點設定為連線 Systems Manager 端點。

如需詳細資訊,請參閱如何建立 VPC 端點以便我可以使用 Systems Manager 在沒有網際網路存取時管理私有 EC2 執行個體?

**注意:**每個介面端點會在提供的子網路中建立彈性網路介面。

作為私有子網路的安全性最佳實踐,請確認下列設定:

  • 附加到 VPC 端點的網路介面的安全群組,允許來自附加到執行個體的安全群組的 TCP 連接埠 443 傳入流量。
  • 附加到執行個體的安全群組,允許 TCP 連接埠 443 傳出流量到 VPC 端點網路介面的私有 IP 位址。

驗證預設主機管理組態的設定

注意: 如果您未啟用預設主機管理組態,請繼續確認正確的 IAM 角色是否已附加至執行個體區段。

如果預設主機管理組態建立的 IAM 角色沒有足夠的使用案例的許可,則您可以新增政策。

所有關聯的執行個體都必須使用 Instance Metadata Service 版本 2 (IMDSv2)。若要檢查您的 IMDSv2 組態,請使用 MetadataNoToken Amazon CloudWatch 指標來判斷何時 IMDSv1 使用率為零。然後,檢查您的執行個體是否已轉換為 IMDSv2

預設主機管理組態在 SSM Agent 版本 3.2.582.0 或更新版本中可以使用。若要驗證您的 SSM Agent 版本,請參閱檢查 SSM Agent 版本號

若要驗證預設主機管理組態的設定,請使用 Systems Manager 主控台或 AWS CLI。

Systems Manager 主控台

完成下列步驟:

  1. 開啟 Systems Manager 主控台
  2. 在導覽窗格中,選擇 Fleet Manager
  3. Account management (帳戶管理) 下拉功能表中,選擇 Default Host Management Configuration (預設主機管理組態)。
  4. 確認 Enable Default Host Management Configuration (啟用預設主機管理組態) 設定已開啟。

AWS CLI

執行 get-service-setting AWS CLI 命令,以驗證預設主機管理組態的設定:

aws ssm get-service-setting \
--setting-id arn:aws:ssm:RegionID:AccountID:servicesetting/ssm/managed-instance/default-ec2-instance-management-role

注意:AccountID 取代為您的 AWS 帳戶 ID。

啟用預設主機管理組態後,您會收到類似於下列的輸出:

{
  "ServiceSetting": {
    "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role",
    "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole",
     "LastModifiedDate": 1679492424.738,
    "LastModifiedUser": "arn:aws:sts::012345678910:assumed-role/role/role-name",
    "ARN": "arn:aws:ssm:ap-southeast-1:012345678910:servicesetting/ssm/managed-instance/default-ec2-instance-management-role",
    "Status": "Customized"
  }
}

**注意:**如果 SettingValue 的值為 $None,則表示預設主機管理組態未設定。

驗證預設主機管理組態是否使用適當的 IAM 角色

當您設定預設主機管理組態時,最佳實踐是使用 AWSSystemsManagerDefaultEC2InstanceManagementRole IAM。若要使用其他角色,請確保該角色已附加 AmazonSSMManagedEC2InstanceDefaultPolicy IAM 政策。

如果您的執行個體附加執行個體設定檔,則移除允許 ssm:UpdateInstanceInformation 作業的所有許可。SSM Agent 會嘗試使用執行個體設定檔許可,然後再使用預設主機管理組態許可。當您允許執行個體設定檔中執行 ssm:UpdateInstanceInformation 作業時,執行個體不會使用預設主機管理組態許可。

確認正確的 IAM 角色已附加至執行個體

注意: 如果您已啟用預設主機管理組態,請繼續驗證與 IMDS 的連線區段。

若要對 Systems Manager 端點進行 API 呼叫,您必須將 AmazonSSMManagedInstanceCore 政策附加到已附加至執行個體的 IAM 角色。如果您使用的是自訂 IAM 政策,請確認您的自訂策略是否使用 AmazonSSMManagedInstanceCore 中的權限。此外,請確保您的 IAM 角色的信任政策允許 ec2.amazonaws.com 擔任此角色。如需詳細資訊,請參閱 EC2 執行個體許可的替代組態

驗證與 IMDS 的連線

SSM Agent 必須與 IMDS 通訊,才能取得有關執行個體的資訊。為測試連線,請執行下列 Netcat 命令:

nc -vz 169.254.169.254 80

若要驗證是否為現有執行個體設定 IMDS,請使用 Amazon EC2 主控台或 AWS CLI。

Amazon EC2 主控台

完成下列步驟:

  1. 開啟 Amazon EC2 console (Amazon EC2 主控台)。
  2. 在導覽窗格中,選擇 Instances (執行個體),然後選取您的執行個體。
  3. 選擇 Actions (動作),然後選擇 Instance settings (執行個體設定)。
  4. 選擇 Modify instance metadata options (修改執行個體中繼資料選項)。
  5. 在對話方塊中,確定 Instance metadata service (執行個體中繼資料服務) 已 Enabled (啟用)。

AWS CLI

執行 describe-instances AWS CLI 命令,以確認已為您現有執行個體設定 IMDS:

aws ec2 describe-instances --query "Reservations[*].Instances[*].MetadataOptions" --instance-ids i-012345678910

範例輸出結果:

[
  [
    {
      "State": "applied",
      "HttpTokens": "optional",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    }
  ]
]

注意: 如果輸出顯示 "HttpTokens": "optional",則同時支援 IMDSv1 和 IMDSv2。如果輸出顯示 HttpTokens": "required",則只支援 IMDSv2。如果輸出顯示 "HttpEndpoint": "enabled",則會開啟 IMDS。

如果您在執行個體上使用代理伺服器,則代理伺服器可能會封鎖連線到中繼資料 URL。若要防止封鎖,請將您的 SSM Agent 設定為支援代理伺服器,並為中繼資料 URL 設定 no_proxy

若要設定 SSM Agent 使用代理伺服器,請參閱下列 AWS 文件:

其他疑難排解

如果您的執行個體仍未顯示為受管節點或在 Systems Manager 中顯示連線中斷,請檢閱 SSM Agent 日誌繼續疑難排解。對於 Linux 和 macOS,日誌位於 /var/log/amazon/ssm 中。對於 Windows,日誌位於 %PROGRAMDATA%\Amazon\SSM\Logs 中。

如果您的執行個體未向 SSM Agent 報告,請使用 Windows 的遠端桌面通訊協定 (RDP) 或 Linux 的 SSH 來收集日誌。如果無法收集日誌,則停止執行個體並分離根磁碟區。然後,將根磁碟區附加到與次要磁碟區相同可用區域中的另一個執行個體,以取得日誌。

相關資訊

Systems Manager Automation 執行手冊參考

將 Amazon Elastic Block Store (Amazon EBS) 磁碟區附加到 Amazon EC2 執行個體

從執行個體中分離磁碟區

讓 Amazon EBS 磁碟區可上使用

AWS 官方
AWS 官方已更新 5 個月前