AWS Import-image用户无权访问S3对象

时间:2016-12-01 21:36:06

标签: amazon-web-services amazon-s3 amazon-ec2

运行AWS(亚马逊网络服务)导入图像任务时:

aws ec2 import-image --description "My OVA" --disk-containers file://c:\TEMP\containers.json

我收到以下错误:

  

调用ImportImage操作时发生错误(InvalidParameter):用户无权访问S3对象。(mys3bucket / vms / myOVA.ova)

我按照this AWS document on importing a VM中的所有说明(包括步骤1,2和3)。具体来说,我设置了vmimport角色以及该角色的建议策略。我做错了什么?

4 个答案:

答案 0 :(得分:0)

我终于弄明白了。问题是我的IAM 用户,它包含vmimport角色,无法访问我的S3存储桶。一旦我授予IAM用户访问我的S3存储桶的权限(通过在S3中设置存储桶策略),import-image命令就会成功启动该进程。

要在S3中设置存储桶策略,请右键单击存储桶(即S3中的顶级存储桶名称),然后单击"属性"。然后从显示的右侧菜单中打开" Permissions",然后单击"添加存储桶策略"。将出现一个小窗口,您可以在其中放入JSON以获取策略。这是适合我的那个:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt1476979061000",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::MY-AWS-account-ID:user/myIAMuserID"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::mys3bucket",
            "arn:aws:s3:::mys3bucket/*"
        ]
    }
]}

您需要更换" MY-AWS-account-ID"使用您的AWS账户ID和" myIAMuserID"使用包含vmimport角色的IAM用户ID。 This document讨论如何获取您的AWS账户ID。 this document更多地讨论了在S3中授予权限的问题。

答案 1 :(得分:0)

除了消息未指定s3对象的名称外,我还有相同的错误消息。在我的container.json文件中,我必须使用存储桶名称而不是完整的arn。与代替arn:aws:s3 ::: mybucketname一样,我只使用mybucketname。 这行得通...

[
   {
    "Description": "VM Simulator",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "mybucketname",
        "S3Key": "vmdisks/vmSimulator.vmdk"
    }
  }
]

这失败了...

[
   {
    "Description": "Qtof Simulator",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "arn:aws:s3:::mybucketname",
        "S3Key": "vmdisks/vmSimulator.vmdk"
    }
  }
]

显示消息... 调用ImportImage操作时发生错误(InvalidParameter):用户无权访问S3对象

答案 2 :(得分:0)

我设法通过尝试导入损坏的(在我的情况下为空).vmdk文件来得到此错误。这完全是一种误导,表明它实际上是一个访问控制问题,而实际上是文件解析问题。我想在内部他们有一个try / catch并在尝试访问文件时发生任何错误时抛出错误User does not have access to the S3 object。之前,当文件不存在时,我也遇到了此错误。只是向像我这样受困的任何人发布此文件,此错误可能意味着该文件不存在,不可访问或无法正确处理。

一个有趣的注释,在我的特定情况下,如果错误之后在括号中包含了文件路径,则意味着该文件不存在。如果错误后没有括号,则表示这是文件解析问题。

答案 3 :(得分:0)

在我看来,这正是在说明文档https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-troubleshooting.html遇到麻烦时的意思。我的aws cli登录到其他位置,然后在其中创建了存储桶。