From: Seena Fallah Date: Fri, 12 Apr 2024 23:54:38 +0000 (+0200) Subject: rgw: exclude logging of request payer for 403 requests X-Git-Tag: v20.0.0~2084^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d3d40f932eb79691bfd22e1897f85db0b0b9b0c7;p=ceph.git rgw: exclude logging of request payer for 403 requests As per AWS doc (https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html#ChargeDetails), request payer should not incur charges for 403 requests. Fixes: https://tracker.ceph.com/issues/65473 Signed-off-by: Seena Fallah --- diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 5d7e3678f8fd3..6c2f54d291db8 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -200,21 +200,23 @@ static void log_usage(req_state *s, const string& op_name) if (!usage_logger) return; - std::string user; + std::string user = to_string(s->owner.id); std::string payer; - string bucket_name; - - bucket_name = s->bucket_name; + string bucket_name = s->bucket_name; if (!bucket_name.empty()) { - bucket_name = s->bucket_name; user = to_string(s->bucket_owner.id); + + // As per https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html#ChargeDetails + // If the bucket has requester pays enabled, + // and the requerster includes x-amz-request-payer in the header (this is checked by verify_requester_payer_permission and results in 403 if not present), + // and the status code isn't 403, + // then the requester is the payer. if (!rgw::sal::Bucket::empty(s->bucket.get()) && - s->bucket->get_info().requester_pays) { + s->bucket->get_info().requester_pays && + s->err.http_ret != 403) { payer = s->user->get_id().to_str(); } - } else { - user = to_string(s->owner.id); } bool error = s->err.is_err();