Метод позволяет настроить детальный мониторинг обращений к объектам.
1. Настройка политики бакета (Bucket Policy)
По умолчанию механизм логирования отключен. Для его активации необходимо наличие отдельного целевого бакета, в котором будут сохраняться отчеты.
Создаем бакет для хранения лога.
aws s3 mb s3://<Имя_бакета_лога>
Выставляем политику разрешения сбора статистики для этого бакета
aws s3api put-bucket-policy --bucket <Имя_бакета_лога> --policy "{`"Version`": `"2012-10-17`", `"Statement`": [{`"Effect`": `"Allow`", `"Principal`": `"*`", `"Action`": `"s3:PutObject`", `"Resource`": `"arn:aws:s3:::<Имя_бакета_лога>/*`"}]}"
Активируем логирование целевого бакета
aws s3api put-bucket-logging --bucket <Имя_целевого_бакета> --bucket-logging-status "{`"LoggingEnabled`": {`"TargetBucket`": `"<Имя_бакета_лога>`", `"TargetPrefix`": `"access_logs/`"}}"
Чтобы убедиться, что логирование активно, выполните эту команду
aws s3api get-bucket-logging --bucket <Имя_целевого_бакета>
2. Анализ данных через S3 Select
Логи хранятся в виде набора файлов в настроенном бакете. Чтобы посмотреть статистику обращений к объектам, вместо открытий данных отдельных файлов и поиска можно использовать SQL-запрос прямо в облаке.
Команда вывода данных (вывод в файл stats.csv):
aws s3api select-object-content \
--bucket <Имя_бакета_лога> \
--key access_logs/<Имя_файла_лога> \
--expression "SELECT * FROM s3object s WHERE s._4 = '<Имя_объекта>'" \
--expression-type 'SQL' \
--input-serialization '{"CSV": {"FieldDelimiter": " "}}' \
--output-serialization '{"CSV": {}}' \
stats.csv
В примере представлен запрос с поиском по имени объекта. В стандартном логе S3 s._4 — это четвертая колонка, где хранится имя объекта.
Расшифровка полей для запросов данных:
| Номер (в SQL) | Имя поля (AWS) | Описание |
s._1 |
Bucket Owner | ID владельца бакета |
s._2 |
Bucket | Имя бакета, к которому обратились |
s._3 |
Time | Время запроса (в квадратных скобках) |
s._4 |
Remote IP | IP-адрес клиента |
s._5 |
Requester | ID того, кто сделал запрос |
s._6 |
Request ID | Уникальный ID транзакции |
s._7 |
Operation | Тип операции (GET, PUT, DELETE, COPY) |
s._8 |
Key | Имя файла (объекта) |
s._9 |
Request-URI | Полный путь запроса (в кавычках) |
s._10 |
HTTP Status | Код ответа (200 — успех, 403 — отказ) |
s._11 |
Error Code | Код ошибки AWS (если есть) |
s._12 |
Bytes Sent | Отправлено байт (трафик скачивания) |
s._13 |
Object Size | Полный размер объекта в байтах |
s._14 |
Total Time | Время обработки запроса (мс) |
s._15 |
Turn-Around Time | Время задержки внутри S3 (мс) |
s._16 |
Referrer | Откуда пришел запрос (URL) |
s._17 |
User Agent | Браузер или утилита (например, aws-cli) |