사용자 데이터 스크립트를 사용하여 부팅 시 새로운 Amazon Elastic Compute Cloud(Amazon EC2) Linux 스팟 인스턴스에 영구 보조 Amazon Elastic Block Store(Amazon EBS) 볼륨을 자동으로 시작하고 싶습니다. 어떻게 해야 하나요?
간략한 설명
부팅 시 영구 보조 EBS 볼륨을 새 EC2 Linux 스팟 인스턴스에 자동으로 연결하려면 EC2 시작 템플릿에 사용자 데이터 스크립트를 추가합니다. 스팟 인스턴스 요청을 구성할 때 템플릿을 사용합니다.
사전 조건
Amazon EC2에 대해 최소한 볼륨 연결 액세스 권한이 부여된 AWS Identity and Access Management(IAM) 역할을 생성하거나 사용합니다. 이 역할은 시작 템플릿에 연결됩니다.
해결 방법
1단계: IAM 역할 및 사용자 데이터 스크립트로 시작 템플릿 구성
1. Amazon EC2 콘솔을 엽니다.
2. **시작 템플릿(Launch Templates)**을 선택한 다음 **시작 템플릿 만들기(Create launch template)**를 선택합니다.
3. 인스턴스 AMI, 유형, 크기를 선택합니다. 아니면 기존 AMI를 선택합니다.
4. 키 페어를 템플릿에 연결합니다.
5. EBS 볼륨과 동일한 가용 영역에 있는 서브넷을 선택합니다.
6. **고급 세부 정보(Advanced Details)**를 확장합니다.
7. 다음 예와 같이 최소한 볼륨 연결 액세스가 부여된 IAM 역할을 추가합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:AttachVolume",
"ec2:DetachVolume"
],
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/vol-xxxxxxxxxxxx"
]
},
{
"Effect": "Allow",
"Action": "ec2:DescribeVolumes",
"Resource": "arn:aws:ec2:*:*:volume/vol-xxxxxxxxxxxx"
}
]
8. 템플릿에 사용자 데이터 스크립트를 추가합니다. 다음은 예제 사용자 데이터 스크립트입니다. 리전(region) 및 volume-id를 환경에 맞게 바꿉니다.
#!/bin/bash
OUTPUT=$(curl http://169.254.169.254/latest/meta-data/instance-id)
aws ec2 attach-volume --volume-id vol-xxxxxxxxxxxx --device /dev/xvdf --instance-id $OUTPUT --region ap-southeast-1
2단계: 1단계에서 생성한 시작 템플릿을 사용하여 스팟 요청 구성
1. **스팟 인스턴스(Spot Instance)**를 선택한 다음 **스팟 인스턴스 요청(Request Spot Instance)**을 선택합니다.
2. **시작 템플릿(Launch Templates)**을 선택한 다음 1단계에서 만든 시작 템플릿을 선택합니다. 템플릿에 구성된 모든 정보가 자동으로 채워집니다.
3. EBS 볼륨과 동일한 가용 영역을 선택합니다.
4. **스팟 요청 생성(Create Spot Request)**을 선택합니다.
스팟 요청이 완료되면 부팅 시 영구 보조 EBS 볼륨이 새 스팟 인스턴스에 자동으로 연결됩니다.