사용자 데이터 간접 호출을 로깅하고 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스의 콘솔 로그로 보내려고 합니다.
간략한 설명
EC2 인스턴스의 문제를 해결하려면 모든 출력을 콘솔로 리디렉션하도록 사용자 데이터 Bash 스크립트를 수정하십시오. 출력을 /var/log/user-data.log 및 /dev/console로 모두 리디렉션합니다. 스크립트가 실행되면 콘솔에서 직접 사용자 데이터 호출 로그를 볼 수 있습니다.
참고: 이 해결 방법은 Amazon Linux 1, Amazon Linux 2, Amazon Linux 2023에만 해당됩니다. RHEL 7 또는 RHEL 8을 실행하는 인스턴스에 대한 자세한 내용은 사용자 데이터 출력을 RHEL 7 또는 RHEL 8을 실행하는 EC2 인스턴스의 콘솔 로그로 보내려면 어떻게 해야 합니까?를 참조하십시오.
해결 방법
다음 단계를 완료하십시오.
-
인스턴스를 중지합니다.
-
작업을 선택하고 인스턴스 설정을 선택한 다음, 사용자 데이터 편집을 선택합니다.
-
다음 스크립트를 추가한 후 저장을 선택합니다.
Content-Type: multipart/mixed; boundary="//
"MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
cat /etc/os-release | grep PRETTY_NAME
echo "Hello from user-data!"
--//--
참고: 사용자 데이터 출력을 리디렉션하는 스크립트는 #!/bin/bash -xe 줄로 시작합니다. 이전 스크립트는 인스턴스가 시작될 때마다 쉘 스크립트를 실행하는 cloud-init 구성 데이터입니다. 자세한 내용은 다음 문서를 참조하십시오. Amazon EC2 Linux 인스턴스를 재시작할 때마다 사용자 데이터를 활용하여 스크립트를 자동으로 실행하려면 어떻게 해야 합니까? 이전 명령에서 다음 줄은 사용자 데이터 출력을 리디렉션합니다.
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
다음은 Amazon Linux 2023 인스턴스의 콘솔 출력 예시입니다.
<13>Aug 13 18:43:39 user-data: + cat /etc/os-release
<13>Aug 13 18:43:39 user-data: + grep PRETTY_NAME
<13>Aug 13 18:43:39 user-data: PRETTY_NAME="Amazon Linux 2023.5.20240805"
<13>Aug 13 18:43:39 user-data: + echo 'Hello from user-data!'
<13>Aug 13 18:43:39 user-data: Hello from user-data!
참고: 게시된 시스템(콘솔) 로그 출력은 지속적으로 업데이트되지 않습니다. Nitro System 기반의 인스턴스는 최신 직렬 콘솔 출력 검색을 지원합니다. 자세한 내용은 인스턴스 콘솔 출력을 참조하세요.
관련 정보
사용자 데이터 입력으로 EC2 인스턴스를 시작할 때 명령 실행