Оптимизация затрат на S3 и передачу данных
Применяйте S3 Intelligent-Tiering, правила жизненного цикла, S3 Select и CloudFront, чтобы значительно сократить затраты на хранение и передачу данных.
«Оптимизация затрат на S3 и передачу данных» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Основы стоимости хранения S3
Стоимость хранения Amazon S3 значительно различается в зависимости от класса хранения и характера доступа. S3 Standard стоит примерно $0.023 за ГБ в месяц — при масштабе в петабайты это становится существенной суммой. Хорошая новость заключается в том, что S3 предлагает семь классов хранения, оптимизированных для разной частоты доступа, с ценами от $0.023/ГБ (Standard) до $0.00099/ГБ (Glacier Deep Archive). Ключ к оптимизации затрат на S3 — выбрать подходящий класс хранения для данных и автоматизировать переходы с помощью политик жизненного цикла.
# 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 timeS3 Intelligent-Tiering
S3 Intelligent-Tiering автоматически перемещает объекты между уровнями доступа в зависимости от фактических обращений к ним — без платы за извлечение и без минимального срока хранения для часто используемого уровня. Сервис отслеживает доступ к объектам на уровне отдельных объектов: объекты, к которым не обращались 30 дней, перемещаются на уровень нечастого доступа (на 40% дешевле), а через 90 дней — на уровень мгновенного архивного доступа (на 68% дешевле). Взимается небольшая ежемесячная плата за мониторинг ($0.0025 за 1 000 объектов). Используйте Intelligent-Tiering, если невозможно предсказать характер доступа или в одном bucket находятся одновременно часто и редко используемые данные.
# 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}
]
}'Правила жизненного цикла S3 для автоматического перехода между уровнями
Правила жизненного цикла S3 автоматизируют переходы объектов между уровнями и их удаление в зависимости от возраста. Вы задаёте правила по префиксу или тегу, а затем указываете переходы при достижении определённого количества дней. Типичный жизненный цикл архивирования: Standard → Standard-IA (30 дней) → Glacier Instant Retrieval (90 дней) → Deep Archive (365 дней) → Delete (2555 дней). Со временем это позволяет снизить стоимость хранения одного ГБ с $0.023 до $0.00099 — на 95% для архивных данных. Для перехода в IA и Glacier минимальный размер объекта составляет 128 КБ (перемещать объекты меньшего размера невыгодно).
# 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 и Glacier Select
S3 Select позволяет получать только нужные данные из объекта S3 с помощью выражений SQL, не загружая объект целиком. Например, если из CSV-файла размером 10 ГБ нужны только 100 строк, S3 Select извлечёт лишь эти строки, значительно сократив затраты на передачу данных и время обработки в приложении. Glacier Select выполняет ту же задачу для объектов в Glacier. S3 Select поддерживает форматы CSV, JSON и Parquet. Это особенно полезно в конвейерах аналитики данных, где многие запросы обращаются только к части каждого файла данных.
# 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 и ускорение передачи
При загрузке больших объектов S3 Multipart Upload разделяет их на части (минимум 5 МБ на часть), которые загружаются параллельно, повышая пропускную способность и позволяя возобновлять загрузку. Неудачные части можно загрузить повторно, не начиная всю загрузку заново. Удаляйте незавершённые составные загрузки с помощью правил жизненного цикла, чтобы не платить за незавершённые части. S3 Transfer Acceleration направляет загрузки через пограничные расположения AWS CloudFront, ускоряя передачу из удалённых мест. Это полезно для пользователей, которые загружают большие файлы из разных стран, но увеличивает стоимость (дополнительно $0.04–$0.08/ГБ). Используйте ускорение только тогда, когда оно даёт заметное улучшение.
# 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}
}]
}'Понимание затрат на передачу данных
Затраты на передачу данных — один из самых неожиданных пунктов в счетах AWS. Основные правила: входящая передача данных (в AWS) бесплатна. Исходящая передача данных в интернет стоит примерно $0.09/ГБ (первые 10 ТБ в месяц). Передача данных между регионами стоит примерно $0.02/ГБ. Передача данных между AZ в одном регионе стоит $0.01/ГБ в каждом направлении. Передача данных внутри одной AZ бесплатна. Проектируйте архитектуру так, чтобы свести к минимуму передачу данных между регионами и в интернет — поэтому региональные развертывания и CloudFront так важны для экономичной доставки содержимого.
# 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 egressCloudFront для снижения затрат на передачу данных
Доставка содержимого через Amazon CloudFront значительно снижает затраты на передачу данных двумя способами. Во-первых, CloudFront применяет более низкие тарифы на исходящий трафик, чем EC2 или прямой доступ к S3 из интернета (~$0.0085/ГБ против $0.09/ГБ). Во-вторых, CloudFront кэширует содержимое в пограничных расположениях, уменьшая число обращений к источнику. Один и тот же контент можно отдавать из кэша миллионы раз, обратившись к источнику только один раз. Передача данных от S3 к CloudFront также бесплатна. Поэтому CloudFront — это инструмент оптимизации затрат, а не только повышения производительности.
# 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.jsonVPC Endpoints для отказа от затрат на NAT Gateway
Плата за обработку данных NAT Gateway ($0.045/ГБ) может стать существенной, если экземпляры EC2 в закрытых подсетях часто обращаются к S3 или DynamoDB. Вместо этого используйте VPC Gateway Endpoints для S3 и DynamoDB: они направляют трафик через магистральную сеть AWS с нулевой стоимостью, и для этих сервисов не требуется NAT Gateway. Кроме того, VPC Interface Endpoints (PrivateLink) для других сервисов AWS устраняют плату за обработку трафика через NAT Gateway для этих сервисов, хотя сами Interface Endpoints имеют небольшую почасовую стоимость.
# 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Оптимизация затрат на запросы S3
S3 взимает плату не только за хранимые ГБ, но и за каждый запрос API. Запросы PUT, COPY, POST, LIST стоят $0.005 за 1 000, а запросы GET, SELECT — $0.0004 за 1 000. Для приложений, выполняющих миллионы запросов, эти затраты складываются. Оптимизируйте их следующим образом: объединяйте небольшие объекты в более крупные (меньше запросов), используйте CloudFront для выдачи кэшированных ответов (это уменьшает число запросов GET к источнику), по возможности избегайте операций со списками (LIST стоит дорого) и используйте S3 Batch Operations для массовых операций вместо миллионов отдельных вызовов 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 для передачи данных
Для масштабной передачи данных между локальной инфраструктурой и AWS или между сервисами AWS AWS DataSync экономичнее, чем написание собственного кода передачи. DataSync использует специализированный протокол, обеспечивающий пропускную способность до 10 раз выше, чем у инструментов с открытым исходным кодом, а также включает встроенную проверку данных, планирование и мониторинг. Передача данных через DataSync в S3, EFS или FSx оплачивается по стандартным тарифам AWS на передачу данных, но эффективность DataSync позволяет быстрее завершать передачу, сокращая время работы EC2 (и затраты на него), необходимое для крупных миграций.
# 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 transferredStorage Lens для контроля S3
Amazon S3 Storage Lens предоставляет сведения об использовании хранилища S3 и метрики активности в масштабах всей организации, включая разные аккаунты и регионы. Сервис выявляет возможности оптимизации затрат, например bucket без правил жизненного цикла, bucket с незавершёнными составными загрузками или распределение объектов по классам хранения. Стандартная панель S3 Storage Lens бесплатна; панель с расширенными метриками ($0.20 за миллион объектов) добавляет детализацию по префиксам и метрики возраста данных. Используйте Storage Lens как отправную точку для любой оптимизации затрат на S3, чтобы выявить bucket с наибольшим потенциалом экономии.
# 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"
}
}
}'Быстрая проверка
Проверьте, насколько хорошо Вы понимаете концепции AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали: S3 Intelligent-Tiering и правила жизненного цикла автоматически перемещают данные в более дешёвые классы хранения, снижая затраты, CloudFront значительно уменьшает затраты на передачу данных по сравнению с непосредственной раздачей из S3 или EC2, а VPC Gateway Endpoints устраняют плату NAT Gateway за трафик S3 и DynamoDB. S3 Storage Lens помогает выявлять возможности оптимизации. Далее мы рассмотрим KMS, ACM и схемы шифрования.
Часто задаваемые вопросы
Урок «Оптимизация затрат на S3 и передачу данных» бесплатный?
Да — полный текст урока «Оптимизация затрат на S3 и передачу данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Оптимизация затрат на S3 и передачу данных»?
Применяйте S3 Intelligent-Tiering, правила жизненного цикла, S3 Select и CloudFront, чтобы значительно сократить затраты на хранение и передачу данных. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Оптимизация затрат на S3 и передачу данных»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Подбор размера и Compute Optimizer
- Резервируемые экземпляры, Savings Plans и Spot
- Cost Explorer, бюджеты и теги распределения затрат
- Оптимизация затрат на S3 и передачу данных