AWS CDKJava:将组添加到UserPool

问题描述

AWS CDK(Java)尝试将组添加到UserPool失败,并显示:“错误:堆栈[CdkStackTest]中已经存在一个名称为'CdkStackTest'的构造”。我相信'scope'参数正在将CfnUserPoolGroup创建为另一个具有相同名称的构造。如何(正确)创建一个组并将其与UserPool关联?

public class CdkStackMain extends Stack {

    public CdkStackMain(final Construct scope,final String id,final StackProps props,StackMode stackMode) {
        super(scope,id,props);

        // userPool successfully created here

        CfnUserPoolGroup.Builder
                .create(scope,id)
                .groupName("admin")
                .userPoolId(userPool.getUserPoolId())
                .build();
    }
}

解决方法

我发现,如果将“ scope”替换为“ this”并将“ id”更改为唯一标识符,则CfnUserPoolGroup可以成功与UserPool关联。我还了解到,最佳做法是指定组取决于UserPool的存在。

CfnUserPoolGroup.Builder
    .create(this,"adminGroup")
    .groupName("admin")
    .userPoolId(userPool.getUserPoolId())
    .build()
    .addDependsOn((CfnResource)userPool.getNode().getDefaultChild());