Amazon web services AWS导入图像用户无权访问S3对象
运行AWS(Amazon Web服务)导入图像任务时: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 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 看起来还有一个策略生成器工具: