Мы хотим взимать плату с пользователей в зависимости от объема трафика, который имеют их данные. На самом деле количество полосы пропускания в нисходящем направлении, которую используют их данные.
Я экспортировал облачное хранилище Google access_logs. Из журналов я могу подсчитать, сколько раз файл был доступен. (размер файла * количество будет использовать пропускную способность)
Но проблема в том, что это плохо работает с кэшированным контентом. Мое вычисленное значение намного больше, чем фактическое использование.
Я пошел с этим методом, потому что наш трафик будет новым и не будет использовать кеш, а это значит, что разница не будет иметь значения. Но на самом деле кажется, что это настоящая проблема.
Это общий случай использования, и я думаю, что должен быть лучший способ решить эту проблему с облачным хранилищем Google.
{
"insertId": "-tohip8e1vmvw",
"logName": "projects/bucket/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "firebase-storage@system.gserviceaccount.com"
},
"authorizationInfo": [
{
"granted": true,
"permission": "storage.objects.get",
"resource": "projects/_/bucket/bucket.appspot.com/objects/users/2y7aPImLYeTsCt6X0dwNMlW9K5h1/somefile",
"resourceAttributes": {}
},
{
"granted": true,
"permission": "storage.objects.getIamPolicy",
"resource": "projects/_/bucket/bucket.appspot.com/objects/users/2y7aPImLYeTsCt6X0dwNMlW9K5h1/somefile",
"resourceAttributes": {}
}
],
"methodName": "storage.objects.get",
"requestMetadata": {
"destinationAttributes": {},
"requestAttributes": {
"auth": {},
"time": "2019-07-02T11:58:36.068Z"
}
},
"resourceLocation": {
"currentLocations": [
"eu"
]
},
"resourceName": "projects/_/bucket/bucket.appspot.com/objects/users/2y7aPImLYeTsCt6X0dwNMlW9K5h1/somefile",
"serviceName": "storage.googleapis.com",
"status": {}
},
"receiveTimestamp": "2019-07-02T11:58:36.412798307Z",
"resource": {
"labels": {
"bucket_name": "bucket.appspot.com",
"location": "eu",
"project_id": "project-id"
},
"type": "gcs_bucket"
},
"severity": "INFO",
"timestamp": "2019-07-02T11:58:36.062Z"
}
Запись в журнале.
Мы сейчас используем одно ведро. Можно также использовать несколько, если это помогает.