Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add error messages and headers in response for failed requests on the s3 endpoint #13

Open
surajmn1 opened this issue Nov 29, 2022 · 0 comments

Comments

@surajmn1
Copy link

surajmn1 commented Nov 29, 2022

  1. when the user sends an invalid bucket name or path name , this must be included as a error message in the failed response . The below error in the server logs The specified bucket does not exist must be included in the failed response message .
    expected sample error response -
{
    "status": 422 , // http status
    "details":{
        "field":"s3_bucket" ,  // JSON field which errored
        "message":"specified bucket does not exist" // error message to be shown in form
    }
}

Server logs -

metafacts-server_1  | ERROR:    Exception in ASGI application
metafacts-server_1  | Traceback (most recent call last):
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 390, in run_asgi
metafacts-server_1  |     result = await app(self.scope, self.receive, self.send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 45, in __call__
metafacts-server_1  |     return await self.app(scope, receive, send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 208, in __call__
metafacts-server_1  |     await super().__call__(scope, receive, send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 112, in __call__
metafacts-server_1  |     await self.middleware_stack(scope, receive, send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 181, in __call__
metafacts-server_1  |     raise exc
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 159, in __call__
metafacts-server_1  |     await self.app(scope, receive, _send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/cors.py", line 92, in __call__
metafacts-server_1  |     await self.simple_response(scope, receive, send, request_headers=headers)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/cors.py", line 147, in simple_response
metafacts-server_1  |     await self.app(scope, receive, send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/exceptions.py", line 82, in __call__
metafacts-server_1  |     raise exc
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/exceptions.py", line 71, in __call__
metafacts-server_1  |     await self.app(scope, receive, sender)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 656, in __call__
metafacts-server_1  |     await route.handle(scope, receive, send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 259, in handle
metafacts-server_1  |     await self.app(scope, receive, send)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 61, in app
metafacts-server_1  |     response = await func(request)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 226, in app
metafacts-server_1  |     raw_response = await run_endpoint_function(
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 159, in run_endpoint_function
metafacts-server_1  |     return await dependant.call(**values)
metafacts-server_1  |   File "/app/./app/api/api_v1/routers/meta_data.py", line 71, in get_meta_data_from_s3
metafacts-server_1  |     meta_data = await create_meta_data_for_s3_bucket(
metafacts-server_1  |   File "/app/./app/utils/meta_data.py", line 124, in create_meta_data_for_s3_bucket
metafacts-server_1  |     tasks = [
metafacts-server_1  |   File "/app/./app/utils/meta_data.py", line 124, in <listcomp>
metafacts-server_1  |     tasks = [
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/boto3/resources/collection.py", line 81, in __iter__
metafacts-server_1  |     for page in self.pages():
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/boto3/resources/collection.py", line 171, in pages
metafacts-server_1  |     for page in pages:
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/botocore/paginate.py", line 269, in __iter__
metafacts-server_1  |     response = self._make_request(current_kwargs)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/botocore/paginate.py", line 357, in _make_request
metafacts-server_1  |     return self._method(**current_kwargs)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 508, in _api_call
metafacts-server_1  |     return self._make_api_call(operation_name, kwargs)
metafacts-server_1  |   File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 915, in _make_api_call
metafacts-server_1  |     raise error_class(parsed_response, operation_name)
metafacts-server_1  | botocore.errorfactory.NoSuchBucket: An error occurred (NoSuchBucket) when calling the ListObjects operation: The specified bucket does not exist
  1. The response headers of a failed request are not the same as a successful request this is causing errors in the front end . i think it is mostly due to the cors headers not being included in a failed request .

response headers received for successful request -

access-control-allow-credentials: true
access-control-allow-origin: *
content-length: 928
content-type: application/json
date: Tue, 29 Nov 2022 06:42:23 GMT
server: uvicorn

response headers received for failed request -

content-length: 2707
content-type: text/plain; charset=utf-8
date: Tue, 29 Nov 2022 06:43:17 GMT
server: uvicorn
@surajmn1 surajmn1 changed the title Add proper error messages and headers in response for failed requests on the s3 endpoint Add error messages and headers in response for failed requests on the s3 endpoint Nov 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant