aws 的 s3 put_object vs upload_file

黑夜流星 2019-12-26

用过aws的人,都知道s3存储东西贼方便。

他的上传有两个方法,

第一个是get_object(),是将文件的内容赋值给body,进行上传,并设置存储桶为上传文件为公开

response = s3.put_object(Bucket=bucket_tmp, Key=file_key, Body=content, ACL="public-read-write")

然后点击对应的文件路径,就有一个下载的s3对象url进行下载,如下图所示,会自动弹出:

aws 的 s3 put_object vs upload_file

第二个是upload_file

s3.upload_file(filename, bucket, key, callback, extra_args)

这种方法,就是上传的时候只需要填入文件的名称就可以实现上传,但是貌似不能设置这个文件的公开需要去配置s3的存储桶信息,那应该怎么办呢,我也没花时间研究,就直接很暴力看了文档,可以这么操作。

First: (这里注意一下使用第一种的上传方式,也要设置桶公开哈)

aws 的 s3 put_object vs upload_file

 Second:是设置文件的公开:点击权限->点击存储桶策略,插入一下信息,

首先点击策略生成器,根据自己需要开通的权限,选择即可或者通过文档自己来编码这个json信息,然后将结果回填,保存即可!

aws 的 s3 put_object vs upload_file

可以参考这么写,两种上传都各有千秋,可以根据具体选择来做!

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

相关推荐