AWS S3 CLI的权限bug

使用AWS CLI在S3上创建了一个bucket,上传文件的时候报以下错误:

A client error (AccessDenied) occurred when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads. Please authenticate.

执行命令:aws s3 ls s3://mybucket-1 同样提示权限错误。

之前使用AWS CLI操作S3都是正常的,唯一区别是:这次我使用的是IAM用户,并非root用户。不过我使用的这个IAM用户已经授予“AmazonS3FullAccess”权限了,理论上是可以正常访问S3的。

尝试给bucket设置policy:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::mybucket-1"
        },
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::mybucket-1/*"
        }
    ]
}

然后再使用AWS CLI操作S3,一切正常。至此,问题得以解决。

次日,无意中使用AWS CLI操作另外一个没有设置policy的bucket,竟然一切正常!于是删除“mybucket-1”上的policy,再次尝试使用AWS CLI操作"mybucket-1",结果依然正常!

经过Google,Stack Overflow上的某大神给出了答案:遇到这个问题时,出去遛狗一圈后回来再继续操作就没事了!

http://stackoverflow.com/questions/33600192/aws-s3-cli-anonymous-users-cannot-initiate-multipart-uploads

时间: 2024-12-13 05:44:04

AWS S3 CLI的权限bug的相关文章

用Node完成AWS S3的Upload流程之全世界最简版

开场: 查了两天文档,Error了38次,最后索性去掉所有附加条件, 连界面也不要了,在命令行里跑通了一坨最干瘪的Upload流程! 还冒着热气…… 在此先做记录,明天可以搭配美美的界面继续调试了. 近来压抑的心情顿时舒畅了百分之十. 1. 注册以及相关配置: 注册一枚Amazon账户,如果你经常在Amazon上买买买, 那你其实已经有了Amazon的Retail账户,可以直接登录为AWS账户, 但要变身为这么高大上的账户,不出血怎么可能? 在这过程中,需要花费1美元的认证费用…… 我把信用卡的

AWS S3使用小结

使用场景一:储存网站的图片,并能被任何人访问 1. 创建一个bucket,名字与需要绑定的域名一致. 例如,根域名是mysite.com,希望把所有图片放在pic.mysite.com下面,访问的时候用pic.mysite.com/a.jpg就能直接访问,那么这个bucket的名字就应该设置成pic.mysite.com 这时候就能在控制台上传文件了,当然做实际应用的话需要用他的SDK写程序来实现上传功能. 我们上传一个a.jpg,右边Properties里面给出了一个link "https:/

AWS S3 API实现文件上传下载

近日项目需要使用AWS S3的API实现文件的上传和下载功能,才发现网上关于.net实现该功能的文章不多,有几篇也都是很老版本的AWS的使用描述了,写法和封装的类等等都基本上报废了.虽然这样,但还是很感谢那几篇文章给我指点了方向.下面我就把实现API的方法提供给大家: 注:此API实现方法是基于AWSSDK.2.3.50.1版本实现的. 1.首先必须拥有 Amazon Web Services 账户才能访问此服务,目前有一定流量的适用,当流量超过之后会自动收费 2.根据提供的Access Key

【原创】aws s3 lambda缩略图生成

参考资料: https://github.com/sagidm/s3-resizer https://aws.amazon.com/cn/blogs/compute/resize-images-on-the-fly-with-amazon-s3-aws-lambda-and-amazon-api-gateway/ https://medium.com/swlh/how-to-get-started-with-aws-lambda-9f2ac14d863a https://www.obytes.c

Installing the AWS SAM CLI on macOS

Installing the AWS SAM CLI on macOS https://docs.aws.amazon.com/zh_cn/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html The following steps help you to install and configure the required prerequisites for using th

AWS s3 python sdk code examples

Yet another easy-to-understand, easy-to-use aws s3 python sdk code examples. github地址:https://github.com/garyelephant/aws-s3-python-sdk-examples. """ Yet another s3 python sdk example. based on boto 2.27.0 """ import time imp

Python使用boto3操作AWS S3中踩过的坑

最近在AWS上开发部署应用. 看了这篇关于AWS中国区填坑的文章,结合自己使用AWS的经历,补充两个我自己填的坑. http://www.jianshu.com/p/0d0fd39a40c9?utm_source=tuicool&utm_medium=referral 1. V4 签名认证 官方文档中给出的例子: import boto3 s3 = boto3.resource('s3') s3.meta.client.upload_file('/tmp/hello.txt', 'mybucke

aws s3 上传 binary 数据 (通过stringstream)

有个需求需要将二进制istream上传到s3上暂存,但苦于没能直接找到接口,官方提供的设置数据块的接口如下: inline void SetBody(const std::shared_ptr<Aws::IOStream>& body) { m_bodyStream = body; } 这个Aws::IOStream其实就是std::iostream的封装. 在实际寻找传入参数的时候没找到比较好的传入对象:fstream意味着我需要先将数据存到磁盘再去读取,感觉不是很好:而string

hive0.13权限bug fix

最近线上的hive升级到了0.13,遇到不少问题.权限上面,设置了hive.security.authorization.createtable.owner.grants 在hive0.13中,用户自己创建的表也没有权限.通过对源码的分析和debug找到了rc并fix,下面记录下. 1.首先在hive0.11中和hive0.13中分别做建表测试,通过查看数据库中的元数据,发现在hive0.11中如果设置了owner的参数在表创建之后,用户会有这个表的all的权限(具体可以分析db_privs ,