Amazon EC2 인스턴스를 다시 시작할 때마다 사용자 데이터를 활용하여 스크립트를 자동으로 실행하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 4월 16일

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 다시 시작할 때마다 사용자 데이터를 사용하여 스크립트를 실행하려고 합니다. 어떻게 해야 합니까?

간략한 설명

기본적으로 사용자 데이터 스크립트 및 cloud-init 명령은 EC2 인스턴스가 시작될 때 첫 부팅 주기 중에만 실행됩니다. 그러나 MIME 멀티파트 파일을 사용하여 사용자 데이터 스크립트 및 cloud-init 명령을 구성할 수도 있습니다. MIME 멀티파트 파일을 사용하면 cloud-init 패키지에서 사용자 데이터를 실행하는 빈도를 재정의할 수 있습니다. 그런 다음, 파일에서 사용자 스크립트를 실행합니다. MIME 멀티파트 파일에 대한 자세한 내용은 cloud-init 웹 사이트의 MIME 멀티파트 아카이브를 참조하십시오.

해결 방법

경고: 이 절차를 시작하기 전에 다음 사항에 검토하십시오.

1.    cloud-init의 최신 버전이 EC2 인스턴스에 설치되어 있고 올바르게 작동하는지 확인합니다.

2.    보안을 위해 ModifyInstanceAttribute API를 통해 사용자 데이터를 추가하거나 제거할 수 있는 사용자를 제한하도록 IAM 정책을 생성합니다.

3.    Amazon EC2 콘솔을 엽니다.

4.    인스턴스를 중지합니다.

5.    [작업]을 선택하고 [인스턴스 설정]을 선택하고 [사용자 데이터 보기/변경]을 선택합니다.

6.    사용자 스크립트를 [사용자 데이터 보기/변경] 상자에 복사하고 [저장]을 선택합니다.

다음 예제에서는 "Hello World"를 /tmp 디렉터리의 testfile.txt 파일에 작성하는 쉘 스크립트입니다.

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
/bin/echo "Hello World" >> /tmp/testfile.txt
--//

기본적으로 cloud-init에서는 사용자 데이터에서 한 번에 하나의 콘텐츠 유형만 허용합니다. 그러나 이 예제에서는 MIME 멀티파트 파일의 text/cloud-configtext/x-shellscript 콘텐츠 유형 모두를 보여줍니다.

text/cloud-config 콘텐츠 유형은 SCRIPTS-USER 파라미터를 ALWAYS로 설정하여 cloud-init 패키지에서 사용자 데이터를 실행하는 빈도를 재정의합니다.

text/x-shellscript 콘텐츠 유형은 cloud-init cloud_final_modules 모듈에서 실행할 실제 사용자 스크립트를 제공합니다. 이 예제에서는 다음과 같은 하나의 줄만 실행됩니다. /bin/echo "Hello World." >> /tmp/testfile.txt.

참고: /bin/echo "Hello World." >> /tmp/testfile.txt 줄을 인스턴스 부팅 중에 실행할 셸 스크립트로 바꿉니다.

7.    EC2 인스턴스를 다시 시작하고 스크립트가 올바르게 실행되는지 확인합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?