AWS SDK Version 3 for .NET
API Reference

AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with Amazon Pinpoint. Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in.

If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In sandbox mode, you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see SMS message settings for Amazon Cognito user pools in the Amazon Cognito Developer Guide.

Creates a new Amazon Cognito user pool and sets the password policy for the pool.

If you don't provide a value for an attribute, Amazon Cognito sets it to its default value.

Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy.

Learn more

Note:

For .NET Core this operation is only available in asynchronous form. Please refer to CreateUserPoolAsync.

Namespace: Amazon.CognitoIdentityProvider
Assembly: AWSSDK.CognitoIdentityProvider.dll
Version: 3.x.y.z

Syntax

C#
public abstract CreateUserPoolResponse CreateUserPool(
         CreateUserPoolRequest request
)

Parameters

request
Type: Amazon.CognitoIdentityProvider.Model.CreateUserPoolRequest

Container for the necessary parameters to execute the CreateUserPool service method.

Return Value


The response from the CreateUserPool service method, as returned by CognitoIdentityProvider.

Exceptions

ExceptionCondition
InternalErrorException This exception is thrown when Amazon Cognito encounters an internal error.
InvalidEmailRoleAccessPolicyException This exception is thrown when Amazon Cognito isn't allowed to use your email identity. HTTP status code: 400.
InvalidParameterException This exception is thrown when the Amazon Cognito service encounters an invalid parameter.
InvalidSmsRoleAccessPolicyException This exception is returned when the role provided for SMS configuration doesn't have permission to publish using Amazon SNS.
InvalidSmsRoleTrustRelationshipException This exception is thrown when the trust relationship is not valid for the role provided for SMS configuration. This can happen if you don't trust cognito-idp.amazonaws.com or the external ID provided in the role does not match what is provided in the SMS configuration for the user pool.
LimitExceededException This exception is thrown when a user exceeds the limit for a requested Amazon Web Services resource.
NotAuthorizedException This exception is thrown when a user isn't authorized.
TooManyRequestsException This exception is thrown when the user has made too many requests for a given operation.
UserPoolTaggingException This exception is thrown when a user pool tag can't be set or updated.

Examples

The following example creates a user pool with all configurable properties set to an example value. The resulting user pool allows sign-in with username or email address, has optional MFA, and has a Lambda function assigned to each possible trigger.

Example user pool with email and username sign-in


var client = new AmazonCognitoIdentityProviderClient();
var response = client.CreateUserPool(new CreateUserPoolRequest 
{
    AccountRecoverySetting = new AccountRecoverySettingType { RecoveryMechanisms = new List<RecoveryOptionType> {
        new RecoveryOptionType {
            Name = "verified_email",
            Priority = 1
        }
    } },
    AdminCreateUserConfig = new AdminCreateUserConfigType {
        AllowAdminCreateUserOnly = false,
        InviteMessageTemplate = new MessageTemplateType {
            EmailMessage = "Your username is {username} and temporary password is {####}.",
            EmailSubject = "Your sign-in information",
            SMSMessage = "Your username is {username} and temporary password is {####}."
        }
    },
    AliasAttributes = new List<string> {
        "email"
    },
    AutoVerifiedAttributes = new List<string> {
        "email"
    },
    DeletionProtection = "ACTIVE",
    DeviceConfiguration = new DeviceConfigurationType {
        ChallengeRequiredOnNewDevice = true,
        DeviceOnlyRememberedOnUserPrompt = true
    },
    EmailConfiguration = new EmailConfigurationType {
        ConfigurationSet = "my-test-ses-configuration-set",
        EmailSendingAccount = "DEVELOPER",
        From = "support@example.com",
        ReplyToEmailAddress = "support@example.com",
        SourceArn = "arn:aws:ses:us-east-1:123456789012:identity/support@example.com"
    },
    EmailVerificationMessage = "Your verification code is {####}.",
    EmailVerificationSubject = "Verify your email address",
    LambdaConfig = new LambdaConfigType {
        CustomEmailSender = new CustomEmailLambdaVersionConfigType {
            LambdaArn = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
            LambdaVersion = "V1_0"
        },
        CustomMessage = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        CustomSMSSender = new CustomSMSLambdaVersionConfigType {
            LambdaArn = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
            LambdaVersion = "V1_0"
        },
        DefineAuthChallenge = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        KMSKeyID = "arn:aws:kms:us-east-1:123456789012:key/a6c4f8e2-0c45-47db-925f-87854bc9e357",
        PostAuthentication = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        PostConfirmation = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        PreAuthentication = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        PreSignUp = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        PreTokenGeneration = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        UserMigration = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction",
        VerifyAuthChallengeResponse = "arn:aws:lambda:us-east-1:123456789012:function:MyFunction"
    },
    MfaConfiguration = "OPTIONAL",
    Policies = new UserPoolPolicyType { PasswordPolicy = new PasswordPolicyType {
        MinimumLength = 6,
        RequireLowercase = true,
        RequireNumbers = true,
        RequireSymbols = true,
        RequireUppercase = true,
        TemporaryPasswordValidityDays = 7
    } },
    PoolName = "my-test-user-pool",
    Schema = new List<SchemaAttributeType> {
        new SchemaAttributeType {
            AttributeDataType = "Number",
            DeveloperOnlyAttribute = true,
            Mutable = true,
            Name = "mydev",
            NumberAttributeConstraints = new NumberAttributeConstraintsType {
                MaxValue = "99",
                MinValue = "1"
            },
            Required = false,
            StringAttributeConstraints = new StringAttributeConstraintsType {
                MaxLength = "99",
                MinLength = "1"
            }
        }
    },
    SmsAuthenticationMessage = "Your verification code is {####}.",
    SmsConfiguration = new SmsConfigurationType {
        ExternalId = "my-role-external-id",
        SnsCallerArn = "arn:aws:iam::123456789012:role/service-role/test-cognito-SMS-Role"
    },
    SmsVerificationMessage = "Your verification code is {####}.",
    UserAttributeUpdateSettings = new UserAttributeUpdateSettingsType { AttributesRequireVerificationBeforeUpdate = new List<string> {
        "email"
    } },
    UserPoolAddOns = new UserPoolAddOnsType { AdvancedSecurityMode = "OFF" },
    UserPoolTags = new Dictionary<string, string> {
        { "my-test-tag-key", "my-test-tag-key" }
    },
    UsernameConfiguration = new UsernameConfigurationType { CaseSensitive = true },
    VerificationMessageTemplate = new VerificationMessageTemplateType {
        DefaultEmailOption = "CONFIRM_WITH_CODE",
        EmailMessage = "Your confirmation code is {####}",
        EmailMessageByLink = "Choose this link to {##verify your email##}",
        EmailSubject = "Here is your confirmation code",
        EmailSubjectByLink = "Here is your confirmation link",
        SmsMessage = "Your confirmation code is {####}"
    }
});

UserPoolType userPool = response.UserPool;

            

Version Information

.NET Framework:
Supported in: 4.5, 4.0, 3.5

See Also