调用importage操作时发生错误(InvalidParameter):服务角色vmimport不存在



我正在尝试将磁盘映像导入AWS,用于启动EC2实例。我遵循指南,并满足所有先决条件,如所述。然而,我面临着一个错误,我一直试图(不成功)调试。错误如下。
An error occurred (InvalidParameter) when calling the ImportImage operation: The service role vmimport provided does not exist or does not have sufficient permissions

然而,当我检查vmimport角色的权限时,它具有EC2和S3的所有必要权限!我的aws cli用户还拥有EC2和S3的完全权限。对于这个问题,我尝试了很多不同的解决方案,包括:1。2.将S3桶设为公共桶;添加访问策略,使我的AWS cli用户具有访问桶的权限。我所尝试的一切仍然返回这个完全相同的错误信息…我想可能是区域问题?我在AWS cli用户配置和S3桶区域中使用us-east-2。还有什么我没有考虑到的吗?

附言我正在尝试导入OVA 1格式的虚拟机图像。

这是我的信任策略

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externaloid": "vmimport"
}
}
}
]
}

和我的角色策略

"Version":"2012-10-17",
"Statement":[
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket" 
],
"Resource": [
"arn:aws:s3:::MY-IMPORT-BUCKET",
"arn:aws:s3:::MY-IMPORT-BUCKET/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:GetBucketAcl"
],
"Resource": [
"arn:aws:s3:::MY-EXPORT-BUCKET",
"arn:aws:s3:::MY-EXPORT-BUCKET/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
最后是container。json
[
{
"Description": "My Special OVA",
"Format": "ova",
"Url": "s3://MY-IMPORT-BUCKET/VM.ova"
}
]

更新:在进一步调查了这个问题之后,我发现角色vmimport的最后一次访问是"未访问",即从未访问过,这意味着甚至没有尝试使用该角色!因此,这个错误清楚地表明它不存在(它找不到服务角色)。在最后一个命令中,命令中没有任何内容表明将使用vmimport,在容器中也没有。json。我以为这就是允许vie.amazonaws.com掌控局面的目的。显然它没有承担这个角色,所以我需要对此进行调查和测试。

问题出在您的(我的)信任策略中。json文件。如果您注意到它承担该角色的条件,那么外部Id必须等于vmimport。有一个附加的o中的值,则该值将始终为false,因此vmie永远无法承担该角色。从信任策略中删除o,然后再试一次,您的策略可以正常工作。

我有完全相同的场景,您需要创建vmimport角色,如下所述(AWS文档):https://docs.aws.amazon.com/vm-import/latest/userguide/required-permissions.html

最新更新