I have everything working fine now. I created my own crossdomain.xml file to replace the corrupt one s2Member creates. I spent a good half day troubleshooting the autoconfig process. The instructions for resetting the Amazon S3/Cloudfront Integration are good from the plugin perspective, but they don’t go far enough to solve the issues people are having.
After resetting the integration details as per the instructions, I began receiving 400 errors – many different types of 400 errors – when I tried running the autoconfig again. To solve these 400 errors, everything, and I mean everything, s2Member created in S3/Cloudfront needs to deleted before autoconfig will work properly again. It appears that s2Member needs a clean S3/Cloudfront environment to work properly.
In the S3 management console, you have to delete the Grantee created by s2Member and bucket policy for the bucket you’re configuring.
On the CloudFront Management Console, you have to delete the original streams and origin access identities created by previous s2Member autoconfig attempts.
Once you’ve run the s2Member reset and cleaned up the S3/CloudFront side of things, s2Member autoconfig runs smoothly again without error. It still produces the same corrupt crossdomain.xml file as shown in the original post.
The s2-member-server-scanner app shows a perfect score on my server. Green check marks all the way down the page. Creation of the corrupt crossdomain.xml file does not appear to be a server related issue.