I found out what was causing my issue. the hostname on the AWS instance needed to be set to the FQDN hostname as supplied by AWS when Chef Automate server has completed spinning up. I set the hostname to that and cookbook uploads are working now.
Thanks for the suggestions.
When you say set the hostname on the instance, what exactly did you change to get yours working?
I'm having what seems to be the same issue with a newly-created Chef Automate server. I've tried re-creating it a bunch of times, all with the same result. At first, we thought it was a connectivity issue related to the configuration of the VPC we put it in, relating to setting up an s3 endpoint. We added that and it still fails.
Here's what appears to be the main error in the logs when running berks upload or knife cookbook upload:
==> /var/log/opscode/opscode-erchef/current <==
2016-12-15_16:58:29.71013 [error] Checking presence of file (checksum: <<"2d0133b2d753adac27212d067fc64ed4">>) for org <<"c1c26214cfc500e555169f001806f698">> from bucket "bookshelf" (key: "organization-c1c26214cfc500e555169f001806f698/checksum-2d0133b2d753adac27212d067fc64ed4") raised exception error:{badmatch,{error,{malformed_url,https,"https:"}}}
It's like the URI for the storage isn't being set during the cloudformation provisioning.