How does AWS Secret key and access key work
AWS has designed their own custom authentication algorithm. You are referencing the older signature version (v2), a newer one (v4) was released in 2014. Details are outlined here: Authenticating Requests (AWS Signature Version 4) . A major difference is that the request is not signed with the secret itself, but with a signing key which is generated using the secret. It also uses HMAC-SHA256 for signing.




  Why does AWS do this instead of asking user to upload a RSA public
  key? Why is this safer?


Using asymmetric keys would be safer since AWS would only store a public key instead of the secret, which is stored by both the user and AWS.