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"
            ]
        }
    ]
}

原文地址:https://www.cnblogs.com/zhe-hello/p/12102512.html

时间: 2024-08-12 03:20:25

aws 的 s3 put_object vs upload_file的相关文章

文件存到aws的S3后, 调用getimagesize失败分析

一.问题 将图片在windows下用图片查看器修改后,上传到s3中,调用getimagesize获取图片信息总是返回false,其它图片正常: 代码如下: $fileName = 's3://sdk1/20150317/174290_1_1428371.JPG'; $size = getimagesize($fileName);var_dump($size); 以上代码总是输出false. 即部分图片调用成功,部分调用失败: 图片上传后,可以对上传的临时文件调用getimagesize获取图片信

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

Python 设置S3文件属性中元数据的Content-Encoding值

背景: 使用脚本从S3下载下来的CSV文件打开发现是乱码,但是在网页上面点击下载按钮下载后却能正常打开. 研究发现,在S3文件属性的元数据中有Content-Encoding值是gzip 浏览器下载的时候会识别这个值,然后在帮你自动减压后下载. 但是利用官方boto3包的download_fileobj()方法中,却无法指定对应的参数(不知道以后不会优化). 下载的话就比较简单了,下载后直接利用gzip解压后再处理数据即可. import boto3 import gzip import csv

Oracle RMAN 备份到AWS 云

首次尝试将oracle数据库备份到AWS 云,以前一般都是备份到磁带库或者磁盘,现在有了云就更方便了.这里主要是使用AWS 的S3存储作为SBT设备进行备份.至于什么是AWS,什么是S3,麻烦大家参考:http://www.amazonaws.cn/products/  具体操作步骤如下: 先决条件: 你要有一个AWS accunt(AWS access key ID 与 AWS secret key),你还需要有ORACLE的OTN账号与密码 1.安装Centos 6.6 64位操作系统(具体

s3 api接口的调用

最近公司使用s3做文件存储服务器,因此在程序中需要调用s3的api,目前程序中使用了python和java版本的s3的api,简单做下记录,方便以后使用. 一.s3 api使用python版 1.安装boto3的sdk pip install boto3==1.4.7 2.创建s3的api客户端 import boto3from botocore.client import Configimport osimport sysimport threading #创建s3链接,如果s3服务器是第四代

aws使用kops方式部署k8s

1.基础准备 yum install wget安装kops wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install ./epel-release-latest-*.noarch.rpm yum -y install python-pippip install --upgrade pippip install awscli安装kubectlcurl -o kubectl http

后台成绩管理第一项任务;shiny翻译

Persistent data storage in Shiny apps Last Updated: 09 Mar 2017 By: Dean Attali Shiny apps often need to save data, either to load it back into a different session or to simply log some information. However, common methods of storing data from R may

闲的时候看看(怎么可能有闲的时候)

<程序猿幼崽上路指南> UNIX编程艺术UNIX网络编程代码大全// apache的源码<Pragmatic Programmer>.<The Art of UNIX Programming>.<Elements of Programming Style>和<The Productive Programmer>Large-Scale C++ Software Design 分析与设计://c++的对象机制,设计模式,大规模设计Object-Ori

分布式系统学习

两个帖子:知乎, Quora @严林 推荐的三篇论文 1.Sinfonia: A New Paradigm for Building Scalable Distributed Systems,这篇论文是SOSP2007的Best Paper,阐述了一种构建分布式文件系统的范式方法,个人感觉非常有用.淘宝在构建TFS.OceanBase和Tair这些系统时都充分参考了这篇论文. 2. The Chubby lock service for loosely-coupled distributed s