Closed icholy closed 1 year ago
Hi @icholy ,
How is the node version upgrade (which includes the upgrade to the v3 of the AWS SDK) affecting you? The node version and the SDK are internal details of the warmer lambda that is created. The actual configuration and API doesn't change at all.
My projects have sdk v2 listed in their dependencies. The builds start failing with the new version of the warmup plugin because the v3 sdk is missing.
I see.
When you deploy, you shouldn't have an explicit dependency on AWS SDK since it's already globally installed in all lambdas. If you are using serverless-offline or some other approach to run locally, then you need to install it and that's probably what you are hitting.
I can agree. That last update can be considered a major version due to that.
In my case, it was the webpack serverless plugin failing to resolve the v3 SDK. I only have a rule for excluding the v2 SDK from the bundle.
I see.
As you probably know the order in which you declare plugins in your serverless.yaml
matters.
It's important that you configure serverless-plugin-warmup
after webpack or any other plugin that tampers with the lambdas. That way the warmer code won't be transpiled (there is no need to) and it will just work.
Changing the plugin order doesn't seem to have an effect. I think this is because the warmers are added in the after:package:initialize
hook and the webpack bundling happens in the before:package:createDeploymentArtifact
hook which will always happen after.
Adding /@aws-sdk\/.*/
to my webpack externals
makes it work though.
Oh, true that.
Actually, the warmer is re-added on before:package:createDeploymentArtifact
just to deal with the webpack plugin modifying and breaking things...
I already told the Serverless guys that they should provide better guidance on the lifecycle events to ensure that plugins use them consistently and we avoid this issues. But it didn't get anywhere. See https://github.com/serverless/serverless/issues/10646
I agree that adding the SDK to externals is the way to go.
Thanks for your help with this.
The switch to AWS SDK v3 is a breaking change and should be behind a new major version.