Purpose
AWS의 VM Import/Export 서비스를 사용하여 가상 머신(VM)을 AWS S3 버킷에 업로드하고, 그것을 기반으로 Amazon Machine Image(AMI)를 생성하는 과정을 포함합니다. AD를 통한 SSO를 테스트할 Domain User와 동일한 사양의 PC가 필요한데, AWS에서는 Windows 10/11 Pro 기반의 Image가 없기 때문에 수동으로 생성합니다.

- 위와 같이 AWS에서는 기본적으로 Windows 10 Image를 지원해주지 않는다.. 따라서 도메인 사용자 환경에서 Ldap 서비스 등을 검증할 때는 오직 내부 도메인 사용자의 랩탑을 사용해서 테스트하는 번거로움이 있다.
이미지 생성 및 기본 설정(.VHD)
VM 이미지 생성

[참고] VM 생성간 공통 사항
- 도메인 사용자와 동일한 환경 (e.g Windows 10 Pro)
- 1세대 구성
- 디스크 나중에 추가 > VHD로 생성(Cdrive)
- 정품인증시 참고 자료 (아래 링크 참조)
https://learn.microsoft.com/ko-kr/windows-server/get-started/kms-client-activation-keys

Windows Server 및 Windows에 대한 KMS(키 관리 서비스) 클라이언트 정품 인증 및 제품 키
KMS 호스트 서버에서 Windows Server 및 기타 Windows 제품의 설정 및 정품 인증에 필요한 제품 키를 가져옵니다.


- 관리자권한의 로컬 사용자 미리 생성해놓기
- 이 컴퓨터에 대한 원격 연결 허용해놓기
AWS CLI Tool 설치
– VHD를 AWS S3 Bucket 에 업로드할 수 있도록 내 PC에 AWS CLI 설치를 진행


# msiexec 명령을 실행하여 MSI 설치 관리자 설치 및 실행
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

– 계속하기를 진행하여 설치를 완료합니다.
– cmd 창을 닫고 새로 열기하여 aws cli 설치 상태를 확인합니다.

VHD 위치 확인 및 S3 Bucket으로 업로드
VHD를 S3 Bucket 에 업로드
AWS IAM User(AccessKey User) 생성






VM Import (VHD -> S3 Bucket)


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToUploadObjects",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWSAccountID12digit:user/vmImportUserName"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::s3BucketName/*"
},
{
"Sid": "AllowUserToListBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWSAccountID12digit:user/vmImportUserName"
},
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::s3BucketName"
}
]
}
windows10pro-image

# aws s3 cp <path/fileName.vhd> <s3://BucketName/folder/objectName.vhd>
aws s3 cp D:\ClusterStorage\clustervolume\W10P01\Cdrive.vhd s3://windows10pro-image/vhd/win10proimage-cdrive.vhd


VM Import
역할 생성 (policy.json 생성)
– AMI 이미지 생성 역할 권한 설정
– 적절한 폴더에 policy.json 생성하고 아래 내용 저장
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
# 역할 생성 > AWS CLI 에서 아래 명령 실행
# aws iam create-role --role-name vmimport --assume-role-policy-document file://path/policy.json
aws iam create-role --role-name vmimport --assume-role-policy-document D:\Security\json\vmimport\policy.json

역할에 정책 연결 (policy_import.json 생성 및 실행)
– 역할에 정책 연결할 권한 설정
– 적절한 폴더에 policy_import.json 생성하고 아래 내용 저장
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::windows10pro-image"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::windows10pro-image/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
# 역할에 정책 연결 > AWS CLI 에서 아래 명령 실행
# aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://path/policy_import.json
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://policy_import.json

AMI 이미지 생성(main.json 생성 및 실행)
– S3 bucket에 upload된 vhd를 AMI로 가져오기 위해 추가 작업이 필요합니다.
[
{
"Description": "Windows-10-pro-image",
"Format": "vhd",
"UserBucket": {
"S3Bucket": "windows10pro-image",
"S3Key": "vhd/win10proimage-cdrive.vhd"
}
}
]
# BYOL 형식의 AMI 생성
# 명령은 AWS CLI를 사용하여 로컬 또는 다른 환경에서 생성된 가상 머신(VM) 이미지를 EC2로 가져와 Amazon Machine Image (AMI)를 생성한다.
aws ec2 import-image --license-type BYOL --disk-containers file://path/main.json
aws ec2 import-image --license-type BYOL --disk-containers file://main.json

VM Import Task 상태 확인
# aws ec2 describe-import-image-tasks --import-task-ids <ImportTaskId>
# 여기서 <ImportTaskId>는 import-ami-09e9af3f24d92a875 이라고 가정하면
aws ec2 describe-import-image-tasks --import-task-ids import-ami-09e9af3f24d92a875



ImportTaskId: 이미지 가져오기 작업의 고유 식별자는 import-ami-09e9af3f24d92a875 LicenseType: 가져온 이미지에 적용된 라이센스 유형은 BYOL (Bring Your Own License) (사용자가 자신의 라이선스를 가지고 있음) Progress: 작업 진행 상태율 > 예를 들어, 19%로, 이미지 변환 작업이 진행 중임을 확인 SnapshotDetails: 가져오기 작업에 사용된 스냅샷의 세부 정보. 여기에는 스냅샷의 설명(Windows-10-pro-image), 디스크 이미지 크기(12092948480.0 바이트), 포맷(VHD), 상태(active), 그리고 사용된 S3 버킷(windows10pro-image) 및 키(vhd/win10proimage-cdrive.vhd) 정보가 포함됨 Status: 작업의 현재 상태는 active로, 작업이 활성 상태이며 진행 중임을 나타냄. updating은 결과물을 AMI로 등록하기 위한 준비 단계. Completed는 Image 가져오기 완료 상태임을 나타냄 StatusMessage: 현재 상태 메시지는 converting으로, 이미지가 현재 변환되고 있음을 나타냅니다. Tags: 현재 이 작업에 할당된 태그는 없습니다. (optional)

