Ở 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).
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.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
aws iam create-role --role-name vmimport --assume-role-policy-document "file://E:\trust-policy.json"
Kiểm tra role đã tạo trong IAM console.
Xem Trust relationships của role.
Tạo file role-policy.json chứa các IAM policy cần thiết:
{
"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": "*"
}
]
}
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://E:\role-policy.json"
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.
aws ec2 import-image --description "VM Image" --disk-containers Format=vhdx,UserBucket="{S3Bucket=import-bucket-2021,S3Key=Ubuntu.vhdx}"
Quá trình import có thể mất 5-10 phút tùy kích thước máy ảo.
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.
Kiểm tra để đảm bảo Amazon EBS volume không bị encrypted.