Skip to content

UserPoolDomain ​

The UserPoolDomain resource allows you to manage AWS Cognito UserPoolDomains for your user pools, enabling custom authentication flow and user experience.

Minimal Example ​

Create a basic UserPoolDomain with required properties:

ts
import AWS from "alchemy/aws/control";

const userPoolDomain = await AWS.Cognito.UserPoolDomain("myUserPoolDomain", {
  UserPoolId: "us-west-2_aBcDeFgHi",
  Domain: "mycustomdomain",
  ManagedLoginVersion: 1 // Optional, specifies the version of managed login
});

Custom Domain Configuration ​

Set up a UserPoolDomain with a custom domain configuration for enhanced branding:

ts
const customDomainUserPool = await AWS.Cognito.UserPoolDomain("customDomainUserPool", {
  UserPoolId: "us-east-1_jKlMnOpQr",
  Domain: "mybrandeddomain",
  CustomDomainConfig: {
    CertificateArn: "arn:aws:acm:us-east-1:123456789012:certificate/abcd1234-efgh-5678-ijkl-123456789012"
  }
});

Advanced Configuration ​

Configure a UserPoolDomain to adopt an existing resource if it already exists:

ts
const adoptUserPoolDomain = await AWS.Cognito.UserPoolDomain("adoptUserPoolDomain", {
  UserPoolId: "us-west-2_xYzAbC",
  Domain: "existingdomain",
  adopt: true // Set to true to adopt existing resource
});

Managing Multiple UserPoolDomains ​

Create multiple UserPoolDomains for different environments, such as development and production:

ts
const devUserPoolDomain = await AWS.Cognito.UserPoolDomain("devUserPoolDomain", {
  UserPoolId: "us-west-2_devPoolId",
  Domain: "dev.mycustomdomain"
});

const prodUserPoolDomain = await AWS.Cognito.UserPoolDomain("prodUserPoolDomain", {
  UserPoolId: "us-west-2_prodPoolId",
  Domain: "mycustomdomain"
});