사용자 데이터 간접 호출을 로깅하고 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스의 콘솔 로그로 보내려고 합니다.
간략한 설명
SSH를 통해 인스턴스에 액세스할 필요 없이 EC2 인스턴스 부트스트랩에서 발생하는 문제를 해결하기 위해, 모든 출력을 /var/log/user-data.log 및 /dev/console 모두에 대해 리디렉션하는 코드를 user-data bash 스크립트에 추가할 수 있습니다. 코드가 실행되면 콘솔에서 user-data 간접 호출 로그를 볼 수 있습니다.
참고: 이 해결 방법은 Amazon Linux 1, Amazon Linux 2, Amazon Linux 2023에만 해당됩니다. RHEL 7 또는 RHEL 8을 실행하는 인스턴스에 대한 자세한 내용은 user-data 출력을 RHEL 7 또는 RHEL 8을 실행하는 EC2 인스턴스의 콘솔 로그로 보내려면 어떻게 해야 하나요?를 참조하세요.
해결 방법
다음 명령을 입력하여 user-data 출력 콘솔을 리디렉션합니다.
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
yum -y update
echo "Hello from user-data!"
다음은 user-data 출력을 리디렉션하는 줄입니다.
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
기본적으로 사용자 데이터 스크립트와 cloud-init 명령은 인스턴스가 시작되는 첫 번째 부팅 중에만 실행됩니다. 자세한 내용은 Amazon EC2 Linux 인스턴스를 재시작할 때마다 사용자 데이터를 활용하여 스크립트를 자동으로 실행하려면 어떻게 해야 하나요?를 참조하세요.
다음은 샘플 콘솔 출력입니다.
<13>Nov 13 13:49:59 user-data: amazon-ssm-agent.x86_64 0:2.3.228.0-1.amzn2
<13>Nov 13 13:49:59 user-data: irqbalance.x86_64 2:1.5.0-2.amzn2.0.1
<13>Nov 13 13:49:59 user-data: kernel-tools.x86_64 0:4.14.77-80.57.amzn2
<13>Nov 13 13:49:59 user-data: kmod.x86_64 0:25-3.amzn2.0.2
<13>Nov 13 13:49:59 user-data: kmod-libs.x86_64 0:25-3.amzn2.0.2
<13>Nov 13 13:49:59 user-data: lz4.x86_64 0:1.7.5-2.amzn2.0.1
<13>Nov 13 13:49:59 user-data: nss.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: nss-sysinit.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: nss-tools.x86_64 0:3.36.0-7.amzn2
<13>Nov 13 13:49:59 user-data: openssl.x86_64 1:1.0.2k-16.amzn2.0.1
<13>Nov 13 13:49:59 user-data: openssl-libs.x86_64 1:1.0.2k-16.amzn2.0.1
<13>Nov 13 13:49:59 user-data:
<13>Nov 13 13:49:59 user-data: Complete!
<13>Nov 13 13:49:59 user-data: + echo 'Hello from user-data!
참고: 게시된 시스템(콘솔) 로그 출력은 지속적으로 업데이트되지 않습니다. Nitro System 기반의 인스턴스는 최신 직렬 콘솔 출력 검색을 지원합니다. 자세한 내용은 인스턴스 콘솔 출력을 참조하세요.
관련 정보
시작 시 Linux 인스턴스에서 명령 실행