aws 的 s3 put_object vs upload_file
用过aws的人,都知道s3存储东西贼方便。
他的上传有两个方法,
第一个是get_object(),是将文件的内容赋值给body,进行上传,并设置存储桶为上传文件为公开
response = s3.put_object(Bucket=bucket_tmp, Key=file_key, Body=content, ACL="public-read-write")
然后点击对应的文件路径,就有一个下载的s3对象url进行下载,如下图所示,会自动弹出:
第二个是upload_file
s3.upload_file(filename, bucket, key, callback, extra_args)
这种方法,就是上传的时候只需要填入文件的名称就可以实现上传,但是貌似不能设置这个文件的公开需要去配置s3的存储桶信息,那应该怎么办呢,我也没花时间研究,就直接很暴力看了文档,可以这么操作。
First: (这里注意一下使用第一种的上传方式,也要设置桶公开哈)
Second:是设置文件的公开:点击权限->点击存储桶策略,插入一下信息,
首先点击策略生成器,根据自己需要开通的权限,选择即可或者通过文档自己来编码这个json信息,然后将结果回填,保存即可!
可以参考这么写,两种上传都各有千秋,可以根据具体选择来做!
{ "Version": "2012-10-17", "Id": "ExamplePolicy01", "Statement": [ { "Sid": "ExampleStatement01", "Effect": "Allow", "Principal": { "AWS": "arn:aws-cn:iam::Account-ID:user/Dave" }, "Action": [ "s3:GetObject", "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws-cn:s3:::examplebucket/*", "arn:aws-cn:s3:::examplebucket" ] } ] }