Import máy ảo vào AWS

Ở bước này, bạn sẽ tạo một role tên là vmimport và import máy ảo đã được tải lên S3 Bucket ở bước trước thành AMI. Toàn bộ quá trình sẽ được thao tác với AWS CLI.

Tạo vmimport role

Trước khi thực hiện việc Import máy ảo vào AWS. Bạn cần kiểm tra role cần thiết cho việc thực thi này.

  1. Truy cập vào IAM Management console.
  2. Ở thanh điều hướng, chọn Roles

 VMWare Workstation

  1. Nếu chưa thấy role vmimport, tiến hành tạo role vmimport.
  2. Tạo một file tên trust-policy.json để cho phép dịch vụ VM Import/Export tiếp nhận role vmimport sắp được tạo của bạn.
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}
  1. Sử dụng lệnh create-role để tạo một IAM role có tên là vmimport và gán trust-policy.jjson cho tham số --assume-role-policy-document
# thay thế "E:\trust-policy.json" bằng đường dẫn tới tập tin trust-policy.json trên môi trường của bạn
aws iam create-role --role-name vmimport --assume-role-policy-document "file://E:\trust-policy.json"

 VMWare Workstation

  1. Kiểm tra role đã tạo.

 VMWare Workstation

  1. Xem Trust relationships

 VMWare Workstation

  1. Tạo một file role-policy.json chứa các policy sau để cho phép IAM role truy cập tới các bucket có chứa máy ảo để thực hiện các quyền trong phần “Action”:. Trong đó:

disk-image-file-bucket là tên của S3 bucket dùng để lưu các file đã export từ onpremise (trong ví dụ này là import-bucket-2023). export-bucket là tên của S3 bucket dùng để export ec2 instance sẽ dùng cho phần Export VM từ AWS ở sau.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket" 
         ],
         "Resource": [
            "arn:aws:s3:::disk-image-file-bucket",
            "arn:aws:s3:::disk-image-file-bucket/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:PutObject",
            "s3:GetBucketAcl"
         ],
         "Resource": [
            "arn:aws:s3:::export-bucket",
            "arn:aws:s3:::export-bucket/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource": "*"
      }
   ]
}
  • Sử dụng lệnh sau để gán các role được mô tả trong file role-policy.json vào role vmimport đã tạo
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://E:\role-policy.json"

 VMWare Workstation

  1. Kiểm tra permission. Bạn cũng có thể kiểm tra xem liệu role vmimport đã được tạo thành công hay chưa bằng cách truy cập vào IAM Management Console và chọn role đó. Bạn cũng có thể chỉnh sửa role policy trực tiếp bằng cách chọn Edit policy.

 VMWare Workstation

Import máy ảo thành AMI

Chúng ta sẽ sử dụng AWS CLI để khởi chạy tiến trình Import máy ảo thành AMI.

Đối với máy ảo ở On-premise, hãy chắc chắn rằng bạn không sử dụng UEFI boot cho máy ảo. UEFI boot không được hỗ trợ trên AWS. Việc convert sẽ không thành công và xuất hiện lỗi ClientError: EFI partition detected. UEFI booting is not supported in EC2.

Đối với máy ảo Linux, hãy kiểm tra phiên bản kernel mới nhất đang được AWS support. Các kernel mới hơn hỗ trợ của AWS sẽ không thực hiện được. Yêu cầu về Hệ điều hành bạn có thể tham khảo tại Yêu cầu Hệ điều hành

  1. Trong Terminal trên Linux (hoặc Command Prompt/Power Shell trên Windows), chạy lệnh aws ec2 import-image để bắt đầu việc import máy ảo đã được export và convert thành AMI. Các thiết lập có liên quan sau:
  • –deescription: Đặt mô tả cho AMI
  • –disk-ccontainers: Chứa thông tin xác định tập tin máy ảo như:
  • Format định dạng (ví dụ: vhdx hoặc vmdk)
  • Bucket lưu trữ (ví dụ: import-bucket-2023)
  • Đường dẫn tập tin (ví dụ: Ubuntu.vhdx hoặc Ubuntu-disk1.vmdk)
aws ec2 import-image --description "VM Image" --disk-containers Format=vhdx,UserBucket="{S3Bucket=import-bucket-2021,S3Key=Ubuntu.vhdx}"

 VMWare Workstation

Nếu khi chạy lệnh bạn gặp lỗi An error occurred (InvalidParameter) when calling the ImportImage operation: The service role vmimport provided does not exist or does not have sufficient permissions, hãy kiểm tra lại bước tạo role vmimport và chắc chắn rằng role đã được tạo và thiết lập đủ quyền.

  1. Sẽ mất 5 - 10 phút tùy thuộc vào kích thước của máy ảo để AWS có thể convert máy ảo thành AMI.

 VMWare Workstation

 VMWare Workstation

  1. Sau khi hoàn thành, chúng ta sẽ thấy trong danh sách AMI sẽ có thêm một AMI nữa với AMI name chính là task id mà chúng ta tạo ở trên

 VMWare Workstation

  1. Bạn phải kiểm tra xem EBS chắc chắn là không Encrypted

 VMWare Workstation