AWS CDK - 以编程方式将 IDP 设置为“已启用”状态

AWS CDK - Set IDPs to "enabled' state programmatically

我在我的用户池中成功创建了 Facebook 和 Google IDP,但是,它们在 运行 CDK deploy 之后处于 'disabled' 状态,我需要手动进入 UI 并单击 enabled。一旦启用,IDP 就会按预期工作。

如何以编程方式将它们设置为 enabled

this.userPool = new UserPool(this, props.userPoolId, {
  selfSignUpEnabled: true,
  autoVerify: { email: true },
  signInAliases: { email: true },
});

const googleIdp = new UserPoolIdentityProviderGoogle(
  this,
  "UserPoolIdentityProviderGoogle",
  {
    userPool: this.userPool,
    // Removed
  }
);

this.userPool.identityProviders.push(googleIdp);

const facebookIdp = new UserPoolIdentityProviderFacebook(
  this,
  "UserPoolIdentityProviderFacebook",
  {
    userPool: this.userPool,
    // Removed
  }
);

this.userPool.identityProviders.push(facebookIdp);

const userPoolClient = new UserPoolClient(this, props.userPoolClientId, {
  userPool: this.userPool,
  generateSecret: false,
  supportedIdentityProviders: [
    UserPoolClientIdentityProvider.GOOGLE,
    UserPoolClientIdentityProvider.FACEBOOK,
  ],
});

userPoolClient.node.addDependency(googleIdp, facebookIdp)

我以为我正在使用 UserPoolClientIdentityProvider.GOOGLEUserPoolClientIdentityProvider.FACEBOOK 行启用这些值,但我可能错过了什么?

通过调整事件发生的顺序解决:

userPoolClient.node.addDependency(googleIdp, facebookIdp)

this.userPool.identityProviders.push(googleIdp);
this.userPool.identityProviders.push(facebookIdp);

我实际上不确定为什么会这样,但我想您只需要确保 userPoolClient 具有正确的 IDP 资源,然后再将这些相同的 IDP 推入 userPool

如果有人有更好的解释,很想听听!