@@ -266,41 +266,40 @@ async def s3_endpoint(path: str, request: Request):
266266 assert credentials , "No AWS credentials found"
267267 headers ["x-amz-security-token" ] = credentials .token
268268
269- # if this is a PUT request, we need the KMS key ID to use for encryption
270- if config ["KMS_ENCRYPTION_ENABLED" ] and request .method == "PUT" :
271- _ , kms_key_arn = aws_utils .get_existing_kms_key_for_bucket (user_bucket )
272- if not kms_key_arn :
273- err_msg = "Bucket misconfigured. Hit the `GET /storage/info` endpoint and try again."
274- logger .error (
275- f"No existing KMS key found for bucket '{ user_bucket } '. { err_msg } "
276- )
277- raise HTTPException (HTTP_400_BAD_REQUEST , err_msg )
278- headers ["x-amz-server-side-encryption" ] = "aws:kms"
279- headers ["x-amz-server-side-encryption-aws-kms-key-id" ] = kms_key_arn
269+ # if this is a PUT/POST request, we need the KMS key ID to use for encryption
270+ # Note: PUT: file upload; POST: multipart file upload
271+ # if config["KMS_ENCRYPTION_ENABLED"] and request.method in ["PUT", "POST"]:
272+ # _, kms_key_arn = aws_utils.get_existing_kms_key_for_bucket(user_bucket)
273+ # if not kms_key_arn:
274+ # err_msg = "Bucket misconfigured. Hit the `GET /storage/info` endpoint and try again."
275+ # logger.error(
276+ # f"No existing KMS key found for bucket '{user_bucket}'. {err_msg}"
277+ # )
278+ # raise HTTPException(HTTP_400_BAD_REQUEST, err_msg)
279+ # headers["x-amz-server-side-encryption"] = "aws:kms"
280+ # headers["x-amz-server-side-encryption-aws-kms-key-id"] = kms_key_arn
280281
281282 # construct the canonical request. All header keys must be lowercase
282283 sorted_headers = sorted (list (headers .keys ()), key = str .casefold )
283- lowercase_sorted_headers = [k .lower () for k in sorted_headers ]
284284 canonical_headers = "" .join (
285285 f"{ key .lower ()} :{ headers [key ]} \n " for key in sorted_headers
286286 )
287- signed_headers = ";" .join (lowercase_sorted_headers )
287+ signed_headers = ";" .join ([ k . lower () for k in sorted_headers ] )
288288 query_params = dict (request .query_params )
289289 # the query params in the canonical request have to be sorted:
290290 query_params_names = sorted (list (query_params .keys ()))
291291 canonical_query_params = "&" .join (
292292 f"{ urllib .parse .quote_plus (key )} ={ urllib .parse .quote_plus (query_params [key ])} "
293293 for key in query_params_names
294294 )
295- body_hash = headers ["x-amz-content-sha256" ]
296295 canonical_request = (
297296 f"{ request .method } \n "
298297 f"{ request_path } \n "
299298 f"{ canonical_query_params } \n "
300299 f"{ canonical_headers } "
301300 f"\n "
302301 f"{ signed_headers } \n "
303- f"{ body_hash } "
302+ f"{ headers [ 'x-amz-content-sha256' ] } "
304303 )
305304
306305 # construct the string to sign based on the canonical request
0 commit comments