Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ดาวน์โหลด S3 Objects ด้วย Python และ Boto 3

ในโพสต์นี้ เราแสดงตัวอย่างวิธีการดาวน์โหลดไฟล์และรูปภาพจากบัคเก็ต aws S3 โดยใช้ไลบรารี Python และ Boto 3

Boto เป็น AWS SDK สำหรับ Python มีฟังก์ชันที่ใช้งานง่ายซึ่งสามารถโต้ตอบกับบริการของ AWS เช่นบัคเก็ต EC2 และ S3 ได้

ดาวน์โหลดวัตถุ S3 ด้วย Python และ Boto 3

ในตัวอย่างต่อไปนี้ เราดาวน์โหลดไฟล์หนึ่งไฟล์จากบัคเก็ต S3 ที่ระบุ

ก่อนอื่น เราต้องสร้างไคลเอนต์ S3 โดยใช้ boto3.client(s3) .

import boto3

BUCKET_NAME = 'my_s3_bucket'
BUCKET_FILE_NAME = 'my_file.json'
LOCAL_FILE_NAME = 'downloaded.json'

def download_s3_file():
    s3 = boto3.client('s3')
    s3.download_file(BUCKET_NAME, BUCKET_FILE_NAME, LOCAL_FILE_NAME)

download_file วิธีรับสามพารามิเตอร์:

พารามิเตอร์แรกคือชื่อที่เก็บข้อมูลใน S3 พารามิเตอร์ที่สองคือไฟล์ (ชื่อและนามสกุล) ที่เราต้องการดาวน์โหลด และพารามิเตอร์ที่สามคือชื่อของไฟล์ที่เราต้องการบันทึกเป็น

ดาวน์โหลดออบเจ็กต์ S3 ทั้งหมดในบัคเก็ตที่ระบุ

ในตัวอย่างต่อไปนี้ เราดาวน์โหลดอ็อบเจ็กต์ทั้งหมดในบัคเก็ต S3 ที่ระบุ

ข้อมูลโค้ดจะถือว่าไฟล์อยู่ในรูทของบัคเก็ตโดยตรง ไม่ใช่ในโฟลเดอร์ย่อย

import boto3

def download_all_files():
    #initiate s3 resource
    s3 = boto3.resource('s3')
    # select bucket
    my_bucket = s3.Bucket('bucket_name')
    # download file into current directory
    for s3_object in my_bucket.objects.all():
        filename = s3_object.key
        my_bucket.download_file(s3_object.key, filename)

ดาวน์โหลดออบเจกต์ทั้งหมดในบัคเก็ต S3 ของโฟลเดอร์ย่อย

รหัสต่อไปนี้แสดงวิธีการดาวน์โหลดไฟล์ที่อยู่ในโฟลเดอร์ย่อยในบัคเก็ต S3

สมมติว่าไฟล์อยู่ในที่เก็บข้อมูลและตำแหน่งต่อไปนี้:

BUCKET_NAME = 'images'

PATH = pets/cats/

import boto3
import os

def download_all_objects_in_folder():
    s3_resource = boto3.resource('s3')
    my_bucket = s3_resource.Bucket('images')
    objects = my_bucket.objects.filter(Prefix='pets/cats/')
    for obj in objects:
        path, filename = os.path.split(obj.key)
        my_bucket.download_file(obj.key, filename)

ข้อมูลอ้างอิง

เอกสาร Boto 3