S3 Select Support for COS log entry fields
| Field name | Type | Required | Description |
|---|---|---|---|
| query_expression | String | no | Reflects the query expression provided for the SelectObjectContent request. Redacted by default due to concerns over exposing sensitive customer information in field names |
| bytes_processed | long | yes | The total number of uncompressed object bytes processed |
| bytes_returned | long | yes | The total number of bytes of records payload data returned |
| bytes_scanned | long | yes | The total number of object bytes scanned |
| query_wait | long | yes | Time elapsed between starting the query process and first byte of selected data returned to client. Similar to storage_wait entry in existing access log format for GET requests |
| last_write_time | long | yes | Epoch timestamp indicating when the last write occurred on the output stream. -1 if write never happened. |
| AWS Request name | Query Parameters | Access Log Request Type | Required Cloud IAM opcode | Access Log for Success Includes |
|---|---|---|---|---|
| SelectObjectContent | select | REST.POST.SELECT | object.get | select |
The following code is an example of select JSON.
"select": {
"query_expression": "SELECT count(*) FROM S3Object s",
"bytes_processed": "178",
"bytes_returned": "9",
"bytes_scanned": "178",
"query_wait": "868",
"last_write_time":"1695060000316"
}
The following code is an example of select JSON for a Redacted Query Expression.
"select": {
"bytes_processed": "178",
"bytes_returned": "9",
"bytes_scanned": "178",
"query_wait": "868"
"last_write_time":"1695060000316"
},
Note: The select JSON object is present in both success and error paths. Request statistics may be 0
or have associated values depending on when an error was encountered in the request. Preprocessing
errors such as malformed request bodies or invalid requests will have 0 while midstream errors would
reflect values at time of failure.
The following code is an example of a successful select access log.
{
"server_name": "127.0.0.1",
"remote_address": "0.0.0.0",
"timestamp_start": "1684271312450",
"timestamp_finish": "1684271313363",
"time_start": "16/May/2023:21:08:32 +0000",
"time_finish": "16/May/2023:21:08:33 +0000",
"request_method": "POST",
"request_uri": "/s3/vaultName/test.txt?select&select-type=2",
"protocol": "HTTP/1.1",
"status": 200,
"response_length": "364",
"request_length": "364",
"request_latency": "913",
"request_id": "00000000-0000-0000-0000-000000000000",
"request_type": "REST.POST.SELECT",
"interface_type": "s3",
"stat": {
"client_wait": 25.887,
"storage_wait": 0.129,
"digest": 0.0,
"commit": 0.0,
"turn_around_time": 459.7,
"total_transfer": 0.0,
"pre_transfer": 16.264,
"post_transfer": 459.7
},
"object_length": "178",
"version_name": "00000188-2664-ad55-44cd-7824dad47c67",
"version_transient": true,
"delete_marker": false,
"last_modified": "2023-05-16T21:08:32.213Z",
"last_changed": "2023-05-16T21:08:32.213Z",
"e_tag": "ba54e550edf8cd80050f092b15ce9e6c",
"content_embedded": true,
"segment_count": "0",
"object_name": "test.txt",
"proxy_enabled": false,
"vault_name": "vaultName",
"is_secure": false,
"select": {
"query_expression": "SELECT count(*) FROM S3Object s",
"bytes_processed": "178",
"bytes_returned": "9",
"bytes_scanned": "178",
"query_wait": "868",
"last_write_time":"1695060000316"
},
"principals": {
"identity": "a1181838-b486-3015-8818-74fff4545868@00000000-0000-0000-0000-000000000000"
},
"type": "http",
"format": 1
}
The following code is an example of a error select access log.
{
"server_name": "127.0.0.1",
"remote_address": "0.0.0.0",
"timestamp_start": "1684272369351",
"timestamp_finish": "1684272370112",
"time_start": "16/May/2023:21:26:09 +0000",
"time_finish": "16/May/2023:21:26:10 +0000",
"request_method": "POST",
"request_uri": "/s3/vaultName/test.txt?select&select-type=2",
"protocol": "HTTP/1.1",
"status": 400,
"response_length": "342",
"request_length": "0",
"request_latency": "754",
"request_id": "00000000-0000-0000-0000-000000000000",
"request_type": "REST.POST.SELECT",
"interface_type": "s3",
"stat": {
"client_wait": 10.42,
"storage_wait": 0.0,
"digest": 0.0,
"commit": 0.0,
"turn_around_time": 329.216,
"total_transfer": 0.0,
"pre_transfer": 16.368,
"post_transfer": 329.216
},
"object_length": "383",
"version_name": "00000188-2674-cddc-d316-3eaab9a8f1c7",
"version_transient": true,
"delete_marker": false,
"last_modified": "2023-05-16T21:26:09.116Z",
"last_changed": "2023-05-16T21:26:09.116Z",
"e_tag": "b6242abbb6d7fa0a1bc67f13d497062a",
"content_embedded": true,
"segment_count": "0",
"object_name": "test.txt",
"error_code": "JSONParsingError",
"proxy_enabled": false,
"vault_name": "vaultName",
"is_secure": false,
"select": {
"query_expression": "SELECT * FROM S3Object",
"bytes_processed": "0",
"bytes_returned": "0",
"bytes_scanned": "0",
"query_wait": "0",
"last_write_time":"-1"
},
"principals": {
"identity": "a1181838-b486-3015-8818-74fff4545868@00000000-0000-0000-0000-000000000000"
},
"type": "http",
"format": 1
}