از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
مثال: یک فایل را با Boto در AWS S3 آپلود کنید
سرفصلهای مطلب
کد مثال
خدمات وب آمازون (AWS) مجموعه ای از مجموعه خدمات بسیار محبوب برای وب سایت ها و برنامه ها است، بنابراین دانستن روش تعامل با سرویس های مختلف مهم است. در اینجا، ما تمرکز می کنیم روی را سرویس ذخیره سازی ساده (S3)، که در اصل یک سرویس ذخیره فایل است.
همه فایل ها باید به یک سطل اختصاص داده شوند که نامی به آن اختصاص داده شده و می توان توسط آن آدرس دهی کرد http://s3.amazonaws.com/{bucket}/{key}
. به هر فایل یک کلید منحصر به فرد اختصاص داده می شود که می تواند بعداً استفاده شود روی برای بازیابی فایل
گزینههای زیادی برای اختصاص دادن به سطلها و فایلها (رمزگذاری، ACL و غیره) وجود دارد، اما در اینجا زیاد به آن نمیپردازیم. فقط به ارجاع به “خواندن عمومی” توجه کنید، که اجازه می دهد فایل توسط هر کسی دانلود شود.
کد
کد زیر نشان می دهد که در پایتون با استفاده از بوتو، چگونه یک فایل را در S3 آپلود کنیم.
import os
import boto
from boto.s3.key import Key
def upload_to_s3(aws_access_key_id, aws_secret_access_key, file, bucket, key, callback=None, md5=None, reduced_redundancy=False, content_type=None):
"""
Uploads the given file to the AWS S3
bucket and key specified.
callback is a function of the form:
def callback(complete, total)
The callback should accept two integer parameters,
the first representing the number of bytes that
have been successfully transmitted to S3 and the
second representing the size of the to be transmitted
object.
Returns boolean indicating success/failure of upload.
"""
try:
size = os.fstat(file.fileno()).st_size
except:
file.seek(0, os.SEEK_END)
size = file.tell()
conn = boto.connect_s3(aws_access_key_id, aws_secret_access_key)
bucket = conn.get_bucket(bucket, validate=True)
k = Key(bucket)
k.key = key
if content_type:
k.set_metadata('Content-Type', content_type)
sent = k.set_contents_from_file(file, cb=callback, md5=md5, reduced_redundancy=reduced_redundancy, rewind=True)
file.seek(0)
if sent == size:
return True
return False
با استفاده از کد
و در اینجا روش استفاده از کد است:
AWS_ACCESS_KEY = 'your_access_key'
AWS_ACCESS_SECRET_KEY = 'your_secret_key'
file = open('someFile.txt', 'r+')
key = file.name
bucket = 'your-bucket'
if upload_to_s3(AWS_ACCESS_KEY, AWS_ACCESS_SECRET_KEY, file, bucket, key):
print 'It worked!'
else:
print 'The upload failed...'
boto
با خیلی بیشتر از S3 کار می کند، شما همچنین می توانید به آن دسترسی داشته باشید EC2، SES، SQSو تقریباً هر سرویس AWS دیگری. اسناد Boto عالی هستند، بنابراین خواندن آنها باید ایده خوبی در مورد روش استفاده از سایر خدمات به شما بدهد. اما اگر نه، نمونههای Boto بیشتری مانند روش بازیابی فایلها از S3 ارسال خواهیم کرد.
منابع
منتشر شده در 1403-01-30 15:22:04