Import máy ảo vào AWS

Ở bước này, bạn sẽ tạo một IAM role có tên vmimport và import máy ảo đã được tải lên Amazon S3 bucket ở bước trước thành Amazon Machine Image (AMI). Toàn bộ quá trình sẽ được thực hiện bằng AWS Command Line Interface (CLI).

Tạo IAM role vmimport

 VMWare Workstation Trước khi thực hiện việc import máy ảo vào AWS, bạn cần tạo IAM role cần thiết.

  1. Tạo một file có tên trust-policy.json để cho phép dịch vụ VM Import/Export assume role vmimport:
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}
  1. Sử dụng AWS CLI command create-role để tạo IAM role vmimport và gán trust policy:
aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"

 VMWare Workstation

  1. Kiểm tra role đã tạo trong IAM console.  VMWare Workstation

  2. Xem Trust relationships của role.  VMWare Workstation

  3. Để cấp quyền cho role vmimport, bạn hãy tạo một file văn bản tên là role-policy.json. Trong nội dung JSON, tại các dòng Resource (ARN), hãy kiểm tra và cập nhật chính xác tên bucket của bạn. Vì tên bucket trên S3 là duy nhất toàn cầu, nếu bạn đã thay đổi tên bucket lúc khởi tạo, hãy chắc chắn rằng mã ARN trong file này khớp với tên đó (ví dụ: arn:aws:s3:::ten-bucket-cua-ban).

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::import-bucket-2026-1a",
        "arn:aws:s3:::import-bucket-2026-1a/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::export-bucket-2026-1a",
        "arn:aws:s3:::export-bucket-2026-1a/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:ModifySnapshotAttribute",
        "ec2:CopySnapshot",
        "ec2:RegisterImage",
        "ec2:Describe*"
      ],
      "Resource": "*"
    }
  ]
}

 VMWare Workstation

  1. Gán policy vào role vmimport sử dụng AWS CLI command put-role-policy:
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://role-policy.json"

 VMWare Workstation

  1. Kiểm tra permissions của role trong IAM console.  VMWare Workstation

Import máy ảo thành AMI

Sử dụng AWS CLI để import máy ảo thành AMI:

Đảm bảo máy ảo on-premise không sử dụng UEFI boot vì Amazon EC2 không hỗ trợ.

Đối với máy ảo Linux, kiểm tra phiên bản kernel được AWS hỗ trợ. Tham khảo OS requirements.

  1. Chạy AWS CLI command ec2 import-image:
aws ec2 import-image --description "VM Image" --disk-containers Format=vmdk,UserBucket="{S3Bucket=import-bucket-2026-1a,S3Key=Ubuntu-disk1.vmdk}"

 VMWare Workstation

 VMWare Workstation 2. Quá trình import có thể mất 5-10 phút tùy kích thước máy ảo.

  • Kiểm tra trạng thái import VM lên Amazon Web Services
  • Check trạng thái import
aws ec2 describe-import-image-tasks --import-task-ids import-ami-xxxxxxxx 

 VMWare Workstation 3. Sau khi hoàn thành, AMI mới sẽ xuất hiện trong danh sách AMIs với AMI name là task ID.

 VMWare Workstation