Skip to content

Systems Manager에서 Amazon EC2 인스턴스를 관리형 인스턴스로 표시하지 않는 이유는 무엇입니까?

7분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있는데 AWS Systems Manager에서 관리형 인스턴스로 표시되지 않습니다.

간략한 설명

AWS Systems Manager에서 인스턴스를 관리형 인스턴스로 표시하지 않는 이유를 확인하려면 AWSSupport-TroubleshootManagedInstance 런북을 사용할 수 있습니다. 자세한 내용은 Systems Manager Automation으로 구동되는 자동화 작업 실행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은 문서를 실행하는 사용자의 권한을 사용합니다.
  7. Execute(실행)를 선택합니다.

자동화가 완료되면 Outputs(출력) 섹션에서 다음 세부 결과를 검토합니다.

  • InstanceisOnline.output 섹션은 Systems Manager가 인스턴스를 관리하는지 여부를 보여줍니다.
  • FinalOutput.output 섹션은 검사의 성공 또는 실패 여부를 보여주고 실패 문제 해결 방법에 대한 정보가 포함되어 있습니다.

Amazon EC2 인스턴스 문제를 수동으로 해결

중요: 문제 해결 단계에서 인스턴스가 위치한 AWS 리전을 선택합니다.

인스턴스에 SSM 에이전트가 설치되어 실행 중인지 확인

OS(운영 체제)가 Systems Manager를 지원하는지 확인한 후, 인스턴스에 SSM Agent가 설치 및 실행 중인지 확인합니다.

SSM Agent는 일부 Linux, macOS 및 Windows Amazon Machine Image(AMI)에 사전 설치되어 있습니다.

에이전트가 사전 설치되어 있지 않은 경우 SSM Agent를 수동으로 설치하려면 다음 AWS 설명서를 참조하십시오.

SSM Agent가 실행 중인지 확인하려면 OS별 명령을 실행하여 에이전트 상태를 확인합니다.

SSM Agent가 실행 중인지 확인한 후 ssm-cli 명령을 실행하여 관리형 인스턴스 가용성 문제를 해결합니다.

포트 443에서 시스템 관리자 엔드포인트에 대한 연결 확인

포트 443의 Systems Manager 엔드포인트에 대한 연결 검증은 OS 및 서브넷 설정에 따라 다릅니다. 리전별 Systems Manager 엔드포인트 목록은 서비스 엔드포인트를 참조하십시오.

참고: 다음 예시에서 ssmmessages 엔드포인트는 AWS Systems Manager의 기능인 Session Manager에 필요합니다.

EC2 Linux 인스턴스

Telnet 또는 Netcat 명령을 사용하여 EC2 Linux 인스턴스의 포트 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 및 시스템 관리자 API에 비공개로 액세스합니다. 프라이빗 서브넷에 있는 인스턴스의 연결 문제를 해결하려면 인스턴스의 라우팅 테이블이 인터넷 트래픽을 NAT 게이트웨이로 라우팅해야 합니다. 또는 Systems Manager 엔드포인트에 도달하도록 VPC 엔드포인트를 구성해야 합니다.

자세한 내용을 보려면 인터넷에 액세스하지 않고도 Systems Manager를 사용하여 프라이빗 EC2 인스턴스를 관리할 수 있도록 VPC 엔드포인트를 만들려면 어떻게 합니까?를 참조하십시오.

참고: 각 인터페이스 엔드포인트는 제공된 서브넷에 탄력적 네트워크 인터페이스를 만듭니다.

프라이빗 서브넷에 대한 보안 모범 사례로 다음 설정을 확인하세요.

  • VPC 엔드포인트의 네트워크 인터페이스에 연결된 보안 그룹은 인스턴스에 연결된 보안 그룹으로부터의 TCP 포트 443 인바운드 트래픽을 허용합니다.
  • 인스턴스에 연결된 보안 그룹이 VPC 엔드포인트의 네트워크 인터페이스에 대한 프라이빗 IP 주소로 TCP 포트 443 아웃바운드 트래픽을 허용합니다.

기본 호스트 관리 구성 설정 확인

참고: 기본 호스트 관리 구성을 활성화하지 않는 경우 올바른 IAM 역할이 인스턴스에 연결되어 있는지 확인 섹션으로 건너뛰십시오.

사용 사례에 충분한 권한이 기본 호스트 관리 구성에서 생성한 IAM 역할에 없는 경우 정책을 추가할 수 있습니다.

연결된 모든 인스턴스는 IMDSv2(인스턴스 메타데이터 서비스 버전 2)를 사용해야 합니다. IMDSv2 구성을 확인하려면 MetadataNoToken Amazon CloudWatch 지표를 사용하여 IMDSv1 사용이 전혀 없는 시기를 확인하십시오. 이후 인스턴스가 IMDSv2로 전환되었는지 확인합니다.

기본 호스트 관리 구성은 SSM Agent 버전 3.2.582.0 이상에서 사용할 수 있습니다. SSM Agent 버전을 확인하려면 SSM Agent 버전 번호 확인을 참조하십시오.

기본 호스트 관리 구성 설정을 확인하려면 Systems Manager 콘솔 또는 AWS CLI를 사용하십시오.

시스템 관리자 콘솔

다음 단계를 완료하십시오.

  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 호출을 하려면 인스턴스에 연결된 IAM 역할에 AmazonSSMManagedInstanceCore 정책을 첨부해야 합니다. 사용자 지정 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 콘솔을 엽니다.
  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 에이전트를 구성하고 메타데이터 URL에 no_proxy를 설정합니다.

프록시를 사용하도록 SSM Agent를 구성하려면 다음 AWS 설명서를 참조하십시오.

추가 문제 해결

인스턴스가 여전히 관리되는 노드로 표시되지 않거나 Systems Manager에서 연결이 끊어진 것으로 표시되면 SSM Agent 로그를 검토하고 문제를 해결하십시오. Linux와 macOS의 경우 로그는 /var/log/amazon/ssm에 있습니다. Windows의 경우 로그는 %PROGRAMDATA%\Amazon\SSM\Logs에 있습니다.

인스턴스가 SSM Agent에 보고하지 않는 경우 Windows용 Remote Desktop Protocol(RDP) 또는 Linux용 SSH를 사용하여 로그를 수집하십시오. 로그를 수집할 수 없는 경우 인스턴스를 중지하고 루트 볼륨을 분리하십시오. 그런 다음 루트 볼륨을 보조 볼륨과 같은 가용성 영역에 있는 다른 인스턴스에 연결하여 로그를 가져옵니다.

관련 정보

Systems Manager Automation 런북 참조

Amazon EC2 인스턴스에 Amazon Elastic Block Store(Amazon EBS) 볼륨 연결

인스턴스에서 볼륨 분리

Amazon EBS 볼륨을 사용하도록 설정