Membangun Danau Data di S3
Rancang danau data berbasis S3 dengan zona pendaratan, pemrosesan, dan kurasi, terapkan kebijakan bucket, lalu atur data berdasarkan partisi agar kueri lebih efisien.
Membangun Danau Data di S3 adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa Itu Data Lake?
Data lake adalah repositori terpusat yang menyimpan data terstruktur, semiterstruktur, dan tidak terstruktur dalam skala apa pun. Berbeda dengan data warehouse, data lake menyimpan data dalam format mentah dan aslinya hingga data tersebut diperlukan untuk analisis. Amazon S3 adalah fondasi yang paling umum untuk data lake di AWS karena daya tahannya, skalabilitasnya, dan integrasinya dengan layanan analitik.
Arsitektur Zona Data Lake
Data lake S3 yang dirancang dengan baik menggunakan tiga zona logis: Landing Zone (ingest mentah, tanpa perubahan), Processing Zone (telah dibersihkan dan ditransformasi), serta Curated Zone (siap dianalisis dan dapat digunakan oleh bisnis). Setiap zona biasanya berupa prefiks atau bucket S3 terpisah. Pola ini terkadang disebut arsitektur medali (perunggu, perak, emas).
# Example zone structure inside one S3 bucket
# s3://my-data-lake/
# landing/ <- raw ingest from source systems
# processing/ <- cleansed, validated data
# curated/ <- aggregated, analytics-readyMembuat Struktur Bucket S3
Gunakan AWS CLI untuk membuat bucket S3 yang terenkripsi dan memiliki versioning, lalu terapkan prefiks untuk setiap zona. Aktifkan versioning agar pemrosesan ulang selalu dapat kembali ke sumber mentah, dan aktifkan enkripsi sisi server (SSE-S3 atau SSE-KMS) untuk data saat tersimpan. Blokir semua akses publik agar data tetap privat.
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"}}]}'Menerapkan Kebijakan Bucket untuk Akses Zona
Setiap zona harus memiliki kebijakan akses sendiri sehingga tim dan layanan yang berbeda hanya dapat mengakses bagian yang mereka perlukan. Misalnya, peran ingest data mendapatkan akses s3:PutObject pada prefiks landing, peran ETL mendapatkan akses baca pada landing dan akses tulis pada processing, sedangkan peran analitik mendapatkan akses hanya-baca pada curated. Hal ini menerapkan hak akses minimum di dalam data lake.
# 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/*"
}
]
}Mempartisi Data untuk Efisiensi Kueri
Partisi mengatur data di S3 berdasarkan hierarki folder yang sesuai dengan predikat kueri (misalnya tahun/bulan/hari atau wilayah/layanan). Saat Athena atau Glue membaca data yang dipartisi, layanan tersebut hanya memindai partisi yang relevan, bukan seluruh kumpulan data, sehingga biaya dan waktu kueri berkurang secara drastis. Kunci partisi yang baik adalah kunci yang sering muncul dalam klausa WHERE.
# 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 automaticallyFormat Kolumnar: Parquet dan ORC
Menyimpan data dalam format kolumnar seperti Apache Parquet atau ORC (Optimised Row Columnar) sangat meningkatkan performa kueri analitik dan mengurangi biaya pemindaian data S3. Format kolumnar memungkinkan mesin kueri membaca hanya kolom yang diperlukan, memampatkan nilai berulang secara efisien, dan mendukung predicate pushdown. Selalu konversikan CSV atau JSON mentah ke Parquet di zona curated.
# 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')Kebijakan Siklus Hidup S3 untuk Manajemen Biaya
Data di zona landing terus bertambah, tetapi file mentah yang lebih lama jarang diakses kembali. Gunakan Kebijakan Siklus Hidup S3 untuk secara otomatis memindahkan data mentah ke kelas penyimpanan yang lebih murah seiring waktu. Misalnya, pindahkan objek dalam landing/ ke S3 Glacier Instant Retrieval setelah 30 hari dan ke Glacier Deep Archive setelah 90 hari. Langkah ini saja dapat mengurangi biaya penyimpanan data historis sebesar 70–90%.
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"}
]
}]
}'Lake Formation untuk Akses Terperinci
AWS Lake Formation berada di atas S3 dan Glue Data Catalogue untuk menyediakan kontrol akses tingkat tabel, kolom, dan baris tanpa menulis kebijakan bucket yang kompleks. Lake Formation terintegrasi dengan Athena, Redshift Spectrum, dan EMR. Pendekatan ini lebih disukai ketika beberapa tim melakukan kueri pada data lake yang sama dan memerlukan visibilitas berbeda terhadap kolom sensitif seperti PII atau data keuangan.
# 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"
}
}'Notifikasi Peristiwa S3 untuk Pemicu Ingest
Saat file baru masuk ke zona landing S3, Anda perlu memicu pemrosesan secara otomatis. Gunakan Notifikasi Peristiwa S3 untuk menerbitkan peristiwa ke SQS, SNS, atau Lambda setiap kali objek dibuat. Fungsi Lambda atau alur kerja Glue kemudian mengambil file baru tersebut, memvalidasinya, dan memindahkannya melalui pipeline. Dengan demikian, tercipta proses ingest data lake yang sepenuhnya otomatis dan digerakkan oleh peristiwa.
# 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/"}]}
}
}]
}'Enkripsi dan Kepatuhan di Data Lake
Data lake produksi harus menerapkan enkripsi di semua tempat. Gunakan AWS KMS Customer Managed Keys (CMK) untuk SSE-KMS pada data sensitif, dengan mewajibkan grant kunci secara eksplisit untuk setiap konsumen. Aktifkan S3 Object Lock dalam mode Compliance untuk data yang diatur oleh peraturan dan tidak boleh dihapus atau ditimpa. Gunakan Macie untuk secara otomatis menemukan dan memberi peringatan tentang PII yang tersimpan di data lake.
# 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"
}
}
}Akses Data Lake Lintas Akun
Dalam organisasi besar, bucket S3 data lake berada di akun platform data terpusat, sedangkan tim konsumen beroperasi dalam akun AWS yang terpisah. Berikan akses menggunakan kombinasi kebijakan bucket (yang mencantumkan principal akun konsumen) dan peran IAM di akun konsumen yang mengambil izin lintas akun. Resource Access Manager (RAM) merupakan alternatif untuk berbagi berbasis Lake Formation.
# 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/*"
]
}Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahwa: data lake menggunakan S3 dengan zona landing, processing, dan curated, partisi dan format Parquet mengurangi biaya kueri Athena, serta Lake Formation menyediakan kontrol akses terperinci pada tingkat kolom dan baris. Selanjutnya, kita akan membahas AWS Glue untuk ETL nirserver dan Glue Data Catalogue.
Belajar Cloud & IT Cert Prep dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 150
- Pelajaran
- 600
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membangun Danau Data di S3” gratis?
Ya — teks lengkap “Membangun Danau Data di S3” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membangun Danau Data di S3”?
Rancang danau data berbasis S3 dengan zona pendaratan, pemrosesan, dan kurasi, terapkan kebijakan bucket, lalu atur data berdasarkan partisi agar kueri lebih efisien. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?
Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Membangun Danau Data di S3” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membangun Danau Data di S3
- AWS Glue: ETL dan Katalog Data
- Amazon Athena: SQL Tanpa Server di S3
- Kinesis Streams, Firehose, dan Analitik Waktu Nyata