사용자 데이터를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 다시 시작될 때마다 스크립트를 실행하게 하고 싶습니다.
간략한 설명
기본적으로 사용자 데이터 명령 및 cloud-init 지시문은 EC2 인스턴스를 실행할 때 첫 부팅 주기 동안만 실행됩니다. 이 구성을 덮어쓰려면 Multipurpose Internet Mail Extensions(MIME) 멀티파트 파일을 사용하여 사용자 데이터 명령 및 cloud-init 지시문을 구성하십시오. 자세한 내용은 cloud-init 웹 사이트의 MIME 멀티파트 아카이브를 참조하십시오. 그런 다음 파일을 인스턴스에 추가합니다.
참고: 모든 인스턴스의 인스턴스 사용자 데이터를 볼 수 있습니다. 단, 인스턴스 사용자 데이터를 업데이트하려면 인스턴스를 중지해야 합니다.
해결 방법
인스턴스 중지 및 시작 구성
참고: 인스턴스를 중지할 때 및 시작할 때 해당 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 인스턴스로 외부 트래픽을 라우팅하려면 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하는 것이 좋습니다. Amazon Route 53을 사용하는 경우, 퍼블릭 IP 주소가 변경될 때 Route 53 DNS 레코드를 업데이트해야 할 수 있습니다. 중지 및 시작은 인스턴스 재부팅과는 다릅니다. 자세한 내용은 EC2 인스턴스 중지 및 시작 작동 방식을 참조하십시오.
인스턴스를 중지하고 시작하기 전에 다음 작업을 수행하십시오.
다시 시작할 때마다 인스턴스가 스크립트를 실행하도록 구성
다음 단계를 완료하십시오.
- 인스턴스에 cloud-init의 최신 버전을 설치했는지 확인합니다. 최신 cloud-init 버전을 확인하려면 GitHub 웹 사이트의 릴리스 정규/cloud-init을 참조하십시오.
- 사용자 또는 역할의 AWS Identity and Access Management(IAM) 정책에 ec2:ModifyInstanceAttribute 권한이 있어야 합니다. IAM 정책을 수정하는 단계는 IAM 정책 편집(콘솔)을 참조하십시오.
- 인스턴스를 중지합니다.
- Amazon EC2 콘솔을 엽니다.
- 인스턴스를 선택하고, 해당 인스턴스를 선택합니다.
- 작업을 선택하고 인스턴스 설정을 선택합니다.
- 사용자 데이터 편집을 선택하고 사용자 명령을 MIME 멀티파트 파일로 입력합니다.
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="cloud-config.txt"
#!/bin/bash
/bin/echo "Hello World" >> /tmp/testfile.txt
--//--
참고: /bin/echo "Hello World" >> /tmp/testfile.txt 섹션을 인스턴스가 시작될 때 실행하려는 쉘 명령으로 바꾸십시오. 앞선 예시 명령은 Hello World를 /tmp 디렉터리의 testfile.txt 파일에 작성합니다. MIME 멀티파트 파일을 사용하면 사용자 데이터에 콘텐츠 유형 여러 개를 동시에 추가할 수 있습니다. 앞선 예시 명령은 text/cloud-config 및 text/x-shellscript 콘텐츠 유형을 둘 다 사용합니다. scripts-user 파라미터를 always로 설정하여 text/cloud-config 콘텐츠 유형이 사용자 데이터가 cloud-init 패키지에서 실행되는 빈도를 재정의하게 합니다. text/x-shellscript 콘텐츠 유형이 cloud-init cloud_final_modules 모듈을 실행하는 사용자 명령을 제공합니다.
- 저장을 선택합니다.
- 인스턴스를 시작하고 스크립트가 실행되는지 확인합니다.
참고: 스크립트가 예상한 대로 실행되지 않으면 /var/log/cloud-init-output.log 파일에서 스크립트를 디버그하는 데 사용할 수 있는 정보를 확인하십시오. 자세한 내용은 cloud-init 웹 사이트에서 cloud-init 디버그 방법을 참조하십시오.
관련 정보
사용자 데이터 입력으로 EC2 인스턴스를 시작할 때 명령 실행
새 EC2 Windows 인스턴스를 시작할 때 명령을 실행하려면 어떻게 해야 합니까?
인스턴스를 재부팅하거나 시작할 때 기존 EC2 Windows 인스턴스에서 명령을 실행하려면 어떻게 해야 합니까?
cloud-init 웹 사이트의 User-data 형식