juanjoDiaz / serverless-plugin-warmup

Keep your lambdas warm during winter. ♨
MIT License
1.11k stars 114 forks source link

AWS SDK v3 upgrade is a breaking change #332

Closed icholy closed 1 year ago

icholy commented 1 year ago

The switch to AWS SDK v3 is a breaking change and should be behind a new major version.

juanjoDiaz commented 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.

icholy commented 1 year ago

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.

juanjoDiaz commented 1 year ago

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.

icholy commented 1 year ago

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.

juanjoDiaz commented 1 year ago

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.

icholy commented 1 year ago

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.

juanjoDiaz commented 1 year ago

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.

icholy commented 1 year ago

Thanks for your help with this.