Skip to content

Commit 135103a

Browse files
[PRMP-1213] Forward OPTIONS requests in edge lambda (#988)
1 parent f3c669a commit 135103a

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

lambdas/handlers/edge_presign_handler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ def lambda_handler(event, context):
1515
logger.info("Edge received S3 request")
1616
logger.info(f"Request: {request}")
1717

18+
if request['method'] == 'OPTIONS':
19+
logger.info("Edge received OPTIONS request, forwarding without modification")
20+
return request
21+
1822
environment = context.function_name.split(".")[-1].split("_")[0]
1923

2024
edge_presign_service = EdgePresignService(environment)

lambdas/tests/unit/enums/test_edge_presign_values.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
{
4343
"cf": {
4444
"request": {
45+
"method": "GET",
4546
"headers": MOCKED_HEADERS,
4647
"querystring": "",
4748
"uri": "/some/path",

lambdas/tests/unit/handlers/test_edge_presign_handler.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def mock_edge_presign_service(mocker):
2121
return mock_edge_service_instance
2222

2323

24-
def test_lambda_handler_success(valid_event, context, mock_edge_presign_service):
24+
def test_lambda_handler_get_success(valid_event, context, mock_edge_presign_service):
2525
request_body = valid_event["Records"][0]["cf"]["request"]
2626
modified_request = copy.deepcopy(request_body)
2727
modified_request["uri"] = "/path/to/resource"
@@ -41,7 +41,7 @@ def test_lambda_handler_success(valid_event, context, mock_edge_presign_service)
4141
assert response["querystring"] == "key=value"
4242

4343

44-
def test_lambda_handler_exception(valid_event, context, mock_edge_presign_service):
44+
def test_lambda_handler_get_exception(valid_event, context, mock_edge_presign_service):
4545
mock_edge_presign_service.use_presigned.side_effect = CloudFrontEdgeException(
4646
400, LambdaError.MockError
4747
)
@@ -54,3 +54,13 @@ def test_lambda_handler_exception(valid_event, context, mock_edge_presign_servic
5454
assert actual_status == 400
5555
assert actual_response["message"] == "Client error"
5656
assert actual_response["err_code"] == "AB_XXXX"
57+
58+
def test_lambda_handler_options_success(valid_event, context, mock_edge_presign_service):
59+
valid_event["Records"][0]["cf"]["request"]["method"] = "OPTIONS"
60+
61+
response = lambda_handler(valid_event, context)
62+
63+
mock_edge_presign_service.use_presigned.assert_not_called()
64+
mock_edge_presign_service.update_s3_headers.assert_not_called()
65+
66+
assert response == valid_event["Records"][0]["cf"]["request"]

0 commit comments

Comments
 (0)