Key Concepts & Terminology
Before diving into code, let's establish a shared vocabulary. Understanding these terms will make the rest of the course much easier to follow.
AWS Services Used by Amplify
Amplify abstracts several AWS services. Here's what each one does:
A service that provides user sign-up, sign-in, and access control. When you add authentication to your Amplify app, Cognito handles storing user credentials, sending verification emails, managing password resets, and issuing authentication tokens.
A fully managed NoSQL database that stores your application data. Unlike traditional SQL databases with rows and columns, DynamoDB stores data as "items" (like JSON objects) in "tables." It's designed for high performance at any scale.
A managed GraphQL service that provides a single endpoint for your frontend to query and mutate data. Amplify automatically creates AppSync APIs that connect to your DynamoDB tables, handling all the GraphQL resolvers for you.
A serverless compute service that runs your code without managing servers. You write functions that execute in response to events (like API calls, database changes, or scheduled triggers). You only pay for the time your code runs.
Object storage for files like images, videos, and documents. When you need file uploads in your app, Amplify uses S3 as the storage backend.
Infrastructure as Code (IaC) services that create and manage AWS resources. Amplify Gen 2 uses CDK (Cloud Development Kit) internally to provision all your backend resources consistently and repeatably.
Amplify-Specific Terms
In Amplify context, "backend" refers to all your cloud resources: authentication,
database, API, storage, and functions. Your backend is defined in the
amplify/ folder using TypeScript.
A resource is a single Amplify capability like auth, data, storage, or a function.
Each resource is defined in its own resource.ts file and corresponds
to one or more AWS services.
A personal development environment that creates real AWS resources isolated to your account. Each developer on a team can have their own sandbox that won't interfere with others or production.
A generated configuration file that contains all the information your frontend needs to connect to your backend (API endpoints, Cognito pool IDs, etc.). This file is generated when you run the sandbox and should be gitignored.
Data Modeling Terms
A model defines the shape of data in your application. For example, a "Todo" model
might have fields like content, completed, and
priority. Each model becomes a DynamoDB table and a set of GraphQL
types and operations.
The complete definition of all your data models and their relationships. In Gen 2,
you define your schema in TypeScript using the a.schema() function.
Rules that determine who can read, create, update, or delete data. Common patterns include "owner" authorization (only the creator can access their data) and "public" authorization (anyone can access).
GraphQL Terms
Amplify uses GraphQL for its API layer. Here are the key concepts:
A read operation in GraphQL. Queries fetch data from your backend without modifying it. Example: "Get all my todos" or "Get a specific user by ID."
A write operation in GraphQL. Mutations create, update, or delete data. Example: "Create a new todo" or "Mark a todo as completed."
A real-time operation that listens for data changes. When data is created, updated, or deleted, subscriptions push updates to connected clients automatically.
You don't need to be a GraphQL expert to use Amplify! The TypeScript client
provides strongly-typed methods like client.models.Todo.create()
that handle the GraphQL for you.
Authentication Terms
A Cognito User Pool is a directory of users for your app. It handles user registration, authentication, and account recovery. Think of it as your app's user database with built-in security.
A Cognito Identity Pool provides temporary AWS credentials to users, allowing them to access AWS services directly. Amplify sets this up automatically when needed.
After successful authentication, Cognito issues tokens (ID token, access token, refresh token) that your app uses to prove the user's identity. These are automatically managed by the Amplify libraries.
Development & Deployment Terms
The client-side application that users interact with directly. In this course, our frontend is a Nuxt 3 (Vue.js) application running in the browser.
An application that includes both frontend and backend components. Amplify makes you a full-stack developer by handling the backend complexity.
A cloud execution model where the cloud provider manages the servers. You don't provision, scale, or maintain serversβyou just deploy code and the provider handles the rest. Lambda functions are serverless.
The practice of managing infrastructure through code rather than manual processes. Your Amplify backend is IaCβthe TypeScript files define what AWS resources to create.
Quick Reference Diagram
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β YOUR APPLICATION β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββ ββββββββββββββββββββββββββββββββββββ β
β β FRONTEND β β BACKEND β β
β β (Nuxt 3) βββββββββββββββΊβ (amplify/) β β
β β β API Calls β β β
β β - Pages β β βββββββββββββββββββββββββββββββ β β
β β - Comps β β β auth/resource.ts β β β
β β - Styles β β β β Amazon Cognito β β β
β β β β βββββββββββββββββββββββββββββββ β β
β β β β β β
β β Uses: β β βββββββββββββββββββββββββββββββ β β
β β aws-amplifyβ β β data/resource.ts β β β
β β library β β β β DynamoDB + AppSync β β β
β β β β βββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββ β β
β β β β β functions/ β β β
β β β β β β AWS Lambda β β β
β β β β βββββββββββββββββββββββββββββββ β β
β βββββββββββββββ ββββββββββββββββββββββββββββββββββββ β
β β
β Generated: amplify_outputs.json (connects frontend to backend) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Summary
Key takeaways from this lesson:
- Cognito = Users & Authentication
- DynamoDB = Database (NoSQL)
- AppSync = GraphQL API
- Lambda = Serverless Functions
- S3 = File Storage
- Sandbox = Your personal development environment
- amplify_outputs.json = Frontend configuration file
Don't worry about memorizing everythingβyou'll get comfortable with these terms as we use them throughout the course!