AWS S3 (Simple Storage Service) çok yönlü ve oldukça yetenekli bir bulut depolama çözümüdür. Bu yazıda ana hatlarıyla Python Boto3 modülü üzerinden kullanım örnekleri ile S3 servisi detaylandırılmaya çalışılacaktır.
S3 Nedir?
Aşağıdaki akışta; solda belirtilen veri çeşitliliğini (Log files, Videos, Pictures, Archive files …) turuncu kutu içindeki yetenekler (access control, cost optimization, replication, security…) ile depolayabilen ve sağda belirtilen AWS hizmetleri yada 3.parti uygulamalar (AI, ML, Advance Analytic…) ile entegre şekilde işlenerek analitik süreçlere dahil edebilen bir depolama çözümünden bahsedilmektedir.
Boto3 Nedir?
AWS hizmetlerinin Python üzerinden kullanımı için hazırlanmış bir SDK‘dir. Boto3 aracılığıyla S3, EC2, DynamoDB gibi bir çok AWS ürünü Python ile kullanılabilir.
AWS S3 Arayüzü
Bucket kavramı bir region altında ve kendine özel tanımlarla (ilk görselde belirtilen security, cost optimization gibi tanımlar) yaratılabilen bir tür çatı klasör olarak düşünülebilir.
Bucket içeriğine girdiğimizde mevcut folder mantığında bir yapı sunulur. Aşağıda kırmızı ile işaretli kısımlarda erişim, yetkilendirme, yönetme gibi başlıklar özelleştirilerek objeler organize edilebilir.
Python Üzerinden S3 Erişimi
Boto3 modülü kullanılarak session yaratılır. Ardından session üzerinden istenen fonksiyonlar kullanılabilir.
Session açılan S3 servisi üzerindeki bucket listesinin döndürülmesi aşağıdaki şekilde sağlanabilir.
import boto3
def s3_bucket_list():
session = boto3.session.Session(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key
)
s3 = session.client("s3", region_name=region_name)
response = s3.list_buckets()
# Output the bucket names
print('Existing buckets:')
for bucket in response['Buckets']:
print(f' {bucket["Name"]}')
if __name__ == '__main__':
s3_bucket_list()
OUTPUT:
D:\dev_python\aws_s3\venv\Scripts\python.exe D:\dev_python\aws_s3\main.py
Existing buckets:
alimesut
boto-sample
boto-samples
mybucket-mesut
mybucket-mesut2
Process finished with exit code 0
Yeni bir bucket yaratmak için aşağıdaki script kullanılabilir.
import boto3
def s3_create_bucket():
session = boto3.session.Session(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key
)
s3 = session.client("s3", region_name=region_name)
s3.create_bucket(Bucket='mybucket-mesut3',
CreateBucketConfiguration={'LocationConstraint': 'eu-west-2'})
if __name__ == '__main__':
s3_create_bucket()
OUTPUT:
D:\dev_python\aws_s3\venv\Scripts\python.exe D:\dev_python\aws_s3\main.py
Process finished with exit code 0
Kaynaklar:
https://www.radishlogic.com/aws/how-to-load-a-json-file-from-s3-to-a-python-dictionary-using-boto3/
https://note.nkmk.me/en/python-dict-get/
https://stackoverflow.com/questions/31092056/how-to-create-a-s3-bucket-using-boto3
__________________________________________________________________________
Ali Mesut Karadeniz