S3 Üzerinde Veri Gölü Oluşturma
Gelen, işleme ve küratörlü bölgelerden oluşan S3 tabanlı bir veri gölü tasarlayın, paket ilkelerini uygulayın ve sorgu verimliliği için verileri bölümlere göre düzenleyin.
S3 Üzerinde Veri Gölü Oluşturma, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
Data Lake Nedir?
Bir data lake, her ölçekte yapılandırılmış, yarı yapılandırılmış ve yapılandırılmamış verileri depolayan merkezî bir depodur. Bir veri ambarından farklı olarak data lake, analiz için ihtiyaç duyulana kadar verileri ham, yerel biçiminde saklar. Amazon S3, dayanıklılığı, ölçeklenebilirliği ve analiz hizmetleriyle bütünleşmesi nedeniyle AWS üzerindeki data lake'ler için en yaygın temeldir.
Data Lake Bölgeleri Mimarisi
İyi tasarlanmış bir S3 data lake, üç mantıksal bölge kullanır: Landing Zone (ham alım, değiştirilmemiş), Processing Zone (temizlenmiş ve dönüştürülmüş) ve Curated Zone (analize hazır, iş birimleri tarafından kullanılabilir). Her bölge genellikle ayrı bir S3 ön eki veya paketi olur. Bu kalıp bazen madalyon mimarisi (bronz, gümüş, altın) olarak da adlandırılır.
# Example zone structure inside one S3 bucket
# s3://my-data-lake/
# landing/ <- raw ingest from source systems
# processing/ <- cleansed, validated data
# curated/ <- aggregated, analytics-readyS3 Paketi Yapısının Oluşturulması
Sürüm oluşturma etkinleştirilmiş, şifreli bir S3 paketi oluşturmak ve her bölge için ön ekler uygulamak üzere AWS CLI'yi kullanın. Yeniden işleme işleminin her zaman ham kaynağa dönebilmesi için sürüm oluşturmayı etkinleştirin; bekleyen veriler için de sunucu tarafı şifrelemeyi (SSE-S3 veya SSE-KMS) etkinleştirin. Verilerin gizli kalması için tüm genel erişimleri engelleyin.
aws s3api create-bucket \
--bucket my-data-lake-123 \
--region us-east-1
aws s3api put-bucket-versioning \
--bucket my-data-lake-123 \
--versioning-configuration Status=Enabled
aws s3api put-bucket-encryption \
--bucket my-data-lake-123 \
--server-side-encryption-configuration \
'{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]}'Bölge Erişimi için Paket İlkelerinin Uygulanması
Her bölgenin kendi erişim ilkesi olmalıdır; böylece farklı ekipler ve hizmetler yalnızca ihtiyaç duydukları kaynaklara erişebilir. Örneğin veri alım rolleri, landing ön ekinde s3:PutObject iznine; ETL rolleri landing üzerinde okuma ve processing üzerinde yazma iznine; analiz rolleri ise curated üzerinde yalnızca okuma iznine sahip olur. Bu, data lake içinde en az ayrıcalık ilkesinin uygulanmasını sağlar.
# Attach a policy that allows the ETL role to read landing/ and write processing/
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:role/ETLRole"},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-data-lake-123/landing/*"
},
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:role/ETLRole"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-data-lake-123/processing/*"
}
]
}Sorgu Verimliliği için Verileri Bölümlere Ayırma
Bölümlere ayırma, S3'te verileri sorgu yüklemlerine karşılık gelen klasör hiyerarşileriyle düzenler (ör. yıl/ay/gün veya bölge/hizmet). Athena veya Glue bölümlere ayrılmış verileri okurken veri kümesinin tamamı yerine yalnızca ilgili bölümleri tarar; bu da maliyeti ve sorgu süresini büyük ölçüde azaltır. İyi bir bölüm anahtarı, WHERE ifadelerinde sıkça kullanılan anahtardır.
# Hive-style partition naming for year/month/day
# s3://my-data-lake-123/curated/sales/
# year=2024/month=01/day=15/part-00000.parquet
# year=2024/month=01/day=16/part-00000.parquet
# year=2024/month=02/day=01/part-00000.parquet
# Athena recognises this naming automaticallySütunlu Biçimler: Parquet ve ORC
Verileri Apache Parquet veya ORC (Optimised Row Columnar) gibi bir sütunlu biçimde depolamak, analitik sorgu performansını büyük ölçüde artırır ve S3 veri tarama maliyetlerini düşürür. Sütunlu biçimler, sorgu motorlarının yalnızca gereken sütunları okumasına, tekrarlanan değerleri verimli şekilde sıkıştırmasına ve yüklem itmesini desteklemesine olanak tanır. Ham CSV veya JSON verilerini curated bölgesinde her zaman Parquet'e dönüştürün.
# Converting CSV to Parquet with AWS Glue (simplified PySpark)
import sys
from awsglue.context import GlueContext
from pyspark.context import SparkContext
sc = SparkContext()
glueContext = GlueContext(sc)
datasource = glueContext.create_dynamic_frame.from_catalog(
database='my_db', table_name='raw_sales')
glueContext.write_dynamic_frame.from_options(
frame=datasource,
connection_type='s3',
connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
format='parquet')Maliyet Yönetimi için S3 Yaşam Döngüsü İlkeleri
Landing bölgesindeki veriler sürekli büyür; ancak eski ham dosyalara nadiren yeniden erişilir. Ham verileri zaman içinde otomatik olarak daha ucuz depolama sınıflarına geçirmek için S3 Lifecycle Policies kullanın. Örneğin landing/ içindeki nesneleri 30 gün sonra S3 Glacier Instant Retrieval'a, 90 gün sonra da Glacier Deep Archive'a taşıyın. Bu yöntem tek başına geçmiş verilerin depolama maliyetlerini %70–90 oranında azaltabilir.
aws s3api put-bucket-lifecycle-configuration \
--bucket my-data-lake-123 \
--lifecycle-configuration '{
"Rules": [{
"ID": "ArchiveLanding",
"Filter": {"Prefix": "landing/"},
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "GLACIER_IR"},
{"Days": 90, "StorageClass": "DEEP_ARCHIVE"}
]
}]
}'Ayrıntılı Erişim için Lake Formation
AWS Lake Formation, karmaşık paket ilkeleri yazmadan tablo, sütun ve satır düzeyinde erişim denetimi sağlamak için S3 ve Glue Data Catalogue üzerinde çalışır. Lake Formation, Athena, Redshift Spectrum ve EMR ile bütünleşir. Birden fazla ekibin aynı data lake'i sorguladığı ve PII ya da finansal veriler gibi hassas sütunlar için farklı görünürlüklere ihtiyaç duyduğu durumlarda tercih edilen yaklaşımdır.
# Grant Lake Formation table access via CLI
aws lakeformation grant-permissions \
--principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:role/AnalystRole \
--permissions SELECT \
--resource '{
"Table": {
"DatabaseName": "my_db",
"Name": "curated_sales"
}
}'Alım Tetikleyicileri için S3 Olay Bildirimleri
S3 landing bölgesine yeni bir dosya geldiğinde işleme sürecini otomatik olarak tetiklemeniz gerekir. Bir nesne oluşturulduğunda SQS, SNS veya Lambda'ya olay yayımlamak için S3 Event Notifications kullanın. Ardından bir Lambda işlevi veya Glue iş akışı yeni dosyayı alır, doğrular ve işlem hattı boyunca ilerletir. Böylece tamamen otomatik, olay güdümlü bir data lake veri alım süreci oluşturulur.
# S3 event notification to trigger Lambda on new object
aws s3api put-bucket-notification-configuration \
--bucket my-data-lake-123 \
--notification-configuration '{
"LambdaFunctionConfigurations": [{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:ProcessNewFile",
"Events": ["s3:ObjectCreated:*"],
"Filter": {
"Key": {"FilterRules": [{"Name": "prefix", "Value": "landing/"}]}
}
}]
}'Data Lake'te Şifreleme ve Uyumluluk
Üretim ortamındaki bir data lake, her yerde şifrelemeyi zorunlu kılmalıdır. Hassas verilerde SSE-KMS için AWS KMS Customer Managed Keys (CMK) kullanın ve her tüketici için açık anahtar yetkilendirmeleri gerektirin. Silinmemesi veya üzerine yazılmaması gereken mevzuata tabi veriler için S3 Object Lock'u Compliance modunda etkinleştirin. Data lake'te depolanan PII verilerini otomatik olarak keşfetmek ve bunlarla ilgili uyarı vermek için Macie kullanın.
# Enforce KMS encryption on all PUT operations via bucket policy
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-data-lake-123/curated/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
}ACCOUNT'lar Arası Data Lake Erişimi
Büyük kuruluşlarda data lake S3 paketi merkezî bir veri platformu ACCOUNT'ında bulunurken tüketici ekipleri ayrı AWS ACCOUNT'larında çalışır. Erişimi, tüketici ACCOUNT'ının sorumlusunu listeleyen paket ilkeleri ile tüketici ACCOUNT'ında ACCOUNT'lar arası izinleri üstlenen IAM rollerinin birleşimini kullanarak verin. Resource Access Manager (RAM), Lake Formation tabanlı paylaşım için bir alternatiftir.
# Bucket policy in central account allows consumer account to read curated/
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999988887777:root"
},
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::my-data-lake-123",
"arn:aws:s3:::my-data-lake-123/curated/*"
]
}Hızlı Kontrol
Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: data lake'ler landing, processing ve curated bölgeleriyle S3 kullanır; bölümlere ayırma ve Parquet biçimi Athena sorgu maliyetlerini azaltır; ayrıca Lake Formation, sütun ve satır düzeyinde ayrıntılı erişim denetimi sağlar. Sırada, sunucusuz ETL için AWS Glue ve Glue Data Catalogue'u inceleyeceğiz.
Sıkça Sorulan Sorular
“S3 Üzerinde Veri Gölü Oluşturma” dersi ücretsiz mi?
Evet — “S3 Üzerinde Veri Gölü Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“S3 Üzerinde Veri Gölü Oluşturma” dersinde ne öğreneceğim?
Gelen, işleme ve küratörlü bölgelerden oluşan S3 tabanlı bir veri gölü tasarlayın, paket ilkelerini uygulayın ve sorgu verimliliği için verileri bölümlere göre düzenleyin. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“S3 Üzerinde Veri Gölü Oluşturma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- S3 Üzerinde Veri Gölü Oluşturma
- AWS Glue: ETL ve Veri Kataloğu
- Amazon Athena: S3 Üzerinde Sunucusuz SQL
- Kinesis Streams, Firehose ve Gerçek Zamanlı Analiz