A client error (400) occurred when calling the HeadObject operation: Bad Request Completed 1 part(s) with ... file(s) remaining
I added the --region option to the statement and everything is working now:
aws s3 cp s3:/[BUCKETNAME]/ . --recursive --region [REGION]
This error also happens when your session has expired if using temporary security credentials with an assumed role. Not a forbidden or unknown id as you would expect.
My problem got fixed as soon as I upgraded to the latest version of aws cli. Here is how you upgrade :
pip install --upgrade --user awscli
specifying the region wasn't helpful