serverless-components / website

:zap: Instantly deploy static website on serverless infrastructure with zero configuration using Serverless Components.
https://serverless.com
Apache License 2.0
157 stars 49 forks source link

Incoherent bug happening for nuxt full static websites #70

Open oussj opened 3 years ago

oussj commented 3 years ago

Hello everyone !

I encountered an issue that I solved after a long suffering.

The issue

I deployed a nuxt project to AWS by using the website component in the full static nuxt generate mode. I had incoherent results like if all the pages had only access to the payload that was generated for the "/" page.

I reproduced the issue here : https://d2xk172pvk6ejw.cloudfront.net/

To reproduce the bug :

You can find the code here : https://github.com/oussj/nuxt-full-static-serverless-website-issue

After looking a bit more, I understood that it was linked to this issue : https://github.com/nuxt/nuxt.js/issues/2506.

I understood it was linked to the fact that the cloudfront distribution is created with the s3 bucket url, and not the s3 website url. As you can see here in the source code

When I went to the AWS console and I manually changed the Origin Domain Name, everything was back to normal.

Suggestion

I suggest to always create the cloudfront distribution with the website url http://website-oecg92n.s3-website-us-east-1.amazonaws.com instead of http://website-oecg92n.s3.us-east-1.amazonaws.com

If this is not okay for some cloudfront reason (I'd be very interested to understand it), I'd suggest to add a boolean optional input static in serverless.yml

If static would be set to true, the cloudfront distribution would be created with the s3 website url and not the s3 bucket url.

I'd be happy to do the pull request!

oussj commented 3 years ago

I found this explanation about the différent kinds of bucket urls. https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff After reading it, I think it makes complete sense to use the website bucket url when creating the cloudfront distribution

oussj commented 3 years ago

What do you think about the enhancement ?