Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding custom headers to all boto3 requests

I need to add some custom headers to every boto3 request that is sent out. Is there a way to manage the connection itself to add these headers?

For boto2, connection.AWSAuthConnection has a method build_base_http_request which has been helpful. I've yet to find an analogous function within the boto3 documentation though.

like image 691
mmonks Avatar asked Nov 13 '19 00:11

mmonks


1 Answers

This is pretty dated but we encountered the same issue, so I'm posting our solution.

I wanted to add custom headers to boto3 for specific requests. I found this: https://github.com/boto/boto3/issues/2251, and used the event system for adding the header

def _add_header(request, **kwargs):
    request.headers.add_header('x-trace-id', 'trace-trace')
    print(request.headers)  # for debug


some_client = boto3.client(service_name=SERVICE_NAME)
event_system = some_client.meta.events
event_system.register_first('before-sign.EVENT_NAME.*', _add_header)

You can try using a wildcard for all requests:

event_system.register_first('before-sign.*.*', _add_header)

*SERVICE_NAME- you can find all available services here: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html

For more information about register a function to a specific event: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/events.html

like image 191
May Yaari Avatar answered Oct 04 '22 15:10

May Yaari