按照官方文档将 ova 映像导入 aws 时出现错误,要求输入未知参数。
我需要将我当前的基本 Debian 盒完全部署到 AWS,并在我的生产中已经运行所有配置和软件。
文档位于:vmimport-图像
当在命令行上寻求帮助时,其可能的参数列表几乎相同:
aws ec2 import-image help
[--architecture <value>]
[--client-data <value>]
[--client-token <value>]
[--description <value>]
[--disk-containers <value>]
[--dry-run | --no-dry-run]
[--encrypted | --no-encrypted]
[--hypervisor <value>]
[--kms-key-id <value>]
[--license-type <value>]
[--platform <value>]
[--role-name <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
我在终端上输入的命令本身:
# It is the 'first one' referred below
cfgAmi=$(cat <<'EOF'
[
{
"Description": "mySystem",
"Format": "ova",
"UserBucket": {
"S3Bucket": "mySystemBucket",
"S3Key": "mySystem.ova"
}
}
]
EOF
)
当使用标志 dry-run 来测试时,它会告诉(请求会成功,但 DryRun 标志已设置):
echo $cfgAmi | aws ec2 import-image \
--dry-run \
--description "mySystem" \
--architecture x86_64 \
--hypervisor xen \
--platform Linux \
--role-name root \
--disk-containers
但是当运行命令真正采取行动时:
echo $cfgAmi | aws ec2 import-image \
--description "mySystem" \
--architecture x86_64 \
--hypervisor xen \
--platform Linux \
--role-name root \
--disk-containers
错误信息:
An error occurred (InvalidParameter) when
calling the ImportImage operation:
Missing required parameter (disk-images)
它disk-images
要求的甚至不是一个可能的参数。上面的
密钥UserBucket
不在基于终端的帮助中,而是在我上面提到的 html 文档中。
当我按照我发现的一篇非官方文章将上述配置更新为以下内容时,错误仍然相同:
# run again the 'first one' to
# populate $cfgAmi variable then:
cfgAmi=$(cat <<EOF
{
"Description": "mySystem",
"DiskContainers": $cfgAmi
}
EOF
)
或者
# run again the 'first one' to
# populate $cfgAmi variable then:
cfgAmi=$(cat <<EOF
{
"description": "mySystem",
"disk-containers": $cfgAmi
}
EOF
)
对于以上任何一项,如果在这一点上我将执行命令更改为:
aws ec2 import-image --cli-input-json $cfgAmi
我收到错误:
Unknown options: \
"mySystem",, \
"disk-containers":, \
[, {, "Description":, \
"mySystem",, "Format":, \
"ova",, "UserBucket":, \
{, "S3Bucket":, "mySystemBucket",, \
"S3Key":, "mySystem.ova", \
}, }, ], }, "description":
使用时:
aws ec2 import-image --cli-input-json "{
\"description\": \"mySystem\",
\"disk-containers\": [ {
\"Description\": \"mySystem\",
\"Format\": \"ova\",
\"UserBucket\": {
\"S3Bucket\": \"mySystemBucket\",
\"S3Key\": \"mySystem.ova\"
}
} ]
}"
得到错误:
Unknown parameter in input:
"disk-containers", must be one of:
Architecture, ClientData, ClientToken,
Description, DiskContainers, DryRun,
Encrypted, Hypervisor, KmsKeyId,
LicenseType, Platform, RoleName
Unknown parameter in input:
"description", must be one of:
Architecture, ClientData, ClientToken,
Description, DiskContainers, DryRun,
Encrypted, Hypervisor, KmsKeyId,
LicenseType, Platform, RoleName
但使用时:
cfgAmi=$(cat <<'EOF'
"[
{
'Description': 'mySystem',
'Format': 'ova',
'UserBucket': {
'S3Bucket': 'mySystemBucket',
'S3Key': 'mySystem.ova'
}
}
]"
EOF
)
echo $cfgAmi | aws ec2 import-image \
--Architecture x86_64 \
--Description "mySystem" \
--Hypervisor xen \
--LicenseType Auto \
--platform Linux \
--RoleName root \
--DiskContainers
返回错误:
Unknown options: \
--Architecture, \
--Description, \
mySystem, \
--Hypervisor, \
xen, \
--LicenseType, \
Auto, \
--RoleName, \
root, \
--DiskContainers, \
x86_64
并且在执行时:
aws ec2 import-image \
--Architecture x86_64 \
--Description "mySystem" \
--Hypervisor xen \
--LicenseType Auto \
--platform Linux \
--RoleName root \
--DiskContainers "[ {
'Description': 'mySystem',
'Format': 'ova',
'UserBucket': {
'S3Bucket': 'mySystemBucket',
'S3Key': 'mySystem.ova'
}
} ]"
存在错误:
Unknown options: \
--Architecture, \
--Description, \
mySystem, \
--Hypervisor, \
xen, \
--LicenseType, \
Auto, \
--RoleName, \
root, \
--DiskContainers, \
[ { 'Description': 'mySystem',
'Format': 'ova', 'UserBucket': {
'S3Bucket': 'mySystemBucket',
'S3Key': 'mySystem.ova'
} } ], x86_64
当我上传与 vmdk 相同的机器并尝试使用另一种格式执行相同的过程时,如下所示:
aws ec2 import-image \
--Architecture x86_64 \
--Description "mysystem" \
--Hypervisor xen \
--LicenseType Auto \
--platform Linux \
--RoleName root \
--DiskContainers "[ {
'Description': 'mysystem',
'Format': 'vmdk',
'UserBucket': {
'S3Bucket': 'mySystemBucket',
'S3Key': 'mysystem.vmdk'
}
} ]"
收到错误:
Unknown options: \
--Architecture, \
--Description, \
mysystem, \
--Hypervisor, \
xen, \
--LicenseType, \
Auto, \
--RoleName, \
root, \
--DiskContainers, [ {
'Description': 'mysystem',
'Format': 'vmdk',
'UserBucket': {
'S3Bucket': 'mySystemBucket', \
'S3Key': 'mysystem.vmdk'
}
} ], \
x86_64
一些文章告诉使用:
胺化剂来自 Netflix,但它的工作原理是采用现有的 AMI 并对其进行调整,直到满足需要然后再次上传,但我们需要将我们的服务器作为一个完整的盒子上传,它是一个简单的默认 Debian 盒子,已经在我们的生产上运行并且充满了我们这里的系统,许多这些系统由于各种原因无法在另一个盒子上重新安装,如果可能的话,我们不会为自定义 AMI 烦恼,我们只会用最简单的 Debian AMI 启动一个默认的 AWS 实例并再次在那里安装所有内容。
打包机来自 Hashicorp 的众多建设者,AMI 构建器(实例存储)请求一个名为的工具AMI 工具你需要从亚马逊下载,我刚刚听说了,现在一切都变得更加混乱,因为 AWS 文档在讲述如何将本地机器部署为 EC2 时没有提到它,Packer 也和 Aminator 一样,需要一个基本的 AWS AMI 才能在上面工作,并且不导出本地默认的 Debian 映像,它要求源_ami它是用作新创建机器的基础的初始 AMI。