That is what I thought would happen, however s3cmd does not error when the file does not exist:

# s3cmd put -v /etc/not_a_file s3://bucket
INFO: Compiling list of local files...
INFO: Applying --exclude/--include
INFO: Summary: 0 local files to upload

root in /proc [ 18:18:58 | ip-10-169-45-6 | lc-pod-2-dev-1-app-1 | us-west-1 ]
# echo $?
0