Skip to content

Commit 28f15e5

Browse files
clean up
1 parent 599f1ef commit 28f15e5

File tree

3 files changed

+16
-18
lines changed

3 files changed

+16
-18
lines changed

.secrets.baseline

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@
160160
"filename": "docs/s3.md",
161161
"hashed_secret": "08d2e98e6754af941484848930ccbaddfefe13d6",
162162
"is_verified": false,
163-
"line_number": 56
163+
"line_number": 55
164164
}
165165
],
166166
"migrations/versions/e1886270d9d2_create_system_key_table.py": [
@@ -209,5 +209,5 @@
209209
}
210210
]
211211
},
212-
"generated_at": "2026-02-03T17:56:09Z"
212+
"generated_at": "2026-02-25T19:02:33Z"
213213
}

docs/s3.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ Note: This discussion can apply to many use cases, but it is written with a spec
55
Contents:
66
- [Using IAM keys](#using-iam-keys)
77
- [Using a custom S3 endpoint](#using-a-custom-s3-endpoint)
8-
- [Diagram](#diagram)
98

109
## Using IAM keys
1110

gen3workflow/routes/s3.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)