0Pricing
Cloud & IT Cert Prep · Lekcja

Budowanie jeziora danych w S3

Projektować jezioro danych oparte na S3 ze strefą przyjmowania, przetwarzania i danych wyselekcjonowanych, stosować zasady zasobników oraz organizować dane według partycji w celu zwiększenia wydajności zapytań.

Budowanie jeziora danych w S3 to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Czym jest data lake?

Data lake to scentralizowane repozytorium przechowujące dane ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane w dowolnej skali. W przeciwieństwie do hurtowni danych data lake przechowuje dane w ich surowym, natywnym formacie do momentu, gdy będą potrzebne do analizy. Amazon S3 jest najczęściej używaną podstawą data lake w AWS ze względu na trwałość, skalowalność i integrację z usługami analitycznymi.

Architektura stref data lake

Dobrze zaprojektowany data lake w S3 wykorzystuje trzy strefy logiczne: Landing Zone (surowe dane wejściowe, bez modyfikacji), Processing Zone (dane oczyszczone i przekształcone) oraz Curated Zone (gotowe do analizy i wykorzystania biznesowego). Każda strefa jest zwykle osobnym prefiksem S3 lub zasobnikiem. Ten wzorzec jest czasami nazywany architekturą medalionową (brązową, srebrną i złotą).

# 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

Tworzenie struktury zasobnika S3

Użyj AWS CLI, aby utworzyć wersjonowany i szyfrowany zasobnik S3 oraz zastosować prefiksy dla każdej strefy. Włącz wersjonowanie, aby podczas ponownego przetwarzania zawsze można było wrócić do surowego źródła, oraz włącz szyfrowanie po stronie serwera (SSE-S3 lub SSE-KMS) dla danych przechowywanych w spoczynku. Zablokuj cały publiczny dostęp, aby zachować prywatność danych.

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

Stosowanie zasad zasobnika do kontroli dostępu do stref

Każda strefa powinna mieć własną zasadę dostępu, aby różne zespoły i usługi mogły uzyskiwać dostęp tylko do niezbędnych zasobów. Na przykład role pozyskiwania danych otrzymują uprawnienie s3:PutObject do prefiksu landing, role ETL otrzymują dostęp do odczytu w landing i zapisu w processing, a role analityczne — dostęp tylko do odczytu w curated. Wymusza to zasadę najmniejszych uprawnień wewnątrz 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/*"
    }
  ]
}

Partycjonowanie danych w celu usprawnienia zapytań

Partycjonowanie organizuje dane w S3 za pomocą hierarchii folderów odpowiadających predykatom zapytań (np. rok/miesiąc/dzień lub region/usługa). Gdy Athena lub Glue odczytuje dane podzielone na partycje, skanuje tylko odpowiednie partycje zamiast całego zbioru danych, co znacznie zmniejsza koszt i czas wykonywania zapytań. Dobry klucz partycji to taki, który często pojawia się w klauzulach 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 automatically

Formaty kolumnowe: Parquet i ORC

Przechowywanie danych w formacie kolumnowym, takim jak Apache Parquet lub ORC (Optimised Row Columnar), znacznie poprawia wydajność zapytań analitycznych i obniża koszty skanowania danych w S3. Formaty kolumnowe pozwalają silnikom zapytań odczytywać tylko potrzebne kolumny, efektywnie kompresować powtarzające się wartości i obsługiwać przesuwanie predykatów. Zawsze konwertuj surowe pliki CSV lub JSON do formatu Parquet w strefie 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')

Zasady cyklu życia S3 na potrzeby zarządzania kosztami

Dane w strefie landing stale przyrastają, ale starsze pliki surowe są rzadko ponownie używane. Użyj S3 Lifecycle Policies, aby automatycznie przenosić surowe dane do tańszych klas pamięci masowej z upływem czasu. Na przykład przenieś obiekty w landing/ do S3 Glacier Instant Retrieval po 30 dniach, a po 90 dniach do Glacier Deep Archive. Samo to może obniżyć koszty przechowywania danych historycznych o 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 do szczegółowej kontroli dostępu

AWS Lake Formation działa nad S3 i Glue Data Catalogue, zapewniając kontrolę dostępu na poziomie tabel, kolumn i wierszy bez konieczności pisania złożonych zasad zasobnika. Lake Formation integruje się z Athena, Redshift Spectrum i EMR. Jest to preferowane rozwiązanie, gdy wiele zespołów wykonuje zapytania w tym samym data lake i potrzebuje różnego zakresu widoczności wrażliwych kolumn, takich jak dane osobowe lub finansowe.

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

Powiadomienia zdarzeń S3 jako wyzwalacze pozyskiwania danych

Gdy nowy plik trafia do strefy landing w S3, należy automatycznie uruchomić przetwarzanie. Użyj S3 Event Notifications, aby publikować zdarzenie w SQS, SNS lub Lambda za każdym razem, gdy zostanie utworzony obiekt. Następnie funkcja Lambda lub przepływ pracy Glue pobiera nowy plik, sprawdza go i przesuwa przez potok. Tworzy to w pełni zautomatyzowany, sterowany zdarzeniami proces pozyskiwania danych do data lake.

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

Szyfrowanie i zgodność w data lake

Produkcyjny data lake musi wymuszać szyfrowanie we wszystkich obszarach. Użyj AWS KMS Customer Managed Keys (CMK) do SSE-KMS dla wrażliwych danych, wymagając jawnych przyznań uprawnień do klucza dla każdego odbiorcy. Włącz S3 Object Lock w trybie Compliance dla danych regulowanych, których nie wolno usuwać ani nadpisywać. Użyj Macie, aby automatycznie wykrywać dane osobowe przechowywane w data lake i generować dla nich alerty.

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

Dostęp do data lake z wielu kont

W dużych organizacjach zasobnik S3 data lake znajduje się na centralnym koncie data platform, podczas gdy zespoły korzystające z danych działają na oddzielnych kontach AWS. Przyznaj dostęp, łącząc zasady zasobnika (wymieniające podmiot główny konta korzystającego z danych) z rolami IAM na koncie korzystającym z danych, które przyjmują uprawnienia między kontami. Resource Access Manager (RAM) jest alternatywą w przypadku udostępniania opartego na 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/*"
  ]
}

Szybki test

Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji dowiedziałeś się, że: data lake wykorzystuje S3 ze strefami landing, processing i curated, partycjonowanie i format Parquet obniżają koszty zapytań Athena, a Lake Formation zapewnia szczegółową kontrolę dostępu na poziomie kolumn i wierszy. W następnej części omówimy AWS Glue do bezserwerowego ETL oraz Glue Data Catalogue.

Często zadawane pytania

Czy lekcja „Budowanie jeziora danych w S3” jest bezpłatna?

Tak — pełny tekst „Budowanie jeziora danych w S3” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Co nauczysz się w „Budowanie jeziora danych w S3”?

Projektować jezioro danych oparte na S3 ze strefą przyjmowania, przetwarzania i danych wyselekcjonowanych, stosować zasady zasobników oraz organizować dane według partycji w celu zwiększenia wydajnoś… Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?

Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Budowanie jeziora danych w S3”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?

Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Budowanie jeziora danych w S3
  2. AWS Glue: ETL i katalog danych
  3. Amazon Athena: bezserwerowy SQL w S3
  4. Strumienie Kinesis, Firehose i analityka w czasie rzeczywistym
← Powrót do Cloud & IT Cert Prep