AWS Solutions Architect · leksjon

Bygging av en datasjø på S3

Utform en S3-basert datasjø med soner for landing, behandling og kuraterte data, bruk bucket-policyer, og organiser data etter partisjoner for effektive spørringer

Leksjon 1 av 413 trinn

Bygging av en datasjø på S3 er en gratis leksjon i AWS Solutions Architect på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AWS Solutions Architect, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AWS Solutions Architect inneholder totalt 4 leksjoner.

Hva er en datasjø?

En datasjø er et sentralisert lager som oppbevarer strukturerte, semistrukturerte og ustrukturerte data i alle skalaer. I motsetning til et datavarehus lagrer en datasjø data i sitt rå, opprinnelige format til de trengs for analyse. Amazon S3 er det vanligste fundamentet for datasjøer på AWS på grunn av holdbarheten, skalerbarheten og integrasjonen med analysetjenester.

Arkitektur for datasjøsoner

En veldesignet S3-datasjø bruker tre logiske soner: Landing Zone (rådata, urørt), Processing Zone (renset og transformert) og Curated Zone (klar for analyse og bruk i virksomheten). Hver sone er vanligvis et separat S3-prefiks eller en separat bucket. Dette mønsteret kalles noen ganger en medallion architecture (bronse, sølv, gull).

# Example zone structure inside one S3 bucket
# s3://my-data-lake/
#   landing/    <- raw ingest from source systems
#   processing/ <- cleansed, validated data
#   curated/    <- aggregated, analytics-ready

Opprette S3-bøttestrukturen

Bruk AWS CLI til å opprette en versjonert og kryptert S3-bucket, og bruk prefikser for hver sone. Aktiver versjonskontroll slik at ny behandling alltid kan gå tilbake til den rå kilden, og aktiver kryptering på serversiden (SSE-S3 eller SSE-KMS) for data i ro. Blokker all offentlig tilgang for å holde dataene private.

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"}}]}'

Bruke bucket-policyer for tilgang til soner

Hver sone bør ha sin egen tilgangspolicy, slik at ulike team og tjenester bare kan gjøre endringer i det de trenger. Inntaksroller kan for eksempel få s3:PutObject på landing-prefikset, ETL-roller kan få lesetilgang til landing og skrivetilgang til processing, og analyseroller kan få skrivebeskyttet tilgang til curated. Dette håndhever minste privilegium internt i datasjøen.

# 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/*"
    }
  ]
}

Partisjonere data for mer effektive spørringer

Partisjonering organiserer data i S3 etter mappehierarkier som samsvarer med predikater i spørringer (for eksempel år/måned/dag eller region/tjeneste). Når Athena eller Glue leser partisjonerte data, skannes bare de relevante partisjonene i stedet for hele datasettet. Dette reduserer kostnadene og spørringstiden betydelig. En god partisjonsnøkkel er en nøkkel som ofte forekommer i WHERE-uttrykk.

# 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 automatically

Kolonnebaserte formater: Parquet og ORC

Lagring av data i et kolonnebasert format, for eksempel Apache Parquet eller ORC (Optimised Row Columnar), forbedrer ytelsen til analytiske spørringer betydelig og reduserer kostnadene for dataskanning i S3. Kolonnebaserte formater gjør det mulig for spørringsmotorer å lese bare kolonnene som trengs, komprimere gjentatte verdier effektivt og støtte predikatpushdown. Konverter alltid rå CSV eller JSON til Parquet i curated-sonen.

# 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-livssykluspolicyer for kostnadsstyring

Dataene i landing-sonen vokser kontinuerlig, men eldre råfiler åpnes sjelden igjen. Bruk S3 Lifecycle Policies til automatisk å flytte rådata til rimeligere lagringsklasser over tid. Flytt for eksempel objekter i landing/ til S3 Glacier Instant Retrieval etter 30 dager og til Glacier Deep Archive etter 90 dager. Dette alene kan redusere lagringskostnadene for historiske data med 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 for detaljert tilgangskontroll

AWS Lake Formation ligger oppå S3 og Glue Data Catalogue og gir tilgangskontroll på tabell-, kolonne- og radnivå uten at du må skrive komplekse bucket-policyer. Lake Formation integreres med Athena, Redshift Spectrum og EMR. Dette er den anbefalte tilnærmingen når flere team spør mot den samme datasjøen og trenger ulik innsynsmulighet i sensitive kolonner som personopplysninger eller økonomiske data.

# 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-hendelsesvarsler for utløsing av datainntak

Når en ny fil lander i S3-landingssonen, må behandling utløses automatisk. Bruk S3 Event Notifications til å publisere en hendelse til SQS, SNS eller Lambda hver gang et objekt opprettes. En Lambda-funksjon eller Glue-arbeidsflyt henter deretter den nye filen, validerer den og flytter den gjennom pipelinen. Slik får De en helautomatisert, hendelsesdrevet prosess for datainntak i datasjøen.

# 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/"}]}
      }
    }]
  }'

Kryptering og samsvar i datasjøen

En datasjø i produksjon må håndheve kryptering overalt. Bruk AWS KMS Customer Managed Keys (CMK) for SSE-KMS på sensitive data, og krev eksplisitte nøkkeltilganger for hver forbruker. Aktiver S3 Object Lock i Compliance-modus for regulatoriske data som ikke må slettes eller overskrives. Bruk Macie til automatisk å oppdage og varsle om personopplysninger som er lagret i datasjøen.

# 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"
    }
  }
}

Tilgang til datasjø på tvers av kontoer

I store organisasjoner ligger datasjøens S3-bucket i en sentral data platform-konto, mens forbrukerteam arbeider i separate AWS-kontoer. Gi tilgang ved å kombinere bucket-policyer (som angir hovedidentiteten til forbrukerkontoen) med IAM-roller i forbrukerkontoen som antar tillatelser på tvers av kontoer. Resource Access Manager (RAM) er et alternativ for deling basert på 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/*"
  ]
}

Hurtigsjekk

Test forståelsen Deres av AWS Solutions Architect-konsepter (SAA-C03) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært at datasjøer bruker S3 med landing-, processing- og curated-soner, at partisjonering og Parquet-format reduserer kostnadene for Athena-spørringer, og at Lake Formation gir detaljert tilgangskontroll på kolonne- og radnivå. Deretter utforsker vi AWS Glue for serverløs ETL og Glue Data Catalogue.

Gratis å komme i gang

Lær deg AWS Solutions Architect med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Bygging av en datasjø på S3» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AWS Solutions Architect, inkludert «Bygging av en datasjø på S3», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AWS Solutions Architect inneholder totalt 4 leksjoner.

Hva lærer jeg i «Bygging av en datasjø på S3»?

Utform en S3-basert datasjø med soner for landing, behandling og kuraterte data, bruk bucket-policyer, og organiser data etter partisjoner for effektive spørringer Du øver på AWS Solutions Architect med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AWS Solutions Architect?

Ingen tidligere erfaring er nødvendig. AWS Solutions Architect på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Bygging av en datasjø på S3»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AWS Solutions Architect-leksjonen?

Ja. Alle AWS Solutions Architect-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Bygging av en datasjø på S3
  2. AWS Glue: ETL og datakatalog
  3. Amazon Athena: Serverløs SQL på S3
  4. Kinesis Streams, Firehose og sanntidsanalyse
← Tilbake til AWS Solutions Architect