title: What is the difference between a username attribute and an alias attribute in AWS Cognito?
body: <p>I'm defining a user pool for my AWS CloudFormation stack and I've been confused by a concept as far as attributes go. Every user in an identity pool has a custom unchangeable username that they can use to log in along with their password. You can also have other attributes to log in with:</p>
  
  <ul>
  <li><p>"Username Attributes: Determines whether email addresses or phone numbers can be specified as user names when a user signs up. Possible values: phone_number or email."</p></li>
  <li><p>"Alias Attributes: By default, users sign in with their username and password. The username is a fixed value that users cannot change. If you mark an attribute as an alias, users can sign in using that attribute in place of the username. The email address, phone number, and preferred username attributes can be marked as aliases. For example, if email and phone are selected as aliases for a user pool, users in that user pool can sign in using their username, email address, or phone number, along with their password."</p></li>
  </ul>
  
  <p>These two kinds of attributes sound the same, yet they can be both defined separately on the AWS console and in CloudFormation files. Which one should I use? Is there really no difference between the two?</p>