Amazon web services AWS导入图像用户无权访问S3对象

Amazon web services AWS导入图像用户无权访问S3对象,amazon-web-services,amazon-s3,amazon-ec2,Amazon Web Services,Amazon S3,Amazon Ec2,运行AWS(Amazon Web服务)导入图像任务时: aws ec2 import-image --description "My OVA" --disk-containers file://c:\TEMP\containers.json 我得到以下错误: 调用ImportImage操作时出错(InvalidParameter):用户无权访问S3对象。(mys3bucket/vms/myOVA.ova) 我遵循中的所有说明(包括步骤1、2和3)。具体来说,我设置了vmimport角色和该角色

运行AWS(Amazon Web服务)导入图像任务时:

aws ec2 import-image --description "My OVA" --disk-containers file://c:\TEMP\containers.json
我得到以下错误:

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


我遵循中的所有说明(包括步骤1、2和3)。具体来说,我设置了vmimport角色和该角色的建议策略。我做错了什么?

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

要在S3中设置bucket策略,右键单击您的bucket(即S3中的顶级bucket名称),然后单击“属性”。然后从显示的右侧菜单中,打开“权限”,然后单击“添加bucket策略”。将出现一个小窗口,您可以在其中为策略输入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/*"
        ]
    }
]}
您需要将“我的AWS帐户ID”替换为您的AWS帐户ID,“myIAMuserID”替换为包含vmimport角色的IAM用户ID。
讨论如何获取您的AWS帐户ID。并讨论更多有关在S3中授予权限的信息。

我收到了相同的错误消息,只是消息没有指定S3对象的名称。在containers.json文件中,我必须使用bucket名称,而不是完整的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对象

我试图导入损坏的.vmdk文件(在我的示例中为空)以获得此错误。这完全是一种误导,表明这是一个访问控制问题,而实际上这是一个文件解析问题。我假设在内部他们有一个try/catch并抛出错误
当试图访问文件时出现任何错误时,用户没有访问S3对象的权限。早些时候,当文件不存在时,我也遇到了这个错误。仅针对像我这样陷入困境的人发布此消息,此错误可能意味着该文件不存在、不可访问或无法正确处理


一个有趣的注意事项是,在我的具体案例中,如果他们在错误后的括号中包含文件路径,这意味着文件不存在。如果错误后面没有括号,这意味着这是一个文件解析问题。

在我的例子中,这正是故障排除文档中所说的。我的aws cli已登录到其他区域,然后在中创建了bucket

看起来还有一个策略生成器工具: