본문으로 바로가기

AWS vm이미지로 AMI 만들기

category Programming/AWS 2018. 1. 11. 22:28

우선 AWS CLI를 사용해야 하니 

http://evols-atirev.tistory.com/10



CLI를 설치하자.

vm이미지를 AMI로 만들기 위해서는 우선 S3버킷과 vmimport라는 IAM역할이 필요하다.

 

VHD 파일 만들기 (with vmware)

Win키를 누르고 컴퓨터 관리로 들어간다.


 

 

그 다음 VHD 고정크기로 만들어준다.
여기서 용량이 자신이 원하는 최종상태에서 1기가 정도 빈 공간을 가져야 오류가 나지 않는다.

vhd파일의 빈 공간이 부족하면

"StatusMessage": "ClientError: Unsupported: Not enough free disk space to proceed with import. There must be at least 250MB free."
라는 메세지가 뜰 수 있다.
250MB라고 되어있지만 내가 290MB가 남아있었는데도 에러가 났으니 1기가정도 여유롭게 만드는 것이 좋다.

 


그 다음으로는 생성된 디스크를 우클릭하여 디스크 초기화를 해준다.
GPT가 아니라 MBR를 선택해야한다. 그 다음에 다시 우클릭을 한 뒤에 디스크 분리를 한다.

그 다음에 이 vhd파일에 os를 설치해야 하는데
처음에 Typical이 아니라 Custom을 선택해야 vhd파일을 사용할 수 있다.
쭉 알아서 설정하다가 

 

이런 게 나오면 기본이 UEFI로 설정되어있는데 BIOS로 해야한다. 
aws import는 EFI를 지원하지 않는다고 한다.

 

 

 

 

 

여기에서 Use an existing virtual disk를 선택하고 
이후에 browse에서

 

All files를 누른다음에 해당 vhd파일을 선택해야 한다.

그리고 나머지를 세팅해준 다음에 원하는 윈도우를 설치한다.

윈도우를 설치한 다음에 해야하는 작업이 있다.

첫 번째는 원격데스크톱 기능을 켜는 것
두 번째는 빈 비밀번호를 사용하게 하는 것 or 계정 비밀번호를 설정하는 것

aws인스턴스는 원격접속만 가능하기 때문에 원격데스크톱 기능을 꺼두면 
아무것도 할 수 없다.
그리고 기본적으로 비밀번호가 없으면 원격데스크톱이 불가능 하게 설정되어 있기 때문에
비밀번호를 정하거나 그 설정을 꺼야한다.

 

들어간다.

 

간단히 원격 탭에서 원격을 허용해주면 된다.

계정 비밀번호를 바꾸는 것은 간단하고 빈 비밀번호로 접속하는 법만 적겠다.

 

 

 

로컬정책-보안옵션
에서 반 암호 사용제한을 사용안함으로 설정하면 된다.
그리고 나머지를 원하는 대로 설정해주면 자신의 vhd가 완성된다.

 

S3 버킷 만들기

이건 별로 어렵지 않다.

S3 버킷을 만들려면
1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
2. [Create Bucket]을 선택합니다.
3. [Create a Bucket] 대화 상자에서 다음 작업을 수행하십시오.
   a.[Bucket Name]에서 버킷 이름을 입력합니다. 선택한 이름은 Amazon S3에 있는 어떤 기존 버킷 이름과도 중복되지 않아야 합니다. 일부 리전에서는 버킷 이름에 대한 추가 제한이 있을 수 있습니다. 자세한 내용은 Amazon Simple Storage Service 개발자 가이드 Bucket Restrictions and Limitations를 참조하십시오.
    b.[Region]에서 AMI에 지정할 리전을 선택합니다.
    c.[Create]를 선택합니다.

 

VM import 서비스 역할 만들기

첨부한 trust-policy.json를 다운로드 받는다.

 

trust-policy.json
다운로드
 

aws CLI를 사용할 수 있는 쉘(터미널, cmd)을 연다.

aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
를 입력한다.

 

윈도우 기준으로는 저걸 그대로 입력하려면 그 파일이 있는 경로로 이동해야하는 것 같다.
아마 절대경로로도 할 수 있을 것 같은데 나는 안되서 잘 모르겠다.
나는 이미 설정되어있어서 두 번째도 에러가 났다.

다음으로는 role-policy.json파일이 필요하다.

role-policy.json
다운로드

 

메모장을 이용해 json파일을 연 다음
색깔이 다른 disk-image-file-bucket을 자기 버킷 이름으로 바꿔주면 된다.
그리고 같은 방식으로 입력한다.
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

 

 

 

VM이미지 가져오기

먼저 위에 자신이 설정한 s3 버킷에 vm이미지 파일을 업로드 해야 한다. 
이건 그냥 인터넷으로 접속해서 하면 된다.

그리고 그걸 vm으로 가져오는 방법은 여러가지가 있는 것 같다.

나는 .vhd파일을 설명할 것이다. 
아래 파일을 다운받는다.

import.json
다운로드

마찬가지로 메모장을 이용해 연다.
Description은 설명을 입력하면 되고 버킷은 이미지를 업로드한 버킷이다.
S3key는 버킷 내에서 파일의 경로를 입력하면 된다.
나는 폴더 없이 업로드 해두었기 때문에 파일명만 입력했다.
폴더가 있다면 folder/folder2/example.vhd
처럼 입력한다.

다시 쉘을 열고
aws ec2 import-image --description "Your Description" --disk-containers file://import.json
를 입력해 준다. 

그러면

 

 

aws ec2 describe-import-image-tasks를 입력하면 진행 상황을 progress에서 볼 수 있다.

Status는
active - 가져오기 작업이 진행 중입니다.
deleting - 가져오기 작업이 취소되는 중입니다.
deleted - 가져오기 작업이 취소되었습니다.
updating - 상태 가져오기를 업데이트하는 중입니다.
validating - 가져온 이미지가 확인되는 중입니다.
converting - 가져온 이미지가 AMI로 전환 중입니다.
completed - 가져오기 작업이 완료되었으며 AMI를 사용할 준비가 되었습니다.
라는 뜻이다.

성공한다면 aws의 ec2에서 AMIs에 자신의 AMI가 나타난다.

 

 

'Programming > AWS' 카테고리의 다른 글

AWS Command Line Interface(CLI) 설치방법  (301) 2018.01.11