前提條件:
1. https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html
2.安裝aws cli
此處以.ova格式為例
1.導入.ova文件到s3
aws s3 cp Downloads/CentOS7.ova s3://s3-vmimport/CentOS7.ova
2.IAM用戶權限設置
IAM用於需擁有必要的s3和ec2權限,此測試使用的IAM用戶擁有AdministratorAccess權限,所以未做具體配置。
詳細的權限要求可參考以下鏈接中“IAM用戶的必要權限”一節
https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html
3.創建角色
VM Import/Export需要一個角色代表您執行某些操作。您必須創建名為vmimport的服務角色,並附帶可允許VM Import/Export擔任相關角色的信任關系策略文檔,您還必須將IAM策略附加到該角色。
(1)編寫trust-policy.json文件
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
(2)運行如下命令創建角色
aws iam create-role --role-name vmimport --assume-role-policy-document “file:///trust-policy.json”
運行結果如下
(3)創建權限策略文件role-policy.json,
其中,disk-image-file-bucket 為存儲磁盤映像的存儲桶,export-bucket 為存儲所導出映像的存儲桶
注意s3的arn中global用arn:aws:s3:::,中國區用arn:aws-cn:s3:::
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource":[
"arn:aws-cn:s3:::disk-image-file-bucket",
"arn:aws-cn:s3:::disk-image-file-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:GetBucketAcl"
],
"Resource":[
"arn:aws-cn:s3:::export-bucket",
"arn:aws-cn:s3:::export-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource":"*"
}
]
}
(4)執行以下命令
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file:///Users/shenlei/role-policy.json"
運行結果如下
3.導入.ova
(1)執行以下命令
aws ec2 import-image --disk-containers Format=ova,UserBucket="{S3Bucket=s3-vmimport,S3Key=CentOS7.ova}"
運行結果如下
(2)監控導入狀態
執行以下命令
aws ec2 describe-import-image-tasks --import-task-ids import-ami-0176bxxxxxxxeb8
運行結果如下:
a.coverting狀態
b.updating狀態
c.booting狀態
d.booted狀態
e.導入完成
——本文作者:趙毅鵬,沈磊