AWS导入镜像:用户无法访问S3对象。

3
运行 AWS(Amazon Web Services)导入镜像任务时:
aws ec2 import-image --description "My OVA" --disk-containers file://c:\TEMP\containers.json

我遇到了以下错误:

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

我按照这篇AWS文档的所有说明进行操作(包括步骤1、2和3)。具体来说,我设置了vmimport角色和角色推荐策略。我做错了什么?

5个回答

2
我终于弄明白了。问题出在我的IAM用户身上,该用户包含vmimport角色,但没有访问我的S3存储桶的权限。一旦我授予IAM用户访问S3存储桶的权限(通过在S3中设置存储桶策略),导入映像命令成功启动了进程。
要在S3中设置存储桶策略,请右键单击您的存储桶(即S3中的顶级存储桶名称),然后单击“属性”。然后从显示的右侧菜单中打开“权限”,并单击“添加存储桶策略”。将出现一个小窗口,您可以在其中输入策略的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。 此文档介绍了如何获取您的AWS帐户ID。而此文档则更详细地讲解了在S3中授予权限。


似乎还有一个策略生成器工具:https://awspolicygen.s3.amazonaws.com/policygen.html - CJBS
我仍然得到相同的错误。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::196690049214:user/d0325mgray" }, "Action": "s3:", "Resource": [ "arn:aws:s3:::images-d0325mgray", "arn:aws:s3:::images-d0325mgray/" ] } ] } - Dennis M. Gray

2

我遇到了相同的错误信息,但是该消息没有指定s3对象的名称。在我的containers.json文件中,我必须使用存储桶名称而不是完整的arn。例如,我只使用mybucketname而不是arn:aws:s3:::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"
    }
  }
]

出现错误(InvalidParameter),调用ImportImage操作时:用户无权访问S3对象

最初的回答:

这个错误意味着用户没有权限访问指定的S3对象。请确保用户具有正确的S3访问权限并尝试重新运行操作。


0

我有同样的问题,我的情况是我对于同一用户有多个帐户,并且我在AWS配置中进行了错误的设置,因此该帐户在此存储桶中不存在。


0

0

我尝试导入一个损坏的(在我的情况下是空的).vmdk文件,从而出现了这个错误。这完全是误导性的,表明它是一个访问控制问题,而实际上它是一个文件解析问题。我想他们内部可能有一个try/catch并在尝试访问文件时抛出User does not have access to the S3 object的错误。早些时候,当文件不存在时,我也遇到过这个错误。我发帖是为了帮助像我一样卡住的人,这个错误可能意味着文件不存在、不可访问或无法正确处理。

有趣的是,在我的特定情况下,如果他们在错误后面用括号包含文件路径,那么意味着文件不存在。如果没有括号跟随错误,则意味着它是一个文件解析问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接