Bài viết này mình sẽ hướng dẫn các bạn upload file, hình ảnh tới Amazon S3 – Dịch vụ lưu trữ file nổi tiếng của Amazon. Để thực hiện các bạn vui lòng tham khảo các bài viết sau:
Cài đặt thư viện boto3 của Amazon Web Services
Để cài đặt thư viện boto3 chúng ta sử dụng công cụ quản lý pip3 của Python 3
pip3 install boto3
Kiểm tra version sau khi cài đặt bằng lệnh pip3 show boto3
Upload file tới Amazon S3 sử dụng Python 3
Để upload file chúng ta cần các thông tin sau:
- <ENDPOINT_URL>: Đường dẫn API của Amazon S3. VD: https://s3.ap-northeast-1.amazonaws.com. Với ap-northeast-1 là region mà bạn muốn upload tới.
- <ACCESS_KEY>: Access Key
- <SECRET_KEY>: Secret Key
- <BUCKET_NAME>: Tên của bucket
Source python 3 để upload
#!/usr/bin/python3 import os import boto3 import mimetypes from datetime import datetime image_path = '/home/vinasupport/Pictures/vinasupport.jpg' endpoint_url = '<ENDPOINT_URL>' access_key = '<ACCESS_KEY>' secret_key = '<SECRET_KEY>' region = '<REGION_NAME>' bucket_name = 'vinasupport.com' app_url = 'https://s3-ap-northeast-1.amazonaws.com/vinasupport.com' # Create Session session = boto3.Session( region_name=region, aws_access_key_id=access_key, aws_secret_access_key=secret_key, ) # Get bucket resource s3 = session.resource('s3', endpoint_url=endpoint_url) bucket = s3.Bucket(bucket_name) # bucket.put_object(Key='Test/') image_name = os.path.basename(image_path) date_now = datetime.now() upload_path = "uploads/{:%Y/%m/%d}/{}".format(date_now, image_name) upload_url = "{}/uploads/{:%Y/%m/%d}/{}".format(app_url, date_now, image_name) content_type = mimetypes.guess_type(image_path) s3.meta.client.upload_file(image_path, bucket_name, upload_path, ExtraArgs={ 'ACL': 'public-read', 'ContentType': content_type[0] }) # List files and folders for obj in bucket.objects.filter(Prefix='uploads/'): print('{0}:{1}'.format(bucket.name, obj.key))
Kết quả:
Bạn đã upload file thành công đến bucket: vinasupport.com
Trên giao diện quản lý