使用boto3批量上傳圖片到S3

最近在工作中需要把本地的圖片上傳到亞馬遜對象存儲S3中供外鏈訪問必搞。

為了更快的實現(xiàn)囊咏,使用了Python 接口的boto3進行封裝,實現(xiàn)批量上傳圖片到S3

主要有以下的幾個函數(shù):

1梅割、實現(xiàn)S3的連接

# coding: utf-8
import boto3
import os

AWS_ACCESS_KEY_ID = 'xxxx'
AWS_SECRET_ACCESS_KEY = 'xxx'
BUCKET_NAME = 'xxxx'
REGION_NAME = 'xxx'
PHOTO_FOLDER = 'xxxx/photo'


def init_s3_logo_photo(region_name=REGION_NAME, aws_access_key_id=AWS_ACCESS_KEY_ID,
                       aws_secret_access_key=AWS_SECRET_ACCESS_KEY):
    s3 = boto3.resource('s3', region_name=region_name, aws_access_key_id=aws_access_key_id,
                        aws_secret_access_key=aws_secret_access_key)
    return s3

2、實現(xiàn)單個圖片的上傳

def upload_logo_photo(logo_photo_s3=init_s3_logo_photo(), bucket_name=BUCKET_NAME, photo_name=None):
    with open(os.path.join(PHOTO_FOLDER, photo_name), 'rb') as f:
        photo_stream = f.read()
        try:
            # upload logo to s3
            logo_photo_s3.Bucket(bucket_name).put_object(Key=photo_name, Body=photo_stream)
            print("{} upload done".format(photo_name))
        except Exception as e:
            print("upload {} error:{}".format(photo_name, e))

3泌类、實現(xiàn)單個圖片的刪除

def delete_logo_photo_by_name(logo_photo_s3=init_s3_logo_photo(), bucket_name=BUCKET_NAME, photo_name=None):
    try:
        # delete from s3
        logo_photo_s3.Object(bucket_name, photo_name).delete()
        print("Delete {} OK from s3!".format(photo_name))
    except Exception as e:
        print("Delete {} ERROR:{}".format(photo_name, e))

4底燎、實現(xiàn)整個bucket的內(nèi)容的清除

def delete_whole_logo():
    # this func will delete all content in bucket data
    s3 = init_s3_logo_photo()
    b = s3.Bucket(BUCKET_NAME)
    for key in list(b.objects.all()):
        delete_logo_photo_by_name(photo_name=key.key)

5、實現(xiàn)上傳整個文件夾里的圖片并做去除非文件

def upload_logo_photo_by_folder():
    # 1. to get document list
    os.chdir(PHOTO_FOLDER)
    logo_list = os.listdir(PHOTO_FOLDER)

    # 2. which isn't file will be removed from logo_list
    for logo in logo_list:
        if not os.path.isfile(os.path.abspath(logo)):
            logo_list.remove(logo)
        upload_logo_photo(photo_name=logo)


if __name__ == "__main__":
    upload_logo_photo_by_folder()
image
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枢希,一起剝皮案震驚了整個濱河市朱沃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌为流,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秀睛,死亡現(xiàn)場離奇詭異莲祸,居然都是意外死亡椭迎,警方通過查閱死者的電腦和手機田盈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來允瞧,“玉大人,你說我怎么就攤上這事痹升。” “怎么了疼蛾?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵艺配,是天一觀的道長。 經(jīng)常有香客問我转唉,道長,這世上最難降的妖魔是什么鳞芙? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任期虾,我火速辦了婚禮,結果婚禮上镶苞,老公的妹妹穿的比我還像新娘。我一直安慰自己壕鹉,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布晾浴。 她就那樣靜靜地躺著牍白,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茂腥。 梳的紋絲不亂的頭發(fā)上切省,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天帕胆,我揣著相機與錄音,去河邊找鬼芙盘。 笑死歼捐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的豹储。 我是一名探鬼主播淘这,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铝穷!你這毒婦竟也來了?” 一聲冷哼從身側響起晦炊,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤宁脊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后榆苞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡薄疚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年赊琳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躏筏。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖檐什,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乃正,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布荧飞,位于F島的核電站,受9級特大地震影響叹阔,放射性物質(zhì)發(fā)生泄漏传睹。R本人自食惡果不足惜耳幢,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一睛藻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧店印,春花似錦倒慧、人聲如沸按摘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽照激。三九已至,卻和暖如春俩垃,著一層夾襖步出監(jiān)牢的瞬間汰寓,已是汗流浹背口柳。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工跃闹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人望艺。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像找默,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惩激,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容