AWS S3 – 1 (w/ Boto3)

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.

 Select Bucket Names
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.

 Create New Bucket
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

Yorum bırakın