DevOps & SRE
استفاده از S3 با کمک Boto3 - بخش دوم
در بخشاول توضیجات لازم در خصوص S3 چی هست ؟ Boto3 چه کاربردی داره ؟ ...
توضیح دادیم، حالا بریم که یکم بیشتر باهاش سر و کله بزنیم.
Objects: listing, downloading, uploading, copy & deleting
برای لیست کردن و دیدن Object های داخل یک Bucket از فانکشن s3.list_objects استفاده میکنیم، آرگومان MaxKeys حداکثر تعداد Objectهایی که میخوایم لیست بشه رو تعیین می کند. یک آرگومان کاربردیه دیگه که این function داره Prefix است، میتونیم فقط Object هایی رو list کنیم که نامشان با یک پیشوند خاص شروع شده.
# List objects present in a bucket
response = s3.list_objects(
Bucket=?,
MaxKeys=10
Prefix="only_files_starting_with_this_string"
)
می تونیم از ()upload_file برای آپلود فایلی به نام ?، در Bucket مدنظرمون با نام ? ذخیره کنیم.
به طور مشابه، ()download_file فایلی به نام ? را در Bucket مدنظرمون به صورت محلی با نام ? ذخیره می کند.
# Uploading and downloading files
s3.upload_file(Filename=?, Bucket=?, Key=?)
s3.download_file(Filename=?, Bucket=?, Key=?)
کپی یک ?Object از یک Bucket به Bucketای دیگر با نامی? متفاوت :
# Copy Object's
copy_source = {
'Bucket': 'mybucket?',
'Key': 'mykey?'
}
s3.meta.client.copy(copy_source?, 'otherbucket?', 'otherkey?')
حذف Object هم مشابه حذف Bucket است، فقط باید نام Bucket و نام Object مدنظرُ به delete_object پاس بدیم.
# Delete object
s3.delete_object(Bucket=?, Key=?)
چگونه سایز کلی Bucket را محاسبه کنیم
برای محاسبه Total size یک Bucket دو راه داریم (البته تا جایی که من کند و کاو کردم ?)
راه اول استفاده از boto3 ای هست که ما انقدر راجبش حرف زدیم، که من برای Cephای که داشتم استفاده کردم :
ceph_my_bucket = s3.Bucket("voho")
for my_bucket_object in ceph_my_bucket.objects.all():
ceph_total_size += my_bucket_object.size
ceph_totalsize_gb = ceph_total_size/1000/1024/1024
print(ceph_totalsize_gb)
راه دوم استفاده از کتابخانه rgwadmin است :
from rgwadmin import RGWAdmin
rgw = RGWAdmin(
access_key='MY_ACCESS_KEY',
secret_key='MY_SECRET_KEY',
server='example.com'
)
bucket = rgw.get_bucket(bucket='voho')
size = bucket.get('usage', {}).get('rgw.main', {}).get('size_kb', 0)
print (size)
خروجی rgw یک JSON است که از تعداد Object ها تا سایز به KB و bucket_quota و ... در اختیار ما میزاره.
مطلبی دیگر از این انتشارات
معرفی کتابخانه SolidJS
مطلبی دیگر از این انتشارات
جمع آوری لاگ های Kubernetes Pods با استفاده از Fluentd - بخش اول
مطلبی دیگر از این انتشارات
راه اندازی elasticsearch در kubernetes