Hur för att vara Värd för en Webbplats från S3

0
202

Chanserna är du förmodligen inte behöver en full webbservern NGINX som kör på EC2 för att få din webbplats igång. Om du bara vill vara värd för en statisk webbplats, kan du lagra allt innehåll i S3, och värd det.

Vänta, jag Behöver inte en Server?

Om din webbplats inte använda något server-side-behandling (som PHP), helt enkelt för att lagra filer på S3, konfigurera hink att vara värd platsen, och pekar på din DNS till hinken kommer att ersätta användningen av NGINX eller Apache.

“Server side processing” är mycket mindre omfattande än det låter. Bara för att din webbplats är “statisk” betyder inte att det ser ut som en av 1990-talet GeoCities sidan utan JavaScript. Alla som “statisk” innebär att alla dina tillgångar (HTML-sidor, JS-kod, CSS-stilmallar) inte ändra på begäran. Med språk som PHP, all bearbetning sker på serversidan, om två användare begära sin profil sida, servern kommer att skicka dem till olika sidor. Detta kan inte göras på S3, så om du använder PHP, måste du ställa upp en riktig webbserver. Detta främst gäller till WordPress, vilket använder PHP för att tjäna innehåll.

Men det blir allt vanligare att webbplatser ska vara stora JavaScript-applikationer. Med en ram som Reagerar, alla som behöver ska levereras till en bundle.js fil. Det är arbetet med klienten, för att inte servern, för att köra den här filen och starta programmet. Program som detta kan vara värd på S3 med några frågor. Detta behöver inte bli av med dina backend—antingen kan du fortfarande ha din app kommunicera med en API-server och prata med en databas, kommer du bara att autentisera förfrågningar som kommer från klienten. I kombination med AWS API-Gateway och Lambda, du kan inte köra ett enda EC2-server.

Låt dig inte luras av den enkla inställningar—för små områden, S3 kan minska dina kostnader nere till pennies på dollarn, och eftersom det inte finns några servrar att oroa sig för, det vågar perfekt hela vägen upp till miljontals användare. Du betalar bara en fast avgift för bandbredd in och ut, samt eventuella kostnader i samband med Lambda, RDS, eller andra tjänster som du använder med din app. Även för större företag att distribuera applikationer produktion, hosting från S3 är en mycket livskraftig och kostnadsbesparande alternativ om appen stöder det.

S3 inte har stöd för HTTPS för statiska webbplatser, vilket skulle vara en dealbreaker, men du kan lägga det bakom CloudFront (AWS CDN) som, utöver förbättrad cachelagring och prestanda, kan använda en egen domän med HTTPS. Den har även en mer generös gratis nivån för dataöverföring—50 GB snarare än S3 är 1 GB.

Att Sätta Upp Detta

För denna tutorial, i stället använder enkla HTML-sidan, vi kommer att distribuera starter projekt från skapa-reagera-app, som bättre visar upp S3 verkliga potential.

Efter att ha kört garn bygga, vi är kvar med följande tillgångar i /bygga-mappen:

Hela mappen att kopieras över till S3. Chef över till S3 Management Console och klicka på “Skapa Hink.”

Ge den ett namn (det måste vara unikt bland alla AWS-konton), och klicka på “Nästa”. Du kan aktivera versionshantering i alternativ här, men det finns inte mycket annat att tänka på. Klicka på “Nästa” igen.

På nästa skärm, du vill avmarkera “Blockera Alla Allmänheten har Tillträde.” Detta är på som standard för att förhindra föremål i hinkar från att vara synlig för det öppna internet, vilket skulle göra din hink onåbar. AWS kommer att dyka upp en varning som säger att slå tillbaka på om du använder “särskilda och kontrollerade användningsfall,” såsom statiska webbsidor. Eftersom det är precis vad vi ska göra, du kan ignorera det här.

Klicka på “Skapa” på hink, och öppna upp det.

Du kan manuellt dra innehållet i HTML-mappen i hinken, men en bättre metod är att använda AWS CLI för att synkronisera hela mappen upp till din hink. Kommandot är ganska enkel:

aws s3 sync . s3://hink-namn

Nu bör du se din mapp innehållet i hinken:

När allt är synkroniserade, kan du konfigurera hink för att tillåta webbplats hosting. Från fliken egenskaper, aktivera “Statisk Webbplats Värd” och väljer din index-fil. Du kan också välja ett fel fil för att visa användarna en mer personlig 404.

Detta visar på statiska webbsidor, men inte uttryckligen ge läsbehörighet. För att göra det måste du lägga till följande hink politik under Behörigheter > Hink Politik:

{
“Version”:”2012-10-17″,
“Uttalande”:[{
“Sid”:”PublicReadGetObject”,
“Effect”:”Tillåt”,
“Rektor”: “*”,
“Action”:[“s3:GetObject”],
“Resurs”:[“arn:aws:s3:::exempel-hink/*”
]
}
]
}

Detta kommer att dyka upp en annan varning som talar om att allmänhetens tillträde är på. Du kan ignorera detta.

Din hink nu kommer att vara synlig från följande slutpunkt:

http://BUCKET-NAME.s3-website.REGION.amazonaws.com/

Bra! Allt fungerar korrekt. Klienten begär hinken, som serverar den index.html fil, som hämtar allt som krävs för CSS-och JS-tillgångar, och gör spinning Reagera logotyp.

Men denna effekt är naturligtvis inte användarvänligt, så du vill förmodligen för att konfigurera en egen domän för din S3 webbplats. Den enklaste metoden är att använda CloudFront för att tjäna ansökningar, vilket är det enda sättet att stödja HTTPS ändå. Om du inte vill använda CloudFront, kan du ställa in en anpassad domän genom att använda Route 53 till alias till din hink är standard slutpunkten.

Chef över till CloudFront Konsolen. Välj “Skapa Distribution” och välj “Web” som typ. På nästa skärm, under “Ursprung Domännamn,” välj ditt S3 bucket från rullgardinsmenyn. Se till att även kolla “Omdirigera HTTP till HTTPS.”

Längre ner, kommer du vill konfigurera din domän. Ange i din alternativa domännamn och välj “Anpassad SSL.” Begäran från ACM, det kan ta upp till en halvtimme för att verifiera beroende på din DNS-leverantör, även om du är genom att använda Route 53, kan du skapa och verifiera skivan automatiskt inom ett par minuter.

Efter det, klicka på “Skapa Distribution” i botten, och vänta i ungefär 15 minuter för CloudFront för att få allt avgöras. När det är gjort, kommer du att kunna besöka ditt egna domännamn, och se din app serveras direkt från S3.

Om du vill göra en version hanteringen enklare, du kan ställa in en automatisk distribution pipeline med AWS CodePipeline. Välj helt enkelt distribution till S3, och AWS kommer att distribuera uppdateringar av källkoden automatiskt, inklusive bygga artefakter.