在AWS

时间:2016-08-24 20:38:31

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

我正在使用以下命令来验证我的用户是否可以访问S3存储桶:(基于此链接:http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example1.html

$ aws s3api put-object --bucket bymspsbucket --key AWS.png --body Desktop/AWS.png --profile spsadmin

但是我遇到了以下错误并坚持下去并且不知道出了什么问题......

“调用PutObject操作时发生错误(InvalidRequest):此请求缺少必需的标头:x-amz-content-sha256”

我用--debug

运行命令

请参阅以下链接中的debug-output文件: https://github.com/minafa/AWS/wiki

$ aws --version
aws-cli/1.10.59 Python/2.7.10 Darwin/15.0.0 botocore/1.4.49

我使用cmd:aws configure配置了配置文件,结果如下:

#vim ./aws/credentials
[default]
aws_access_key_id =
aws_secret_access_key =
[spsadmin]
aws_access_key_id =
aws_secret_access_key =

#vim ./aws/config

编辑:

由于凭证文件中没有区域,我手动修改了文件。所以它可以用于putobject,但是get对象提供了访问拒绝错误:

aws s3api get-object --bucket examplebucket --key AWS.png OutputFile.jpg --profile spsadmin

调用GetObject操作时发生错误(AccessDenied):拒绝访问

我在s3存储桶中设置的用户可以访问的权限如下:

"s3:GetBucketLocation",
"s3:ListBucket",
"s3:GetObject", 
"s3:PutObject"

是否需要在IAM我的用户帐户中附加相同的策略? 在IAM的附加策略下,我只设置了“AmazonS3FullAccess”,但它不应该是FullAccess,因为用户必须只能访问我指定的存储桶。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我已经解决了以下问题:

  1. put-object没有用,因为config / credentials文件中没有设置区域。 所以.aws /凭证是模糊的。

  2. get-object给出了Access denied错误,因为它需要设置:

    "行动":" s3:GetBucketAcl"在Bucket Policy。

  3. 应该创建策略(具有与桶策略相同的操作)并将其附加到IAM用户,该指令基于以下链接: http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html

  4. 如果想要通过控制台查看S3存储桶并生成更多存储桶,则可以将AmazonS3FullAccess附加到IAM用户。否则它可能是deattach。