Select your cookie preferences

We use essential cookies and similar tools that are necessary to provide our site and services. We use performance cookies to collect anonymous statistics, so we can understand how customers use our site and make improvements. Essential cookies cannot be deactivated, but you can choose “Customize” or “Decline” to decline performance cookies.

If you agree, AWS and approved third parties will also use cookies to provide useful site features, remember your preferences, and display relevant content, including relevant advertising. To accept or decline all non-essential cookies, choose “Accept” or “Decline.” To make more detailed choices, choose “Customize.”

Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated Apr 30, 2025

User attribute validation

You can use defineAuth and defineFunction to create a Cognito pre sign-up Lambda trigger that extends the behavior of sign-up to validate attribute values.

To get started, create a new directory and a resource file, amplify/auth/pre-sign-up/resource.ts. Then, define the function with defineFunction:

amplify/auth/pre-sign-up/resource.ts
import { defineFunction } from '@aws-amplify/backend';
export const preSignUp = defineFunction({
name: "pre-sign-up",
resourceGroupName: 'auth'
});

Next, create the corresponding handler file, amplify/auth/pre-sign-up/handler.ts, file with the following contents:

amplify/auth/pre-sign-up/handler.ts
import type { PreSignUpTriggerHandler } from "aws-lambda"
function isOlderThan(date: Date, age: number) {
const comparison = new Date()
comparison.setFullYear(comparison.getFullYear() - age)
return date.getTime() <= comparison.getTime()
}
export const handler: PreSignUpTriggerHandler = async (event) => {
const birthdate = new Date(event.request.userAttributes["birthdate"])
// you must be 13 years or older
if (!isOlderThan(birthdate, 13)) {
throw new Error("You must be 13 years or older to use this site")
}
return event
}

Lastly, set the newly created function resource on your auth resource:

amplify/auth/resource.ts
import { defineAuth } from '@aws-amplify/backend';
import { preSignUp } from './pre-sign-up/resource';
export const auth = defineAuth({
// ...
triggers: {
preSignUp
}
});

After deploying the changes, whenever a user attempts to sign up this handler will verify the submitter's age is above 13 years.