modify SES config with CDK for existing Cognito user pool

0

Hi Team,

I'm configuring my existing cognito user pool to use SES, by adding this block of code to my existing CDK code that define the user pool:

.....
email: cognito.UserPoolEmail.withSES({
    sesRegion: 'us-east-1',
    fromEmail: 'noreply@myawesomeapp.com',
    fromName: 'Awesome App',
    replyTo: 'support@myawesomeapp.com',
    **sesVerifiedDomain**: 'myawesomeapp.com',
  }),
.....
.....

but when I deploy the stack it failed with this error:

there is already a construct with name : my-construct-id

is not possible to change the SES config for an existing user pool?

it seems to try to create a new user pool when i tried to deploy not changing the existing one.

Thank you!

1개 답변
0

Hello,

The error “there is already a construct with name” occurs when you have two constructs with the same construct Id in the same cdk project.

I’m assuming you have created a user pool earlier and now to configure it with SES, you have created one more construct with the same construct Id to define these

email: cognito.UserPoolEmail.withSES({
    sesRegion: 'us-east-1',
    fromEmail: 'noreply@myawesomeapp.com',
    fromName: 'Awesome App',
    replyTo: 'support@myawesomeapp.com',
    **sesVerifiedDomain**: 'myawesomeapp.com',
  }),

However, you can just add these properties to the user pool construct which already exists in your cdk code, as that would update that existing user pool with the above email configurations.

const userPool = new cognito.UserPool(this, 'userpool', {
      userPoolName: 'my-user-pool',
      selfSignUpEnabled: true,
      signInAliases: {
        email: true,
      },
      autoVerify: {
        email: true,
      },
      standardAttributes: {
        givenName: {
          required: true,
          mutable: true,
        },
        familyName: {
          required: true,
          mutable: true,
        },
      },
      passwordPolicy: {
        minLength: 6,
        requireLowercase: true,
        requireDigits: true,
        requireUppercase: false,
        requireSymbols: false,
      },
      accountRecovery: cognito.AccountRecovery.EMAIL_ONLY,
      removalPolicy: cdk.RemovalPolicy.RETAIN,
      email: cognito.UserPoolEmail.withSES({
            sesRegion: 'us-east-1',
            fromEmail: 'noreply@myawesomeapp.com',
            fromName: 'Awesome App',
            replyTo: 'support@myawesomeapp.com',
          }),
    });

If this is not the case, then do check for constructs with the same construct Id in your cdk project and rename any one of them.

Please note that, if the user pool was created through console then you would have to use CDK Custom Resources to add the email configurations and pass the parameters you wish to update to the “UpdateUserPool” API call handled by that custom resource. Kindly refer to the custom resource documentation [1] and API reference documentation [2] to know more about the same.

If the above suggestions don’t suffice your use case, please feel free to elaborate more on this issue.

[1] https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html#custom-resource-examples

[2] https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html

AWS
답변함 일 년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠