cloudcomponents / cdk-constructs

A collection of higher-level reusable cdk constructs
MIT License
623 stars 101 forks source link

[cdk-cloudfront-authorization] user-pool-domain lambda generates invalid config #211

Open elliotsegler opened 1 month ago

elliotsegler commented 1 month ago

The user-pool-domain lambda is generating invalid configuration.json which contain a busted domain name like below

{
domainName: "2b7f08a6.auth.async () => {
    if (runtimeConfig.region === void 0) {
      throw new Error("Region is missing from runtimeConfig");
    }
    const region = runtimeConfig.region;
    if (typeof region === "string") {
      return region;
    }
    return region();
  }.amazoncognito.com",
 }

I believe the faulting line is this one: https://github.com/cloudcomponents/cdk-constructs/blob/60f1d89a9d51100bdeffdd26d1956515c88ab790/packages/cdk-cloudfront-authorization/src/lambdas/user-pool-domain/index.ts#L31

the COGNITO_CLIENT.config.region which is a CognitoIdentityProviderClientResolvedConfig is able to return either a string, or a Provider<string>. The latter returns the promise of a string.

I'm not sure of the motivation behind using the resolved config, but seeing as we're feeding it from environment variables I suggest accessing that instead, because handling the choice of a string or a promise seems like unnecessary effort.