sid88in / serverless-appsync-plugin

serverless plugin for appsync
MIT License
950 stars 186 forks source link

[v2 upgrade] Can't use any longer intrinsic functions for config fields like openIdConnectConfig #638

Open ronnyroeller opened 1 month ago

ronnyroeller commented 1 month ago

We're trying to upgrade serverless-appsync-plugin from v1 to v2.

We're using CF functions for some of the values like composing the issuer URL of the OpenID provider:

additionalAuthenticationProviders: [
  { authenticationType: 'API_KEY' },
  {
    authenticationType: 'OPENID_CONNECT',
    openIdConnectConfig: {
      issuer: {
        'Fn::Join': [
         '',
         [ 'https://', { "Fn::ImportValue": "IssuerDomain" } ]
        ]
      }
    }   
  }
]

The serverless-appsync-plugin v1 correctly resovles the issuer URL.

Yet, serverless-appsync-plugin v2 creates below errors:

Cannot resolve serverless.ts: Variables resolution errored with:
  - Cannot resolve variable at "resources.Resources.AppSyncApiKeyParameter.Properties.Value": Invalid AppSync Configuration:
     at appSync/additionalAuthentications/1/config/issuer: must be string
  - Cannot resolve variable at "resources.Outputs.GraphQLAppConfigApiKey.Value": Invalid AppSync Configuration:
     at appSync/additionalAuthentications/1/config/issuer: must be string

We encounter the same issue also with other config fields:

Cannot resolve serverless.ts: Variables resolution errored with:
  - Cannot resolve variable at "resources.Resources.AppSyncApiKeyParameter.Properties.Value": Invalid AppSync Configuration:
     at appSync/xrayEnabled: must be boolean
     at appSync/waf/enabled: must be boolean
     at appSync/logging/excludeVerboseContent: must be boolean,

Looking through the validation code, this seems to be an intensional limitation: https://github.com/sid88in/serverless-appsync-plugin/blob/3b56bf248357cd9279062030282dc4cdcde3fcfc/src/validation.ts#L131

Is there a new way to inject computed values into the appsync configuration? Or was this feature removed on purpose?

Happy to contribute PR.