0Pricing
AWS Solutions Architect · Lekcja

Optymalizacja kosztów S3 i transferu danych

Stosować S3 Intelligent-Tiering, reguły cyklu życia, S3 Select i CloudFront, aby znacząco ograniczyć koszty przechowywania i transferu danych.

Optymalizacja kosztów S3 i transferu danych to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 4 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 AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Podstawy kosztów pamięci masowej S3

Koszty pamięci masowej Amazon S3 znacznie różnią się w zależności od klasy pamięci masowej i sposobu dostępu. S3 Standard kosztuje około 0,023 USD za GB miesięcznie — przy skali petabajtowej kwota ta staje się znacząca. Dobrą wiadomością jest to, że S3 oferuje siedem klas pamięci masowej zoptymalizowanych pod kątem różnej częstotliwości dostępu, z cenami od 0,023 USD/GB (Standard) do 0,00099 USD/GB (Glacier Deep Archive). Kluczem do optymalizacji kosztów S3 jest dopasowanie danych do odpowiedniej klasy pamięci masowej oraz automatyzacja przejść za pomocą zasad cyklu życia.

# S3 storage class costs (us-east-1 approximate):
# S3 Standard:              $0.023/GB/month
# S3 Intelligent-Tiering:   $0.023/GB (frequent) + $0.0125 (infrequent)
# S3 Standard-IA:           $0.0125/GB/month + retrieval fee
# S3 One Zone-IA:           $0.01/GB/month (single AZ)
# S3 Glacier Instant:       $0.004/GB/month + retrieval fee
# S3 Glacier Flexible:      $0.0036/GB/month + retrieval time
# S3 Glacier Deep Archive:  $0.00099/GB/month + retrieval time

S3 Intelligent-Tiering

S3 Intelligent-Tiering automatycznie przenosi obiekty między warstwami dostępu na podstawie rzeczywistych wzorców dostępu — bez opłat za pobieranie danych i bez minimalnego czasu przechowywania w warstwie częstego dostępu. Usługa monitoruje dostęp do obiektów na poziomie pojedynczego obiektu: obiekty, do których nie uzyskano dostępu przez 30 dni, są przenoszone do warstwy rzadkiego dostępu (o 40% tańszej), a po 90 dniach do warstwy natychmiastowego dostępu do archiwum (o 68% tańszej). Pobierana jest niewielka miesięczna opłata za monitorowanie (0,0025 USD za 1000 obiektów). Z Intelligent-Tiering należy korzystać, gdy nie można przewidzieć wzorców dostępu lub gdy w tym samym bucketcie znajdują się dane często i rzadko używane.

# Enable Intelligent-Tiering on objects
aws s3api put-object \
  --bucket my-bucket \
  --key data/report.parquet \
  --body report.parquet \
  --storage-class INTELLIGENT_TIERING

# Or set as default for entire bucket
aws s3api put-bucket-intelligent-tiering-configuration \
  --bucket my-bucket \
  --id whole-bucket-tiering \
  --intelligent-tiering-configuration '{
    "Id": "whole-bucket-tiering",
    "Status": "Enabled",
    "Tierings": [
      {"AccessTier": "ARCHIVE_ACCESS", "Days": 90},
      {"AccessTier": "DEEP_ARCHIVE_ACCESS", "Days": 180}
    ]
  }'

Zasady cyklu życia S3 na potrzeby automatycznego przenoszenia między warstwami

Zasady cyklu życia S3 automatyzują przenoszenie i wygasanie obiektów na podstawie ich wieku. Zasady definiuje się według prefiksu lub tagu, a następnie określa przejścia przy konkretnych progach liczby dni. Typowy cykl życia danych archiwalnych: Standard → Standard-IA (30 dni) → Glacier Instant Retrieval (90 dni) → Deep Archive (365 dni) → Delete (2555 dni). Z czasem może to obniżyć koszt pamięci masowej za GB z 0,023 USD do 0,00099 USD — czyli o 95% w przypadku danych archiwalnych. Przejścia cyklu życia mają minimalny rozmiar obiektu wynoszący 128 KB dla IA i Glacier (przenoszenie mniejszych obiektów nie jest opłacalne).

# Lifecycle rule: transition logs to archive
aws s3api put-bucket-lifecycle-configuration \
  --bucket app-logs-bucket \
  --lifecycle-configuration '{
    "Rules": [{
      "ID": "log-archive",
      "Filter": {"Prefix": "logs/"},
      "Status": "Enabled",
      "Transitions": [
        {"Days": 30,  "StorageClass": "STANDARD_IA"},
        {"Days": 90,  "StorageClass": "GLACIER_IR"},
        {"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
      ],
      "Expiration": {"Days": 2555}
    }]
  }'

S3 Select i Glacier Select

S3 Select umożliwia pobieranie tylko potrzebnych danych z obiektu S3 za pomocą wyrażeń SQL, zamiast pobierania całego obiektu. W przypadku pliku CSV o rozmiarze 10 GB, z którego potrzebuje Pan / Pani tylko 100 wierszy, S3 Select może pobrać wyłącznie te wiersze — znacznie ograniczając koszty transferu danych i czas przetwarzania przez aplikację. Glacier Select działa tak samo w przypadku obiektów w Glacier. S3 Select obsługuje formaty CSV, JSON i Parquet. Jest to szczególnie przydatne w potokach analityki danych, w których wiele zapytań uzyskuje dostęp tylko do podzbioru każdego pliku danych.

# S3 Select: query a CSV object using SQL expression
aws s3api select-object-content \
  --bucket analytics-data \
  --key sales/2026-06.csv \
  --expression-type SQL \
  --expression "SELECT * FROM S3Object WHERE region = 'us-east'" \
  --input-serialization 'CSV={FileHeaderInfo=USE}' \
  --output-serialization 'CSV={}' \
  output.csv

# Only the matching rows are returned
# Saves data transfer cost vs downloading entire file

S3 Multipart Upload i Transfer Acceleration

W przypadku przesyłania dużych obiektów S3 Multipart Upload dzieli je na części (minimalny rozmiar części to 5 MB), które są przesyłane równolegle, zwiększając przepustowość i umożliwiając wznawianie przesyłania. Nieudane części można przesłać ponownie bez rozpoczynania całego przesyłania od początku. Aby uniknąć opłat za nieukończone części, należy usuwać nieukończone przesyłania multipart za pomocą zasad cyklu życia. S3 Transfer Acceleration kieruje przesyłanie przez lokalizacje brzegowe AWS CloudFront, przyspieszając przesyłanie z odległych lokalizacji — jest to przydatne w przypadku użytkowników przesyłających duże pliki z całego świata, ale wiąże się z dodatkowymi kosztami (0,04–0,08 USD/GB). Należy korzystać z tej funkcji tylko wtedy, gdy przyspieszenie zapewnia mierzalną poprawę.

# Multipart upload example
aws s3api create-multipart-upload \
  --bucket my-bucket --key large-file.zip

# Abort incomplete multipart uploads via lifecycle
aws s3api put-bucket-lifecycle-configuration \
  --bucket my-bucket \
  --lifecycle-configuration '{
    "Rules": [{
      "ID": "cleanup-incomplete-uploads",
      "Status": "Enabled",
      "AbortIncompleteMultipartUpload": {"DaysAfterInitiation": 7}
    }]
  }'

Zrozumienie kosztów transferu danych

Koszty transferu danych należą do najbardziej zaskakujących pozycji na rachunkach AWS. Najważniejsze zasady: transfer danych przychodzący (do AWS) jest bezpłatny. Transfer danych wychodzący do Internetu kosztuje około 0,09 USD/GB (pierwsze 10 TB miesięcznie). Transfer danych między regionami kosztuje około 0,02 USD/GB. Transfer danych między strefami dostępności w tym samym regionie kosztuje 0,01 USD/GB w każdym kierunku. Transfer w obrębie tej samej strefy dostępności jest bezpłatny. Architektury należy projektować tak, aby minimalizować transfer między regionami i transfer do Internetu — dlatego wdrożenia regionalne i CloudFront mają kluczowe znaczenie dla ekonomicznego dostarczania treści.

# Data transfer cost examples (us-east-1):
# Internet (outbound):       $0.09/GB (first 10 TB)
# CloudFront -> internet:    $0.0085/GB (much cheaper!)
# Cross-region:              $0.02/GB
# Cross-AZ (same region):    $0.01/GB each direction
# Same AZ:                   $0.00/GB (free)
# S3 -> CloudFront:          $0.00/GB (free!)

# Cost reduction tip:
# S3 -> CloudFront -> users
# vs
# EC2 -> internet -> users
# CloudFront is 10x cheaper for data egress

CloudFront na potrzeby obniżenia kosztów transferu danych

Dostarczanie treści za pośrednictwem Amazon CloudFront znacznie obniża koszty transferu danych na dwa sposoby. Po pierwsze, CloudFront pobiera niższe stawki za transfer wychodzący niż EC2 lub bezpośredni dostęp do Internetu z S3 (~0,0085 USD/GB w porównaniu z 0,09 USD/GB). Po drugie, CloudFront buforuje treści w lokalizacjach brzegowych, ograniczając liczbę przypadków, w których dane są pobierane z originu — potencjalnie ta sama treść może zostać dostarczona miliony razy z pamięci podręcznej po tylko jednym pobraniu z originu. Transfer danych z S3 do CloudFront jest również bezpłatny. Dzięki temu CloudFront jest narzędziem optymalizacji kosztów, a nie tylko wydajności.

# Cost comparison for 100 TB/month of outbound traffic:
# Direct from EC2/S3 to internet:
#   100,000 GB x $0.09/GB = $9,000/month

# Via CloudFront (assuming 80% cache hit rate):
#   20,000 GB origin pull: free (S3->CF) or $0.02 (EC2->CF)
#   100,000 GB CF->internet: 100,000 x $0.0085 = $850
#   Total: ~$1,250 vs $9,000 = 86% savings

# Create CloudFront distribution with S3 origin
aws cloudfront create-distribution \
  --distribution-config file://cf-config.json

VPC Endpoints pozwalające uniknąć kosztów NAT Gateway

NAT Gateway może generować znaczące koszty przetwarzania danych (0,045 USD/GB), gdy instancje EC2 w podsieciach prywatnych często uzyskują dostęp do S3 lub DynamoDB. Zamiast tego należy użyć VPC Gateway Endpoints dla S3 i DynamoDB — kierują one ruch przez szkielet sieci AWS przy zerowym koszcie i eliminują konieczność korzystania z NAT Gateway dla tych usług. Dodatkowo VPC Interface Endpoints (PrivateLink) dla innych usług AWS eliminują opłaty za przetwarzanie NAT Gateway w przypadku ruchu do tych usług, choć same Interface Endpoints wiążą się z niewielką opłatą godzinową.

# Create VPC Gateway Endpoint for S3 (free!)
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-12345 \
  --service-name com.amazonaws.us-east-1.s3 \
  --vpc-endpoint-type Gateway \
  --route-table-ids rtb-private-AZ1 rtb-private-AZ2

# Traffic from EC2 in private subnet to S3:
# WITHOUT endpoint: EC2 -> NAT GW ($0.045/GB) -> S3
# WITH endpoint:    EC2 -> S3 via VPC endpoint ($0.00/GB)

# For DynamoDB:
aws ec2 create-vpc-endpoint \
  --service-name com.amazonaws.us-east-1.dynamodb \
  --vpc-endpoint-type Gateway

Optymalizacja kosztów żądań S3

S3 pobiera opłaty zarówno za żądania API, jak i za przechowywanie każdego GB. Żądania PUT, COPY, POST, LIST kosztują 0,005 USD za 1000, a żądania GET, SELECT kosztują 0,0004 USD za 1000. W przypadku aplikacji wykonujących miliony żądań koszty te się kumulują. Można je optymalizować poprzez: grupowanie małych obiektów w większe (mniej żądań), używanie CloudFront do dostarczania buforowanych odpowiedzi (ogranicza liczbę żądań GET do originu), unikanie operacji listowania, gdy tylko jest to możliwe (LIST jest kosztowne), oraz używanie S3 Batch Operations do operacji zbiorczych zamiast milionów pojedynczych wywołań API.

# S3 Batch Operations: process millions of objects at once
aws s3control create-job \
  --account-id 123456789012 \
  --manifest '{
    "Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},
    "Location":{"ObjectArn":"arn:aws:s3:::manifest-bucket/manifest.csv","ETag":"abc123"}
  }' \
  --operation '{
    "S3CopyObject": {
      "TargetResource": "arn:aws:s3:::destination-bucket",
      "StorageClass": "GLACIER"
    }
  }' \
  --report '{"Bucket":"arn:aws:s3:::report-bucket","Enabled":true}'

AWS DataSync na potrzeby transferu danych

W przypadku transferów danych na dużą skalę między środowiskiem lokalnym a AWS lub między usługami AWS AWS DataSync jest bardziej opłacalny niż tworzenie własnego kodu do transferu. DataSync korzysta z przeznaczonego do tego celu protokołu, który zapewnia przepustowość do 10 razy większą niż narzędzia open source, a także oferuje wbudowaną walidację danych, harmonogramowanie i monitorowanie. Transfer danych za pośrednictwem DataSync do S3, EFS lub FSx jest rozliczany według standardowych stawek AWS za transfer danych — jednak wydajność DataSync pozwala szybciej kończyć transfery, ograniczając czas obliczeń EC2 (i związane z nim koszty) potrzebny podczas dużych migracji.

# Create DataSync task to copy S3 bucket to another region
aws datasync create-task \
  --source-location-arn arn:aws:datasync:us-east-1:123:location/loc-source \
  --destination-location-arn arn:aws:datasync:us-west-2:123:location/loc-dest \
  --name 'DR-replication' \
  --options '{
    "VerifyMode": "ONLY_FILES_TRANSFERRED",
    "OverwriteMode": "ALWAYS",
    "TransferMode": "CHANGED"
  }'

# DataSync pricing: $0.0125/GB transferred

Storage Lens zapewniający widoczność S3

Amazon S3 Storage Lens zapewnia widoczność wykorzystania pamięci masowej S3 i metryk aktywności w całej organizacji, we wszystkich kontach i regionach. Wskazuje możliwości optymalizacji kosztów, takie jak buckety bez zasad cyklu życia, buckety z nieukończonymi przesyłaniami multipart lub rozkład klas pamięci masowej. Domyślny pulpit S3 Storage Lens jest bezpłatny; pulpit z zaawansowanymi metrykami (0,20 USD za milion obiektów) dodaje analizę z możliwością przechodzenia do poziomu prefiksu oraz metryki wieku danych. Storage Lens należy traktować jako punkt wyjścia każdej optymalizacji kosztów S3, aby zidentyfikować buckety o największym wpływie.

# Enable S3 Storage Lens dashboard
aws s3control put-storage-lens-configuration \
  --account-id 123456789012 \
  --config-id default \
  --storage-lens-configuration '{
    "Id": "default",
    "IsEnabled": true,
    "DataExport": {
      "S3BucketDestination": {
        "AccountId": "123456789012",
        "Arn": "arn:aws:s3:::my-storage-lens-export",
        "Format": "CSV",
        "OutputSchemaVersion": "V_1"
      }
    }
  }'

Szybki test

Sprawdź swoją wiedzę na temat koncepcji AWS Solutions Architect (SAA-C03) przedstawionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczył się Pan / nauczyła się Pani, że: S3 Intelligent-Tiering i zasady cyklu życia obniżają koszty pamięci masowej, automatycznie przenosząc dane do tańszych klas pamięci masowej, CloudFront znacznie obniża koszty transferu danych w porównaniu z bezpośrednim dostarczaniem ich z S3 lub EC2, a VPC Gateway Endpoints eliminują opłaty NAT Gateway za ruch S3 i DynamoDB. S3 Storage Lens zapewnia widoczność możliwości optymalizacji. Następnie omówimy KMS, ACM i wzorce szyfrowania.

Często zadawane pytania

Czy lekcja „Optymalizacja kosztów S3 i transferu danych” jest bezpłatna?

Tak — pełny tekst „Optymalizacja kosztów S3 i transferu danych” 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 AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Co nauczysz się w „Optymalizacja kosztów S3 i transferu danych”?

Stosować S3 Intelligent-Tiering, reguły cyklu życia, S3 Select i CloudFront, aby znacząco ograniczyć koszty przechowywania i transferu danych. Ćwiczysz AWS Solutions Architect 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ąć AWS Solutions Architect?

Nie wymagamy żadnego doświadczenia. AWS Solutions Architect 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 4 z 4.

Ile czasu zajmuje lekcja „Optymalizacja kosztów S3 i transferu danych”?

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 AWS Solutions Architect?

Tak. Każda lekcja AWS Solutions Architect 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. Dobór rozmiaru i Compute Optimizer
  2. Reserved Instances, Savings Plans i Spot
  3. Cost Explorer, budżety i tagi alokacji kosztów
  4. Optymalizacja kosztów S3 i transferu danych
← Powrót do AWS Solutions Architect