Configure custom identity and group claims
Amplify Data supports using custom identity and group claims if you do not wish to use the default Amazon Cognito-provided cognito:groups or the double-colon-delimited claims, sub::username, from your JWT token. This can be helpful if you are using tokens from a 3rd party OIDC system or if you wish to populate a claim with a list of groups from an external system, such as when using a Pre Token Generation Lambda Trigger which reads from a database.
To use custom claims specify identityClaim or groupClaim as appropriate. In the example below, the identityClaim is specified and the record owner will check against this user_id claim. Similarly, if the user_groups claim contains a "Moderator" string then access will be granted.
import { a, defineData, type ClientSchema } from '@aws-amplify/backend';
const schema = a.schema({  Post: a    .model({      id: a.id(),      owner: a.string(),      postname: a.string(),      content: a.string(),    })    .authorization(allow => [      allow.owner().identityClaim('user_id'),      allow.groups(['Moderator']).withClaimIn('user_groups'),    ]),});
export type Schema = ClientSchema<typeof schema>;
export const data = defineData({ schema });In your application, you can perform CRUD operations against the model using client.models.<model-name> with the userPool auth mode.
import { generateClient } from 'aws-amplify/data';import type { Schema } from '../amplify/data/resource'; // Path to your backend resource definition
const client = generateClient<Schema>();
const { errors, data: newTodo } = await client.models.Todo.create(  {    postname: 'My New Post'    content: 'My post content',  },  {    authMode: 'userPool',  });