During S3 static site deploys using the custom CloudFormation resource, files are only ever uploaded, never deleted. If a previous deploy included a file that no longer exist in the deployable archive, it will remain in S3 after the deploy. s3 sync has a -delete flag that handles this, so looking at how that is implemented could provide good leads on how to correct this using boto.