我需要将 Gen2 Hyper-V 机器导入 AWS,并且我正在遵循此处的文档:https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html
一切正常,直到我使用此命令上传图像:
aws ec2 import-image --description "XYZVM" --license-type AWS --disk-containers file://containers.json
containers.json 文件如下:
[
{
"Description": "First disk",
"Format": "vhdx",
"UserBucket": {
"S3Bucket": "xyzvmimport",
"S3Key": "xyWin10.vhdx"
}
},
{
"Description": "Second disk",
"Format": "vhdx",
"UserBucket": {
"S3Bucket": "xyzvmimport",
"S3Key": "xyWin11.vhdx"
}
}
]
vhdx 文件和 container.json 位于同一文件夹中。我以管理员身份从文件夹内运行命令,但出现此错误:
An error occurred (InvalidParameter) when calling the ImportImage operation: S3 key does not exist: xyWin10.vhdx
我还确保“每个人”都对文件具有完全访问权限,以确保这不是权限问题。
这是怎么回事?为什么这个工具不起作用?
答案1
正如 Alex Moore 在对原始问题的评论中所建议的那样。
当您说“vhdx 文件和 container.json 位于同一文件夹中”时,您的意思是在本地计算机上的文件夹中?因为 vhdx 文件需要上传到 S3 存储桶
我还假设 ova 来自我的工作站。一旦我将 ova 上传到存储桶并运行 import-image 命令,它就会起作用。
答案2
配置脚本的方法有两种containers.json
,第一种方法是:
- 使用 s3 bucket 指定图像。json 片段如下:
[
{
"Description": "My Server OVA",
"Format": "ova",
"UserBucket": {
"S3Bucket": "my-import-bucket",
"S3Key": "vms/my-server-vm.ova"
}
}
]
- 使用 Amazon S3 中的 URL 指定图像。示例如下:
[
{
"Description": "My Server OVA",
"Format": "ova",
"Url": "s3://my-import-bucket/vms/my-server-vm.ova"
}
]
第一个选项失败后,我尝试了第二个,成功了。解决方案的参考资料可以在这里找到这里。