aws 的 s3 put_object vs upload_file

Posted zhe-hello

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"
            ]
        }
    ]
}

以上是关于aws 的 s3 put_object vs upload_file的主要内容,如果未能解决你的问题,请参考以下文章

AWS EFS vs EBS vs S3(差异和何时使用?)[关闭]

2019-07-04 AWS S3配置静态网站

Boto3 S3 更新现有对象的元数据

AWS S3 SDK有没有下载整个文件夹下所有文件或获取到所有文件路径的方法

多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration

使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象