Data laken rakentaminen S3:een
Suunnittele S3-pohjainen data lake, jossa on saapumis-, käsittely- ja kuratoitu alue, sovella bucket-käytäntöjä ja järjestä tiedot osioittain kyselyiden tehostamiseksi.
Data laken rakentaminen S3:een on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.
Mikä on data lake?
Data lake on keskitetty tietovarasto, joka tallentaa rakenteista, puolirakenteista ja rakenteetonta dataa kaikissa mittakaavoissa. Data warehousesta poiketen data lake säilyttää datan raakamuodossa ja alkuperäisessä muodossa, kunnes sitä tarvitaan analysointiin. Amazon S3 on AWS:n yleisin data lake -ratkaisujen perusta sen kestävyyden, skaalautuvuuden ja analytiikkapalveluihin integroitumisen ansiosta.
Data lake -vyöhykkeiden arkkitehtuuri
Hyvin suunnitellussa S3-data lakessa käytetään kolmea loogista vyöhykettä: Landing Zonea (raaka-aineiston vastaanotto, muuttamaton), Processing Zonea (puhdistettu ja muunnettu) ja Curated Zonea (analytiikkaan valmis, liiketoiminnan hyödynnettävissä). Kukin vyöhyke on yleensä erillinen S3-prefix tai bucket. Tätä mallia kutsutaan joskus medallion-arkkitehtuuriksi (bronze, silver, gold).
# 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-bucket-rakenteen luominen
Luokaa AWS CLI:n avulla versioitu ja salattu S3-bucket ja käyttäkää prefixejä kullekin vyöhykkeelle. Ottakaa versiointi käyttöön, jotta uudelleenkäsittelyssä voidaan aina palata raakalähteeseen, ja ottakaa palvelinpuolen salaus (SSE-S3 tai SSE-KMS) käyttöön levossa olevalle datalle. Estäkää kaikki julkinen käyttöoikeus, jotta data pysyy yksityisenä.
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"}}]}'Bucket-käytäntöjen soveltaminen vyöhykkeiden käyttöoikeuksiin
Kullakin vyöhykkeellä tulee olla oma käyttöoikeuskäytäntönsä, jotta eri tiimit ja palvelut voivat käsitellä vain tarvitsemiaan tietoja. Esimerkiksi datan vastaanottamisen rooleille annetaan s3:PutObject-käyttöoikeus landing-prefixiin, ETL-rooleille lukuoikeus landing-vyöhykkeelle ja kirjoitusoikeus processing-vyöhykkeelle sekä analytiikkarooleille vain lukuoikeus curated-vyöhykkeelle. Näin data laken sisällä noudatetaan vähimpien oikeuksien periaatetta.
# 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/*"
}
]
}Datan osiointi kyselytehokkuutta varten
Osiointi järjestää datan S3:ssa kansiohierarkioihin, jotka vastaavat kyselyiden predikaatteja (esimerkiksi vuosi/kuukausi/päivä tai alue/palvelu). Kun Athena tai Glue lukee osioitua dataa, se käsittelee vain olennaiset osiot koko tietoaineiston sijaan, mikä vähentää merkittävästi kustannuksia ja kyselyaikaa. Hyvä osioavain esiintyy usein WHERE-lausekkeissa.
# 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 automaticallySarakepohjaiset muodot: Parquet ja ORC
Datan tallentaminen sarakepohjaisessa muodossa, kuten Apache Parquet- tai ORC-muodossa (Optimised Row Columnar), parantaa merkittävästi analyyttisten kyselyiden suorituskykyä ja pienentää S3-datan lukukustannuksia. Sarakepohjaiset muodot mahdollistavat sen, että kyselykoneet lukevat vain tarvittavat sarakkeet, pakkaavat toistuvat arvot tehokkaasti ja tukevat predikaattien siirtoa käsittelyvaiheeseen. Muuntakaa raaka CSV- tai JSON-data aina Parquet-muotoon curated-vyöhykkeellä.
# 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')S3 Lifecycle Policies kustannusten hallintaan
Landing-vyöhykkeen data kasvaa jatkuvasti, mutta vanhoja raakatiedostoja käytetään uudelleen harvoin. Käyttäkää S3 Lifecycle Policies -käytäntöjä siirtämään raakadata automaattisesti edullisempiin tallennusluokkiin ajan kuluessa. Siirtäkää esimerkiksi landing/-hakemiston objektit S3 Glacier Instant Retrieval -tallennusluokkaan 30 päivän jälkeen ja Glacier Deep Archive -tallennusluokkaan 90 päivän jälkeen. Tämä voi yksinään pienentää historiadatan tallennuskustannuksia 70–90 prosenttia.
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 tarkkarajaiseen käyttöoikeuksien hallintaan
AWS Lake Formation toimii S3:n ja Glue Data Cataloguen päällä ja tarjoaa taulukko-, sarake- ja rivitason käyttöoikeuksien hallinnan ilman monimutkaisten bucket-käytäntöjen kirjoittamista. Lake Formation integroituu Athenaan, Redshift Spectr元umiin ja EMR:ään. Se on suositeltu lähestymistapa, kun useat tiimit tekevät kyselyitä samasta data lakesta ja tarvitsevat erilaiset näkyvyydet arkaluonteisiin sarakkeisiin, kuten henkilötietoihin tai taloustietoihin.
# 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"
}
}'S3 Event Notifications -ilmoitukset aineiston vastaanoton käynnistiminä
Kun uusi tiedosto saapuu S3:n landing-vyöhykkeelle, käsittely on käynnistettävä automaattisesti. Käyttäkää S3 Event Notifications -ilmoituksia julkaisemaan tapahtuma SQS:ään, SNS:ään tai Lambdaan aina, kun objekti luodaan. Lambda-funktio tai Glue-työnkulku poimii uuden tiedoston, validoi sen ja siirtää sen putken läpi. Näin syntyy täysin automatisoitu ja tapahtumaohjattu data laken aineiston vastaanottoprosessi.
# 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/"}]}
}
}]
}'Datan salaus ja vaatimustenmukaisuus data lakessa
Tuotantokäyttöön tarkoitetun data laken on käytettävä salausta kaikkialla. Käyttäkää arkaluonteisen datan SSE-KMS-salauksessa AWS KMS Customer Managed Keys (CMK) -avaimia ja edellyttäkää jokaiselle käyttäjälle erikseen määritettyjä avainmyönnytyksiä. Ottakaa S3 Object Lock käyttöön Compliance-tilassa sääntelyyn liittyvälle datalle, jota ei saa poistaa tai korvata. Käyttäkää Macieta löytämään ja ilmoittamaan automaattisesti lakessa säilytetyistä henkilötiedoista.
# 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"
}
}
}Usean tilin välinen data lake -käyttö
Suurissa organisaatioissa data laken S3-bucket sijaitsee keskitetyn data platform -tilin alla, kun taas kuluttajatiimit toimivat erillisillä AWS-tileillä. Myöntäkää käyttöoikeus yhdistämällä bucket-käytännöt (joissa määritetään kuluttajatilin principal) ja kuluttajatilin IAM-roolit, jotka ottavat käyttöön tilien väliset käyttöoikeudet. Resource Access Manager (RAM) on vaihtoehto Lake Formation -pohjaiseen jakamiseen.
# 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/*"
]
}Pikatarkistus
Testatkaa ymmärrystänne tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteistä.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte, että data lakes käyttävät S3:a landing-, processing- ja curated-vyöhykkeineen, osiointi ja Parquet-muoto pienentävät Athena-kyselyiden kustannuksia ja Lake Formation tarjoaa tarkkarajaisen sarake- ja rivitason käyttöoikeuksien hallinnan. Seuraavaksi tutustumme AWS Glueen palvelimettomaan ETL:ään ja Glue Data Catalogueen.
Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Data laken rakentaminen S3:een” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “Data laken rakentaminen S3:een”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Data laken rakentaminen S3:een”?
Suunnittele S3-pohjainen data lake, jossa on saapumis-, käsittely- ja kuratoitu alue, sovella bucket-käytäntöjä ja järjestä tiedot osioittain kyselyiden tehostamiseksi. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Data laken rakentaminen S3:een”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?
Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Data laken rakentaminen S3:een
- AWS Glue: ETL ja datakatalogi
- Amazon Athena: palvelimeton SQL S3:ssa
- Kinesis Streams, Firehose ja reaaliaikainen analytiikka