title: DynamoDB schema updates with AWS Amplify
body: <p>According to the AWS Amplify documentation:</p>
  
  <ul>
  <li>"<a href="https://aws-amplify.github.io/docs/cli/graphql#directives" rel="noreferrer">objects annotated with @model are stored in Amazon DynamoDB</a>";</li>
  <li>"<a href="https://aws-amplify.github.io/docs/cli/graphql#generates" rel="noreferrer">a single @model directive configures ... an Amazon DynamoDB table</a>"; and</li>
  <li>one can "<a href="https://aws-amplify.github.io/docs/cli/graphql#quick-start" rel="noreferrer">push updated changes with <code>amplify push</code></a>".</li>
  </ul>
  
  <p>It seems clear that <code>amplify push</code> creates a DynamoDB table for each @model. </p>
  
  <p>My questions relate to schema updates:</p>
  
  <ul>
  <li><p>I imagine that adding/removing a model or adding/removing a field in a model works by updating the schema document and then running <code>amplify push</code>. Is that right?</p></li>
  <li><p>How does one rename a model or a field? How would <code>amplify push</code> know to rename vs. drop the old and add the new?</p></li>
  <li><p>How does one implement a migration that requires some business logic, e.g., to update the contents of existing rows? Doing this without Amplify <a href="https://stackoverflow.com/questions/31301160/change-the-schema-of-a-dynamodb-table-what-is-the-best-recommended-way">has already been addressed</a> but it is unclear whether that would conflict with something that <code>amplify push</code> might try to do.</p></li>
  </ul>