0

我正在尝试将磁盘映像导入 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. 公开 S3 存储桶,2. 添加访问策略,以便我的 AWS cli 用户有权访问存储桶。我尝试过的一切仍然返回完全相同的错误消息......我在想可能存在区域问题?我在我的 AWS cli 用户配置和 S3 存储桶区域中使用 us-east-2。还有什么我没有考虑过的吗?

PS 我正在尝试导入 OVA 1 格式的 vm 映像。

这是我的信任政策

   "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": "*"
      }
   ]
}

最后是containers.json

[
  {
    "Description": "My Special OVA",
    "Format": "ova",
    "Url": "s3://MY-IMPORT-BUCKET/VM.ova"
  }
]

更新:进一步调查问题后,我发现角色 vmimport last access 是“未访问”,即从不,这意味着甚至没有尝试使用该角色!所以这个错误显然是在说它不存在(它找不到服务角色)。在最后一个命令中,该命令中没有任何内容表明将使用 vmimport,containers.json 中也没有。我认为这是允许 vmie.amazonaws.com 控制的目的。显然它没有扮演这个角色,所以我需要调查这个和 sts。

4

1 回答 1

0

问题出在您的(我的)Trust Policy.json 文件中。如果您注意到它承担角色的条件,就是 External o id 必须等于 vmimport。它正在检查的属性中添加了一个o,这将始终为 false,因此 vmie 永远无法承担该角色。从信任策略中删除 o 并重试,您的策略将起作用。

于 2021-10-15T19:18:25.050 回答