[AWS] Adding Win10 pro as an EC2 instance through s3 bucket & VM Import

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

  • 관리자권한의 로컬 사용자 미리 생성해놓기
  • 이 컴퓨터에 대한 원격 연결 허용해놓기

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)

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x