อัพโหลดเว็บไซต์ขึ้นบน S3 (Hosting Server) : Serverless Web App บน AWS : Part 8

อัพโหลดเว็บไซต์ขึ้นบน S3 (Hosting Server) : Serverless Web App บน AWS : Part 8

อัพโหลดโค้ดขึ้น S3 ถือว่าเสร็จสิ้นทุกอย่าง
Clock Icon2024.11.11

บทความนี้ดัดแปลงเนื้อหาบางส่วนมาจาก Hands-on Training ของ Website AWS Official ของญี่ปุ่น สามารถอ่านเนื้อหาต้นฉบับได้ที่ AWS Hands-on for Beginners Serverless #1 サーバーレスアーキテクチャで翻訳 Web API を構築する | AWS Webinar

บทความนี้เป็นส่วนนึงของเนื้อหาในบทเรียนเกี่ยวกับ AWS API Gateway ที่ผมสร้างขึ้นมา คุณผู้อ่านสามารถตรวจสอบเนื้อหาทั้งหมดได้โดยการคลิกที่ชื่อของผม

เป้าหมายใหญ่สุดของบทเรียนนี้คือ การทำ Web app แปลภาษาที่เป็น serverless ครับ

สวัสดีครับ ต้า ครับ

บทความนี้เป็นส่วนนึงของเนื้อหาในบทเรียนเกี่ยวกับ AWS API Gateway ที่ผมสร้างขึ้นมา
ซึ่งผมทำการแยกย่อยๆออกมาโดยเนื้อหาในบทความพวกนี้สามารถจบได้ในตัวของมันเอง

สำหรับหัวข้ออื่นๆ ของบทความนี้ สามารถตรวจสอบได้ที่ช่วงท้ายของบทความครับ

สำหรับบทความนี้เราจะมาทำกันในส่วนนี้ครับ

Hands-On-for-Beginners_2022_Serverless1_0819_v1 (3)

ในหัวข้อนี้ เราจะมาพาทำส่วนของ Front-end และเพิ่มการตั้งค่า CORS ให้เราสามารถดึงข้อความจาก domain ที่ไม่เหมือนกันมาได้

บทความนี้เราจะมาทำกันใน Singapore Region กันครับ

เริ่มลงมือทำ

ในพาร์ทนี้จะเป็น Part สุดท้าย โดยเราจะนำส่วนหน้าเว็บของเรา(html + CSS + JavaScript)อัพโหลดขึ้นบน AWS ให้ระบบทุกอย่างสามารถทำงานได้โดยไม่พึ่งคอมพิวเตอร์ของเรา

โดยเราจะทำให้เป็น Serverless (ไม่ต้องมาจัดการสเปคของตัว Server)
ซึ่งสามารถทำได้หลายแบบ หลากหลาย service

แต่ในครั้งนี้ผมจะใช้ S3 ในการเป็น Hosting Web เพราะผมยังไม่เคยนำเสนอรูปแบบนี้ออกมาในบทความของตัวเอง

แต่หากใครอยากจะใช้ Service อื่นๆ ทำ เช่น AWS Amplify ผมก็ได้เขียนมาเป็นบทความไว้แล้ว
ใครสนใจก็เข้าไปอ่านได้ครับ

Static Web Hosting แบบ Serverless ด้วย AWS Amplify (ง่ายมากๆ) | DevelopersIO

และเพื่อไม่ให้เสียเวลา เรามาเริ่ม Part สุดท้ายกันเลยครับ

เริ่ม

ให้เราทำการสร้าง S3 Bucket ใหม่ขึ้นมา

โดยสามารถเข้าได้จากลิ้งค์ด้านล่างนี้ครับ

Create bucket

ให้เราทำการตั้งชื่อ อะไรก็ได้

Screenshot 2024-10-02 152531

ทำการเอาติ๊กถูกในช่อง Block all public access ออก
ทำการติ๊กถูกในช่อง ☑I acknowledge that the current settings might result in this bucket and the objects within becoming public.

แล้วเลื่อนลงมาล่างสุด

กด Create bucket

Screenshot 2024-10-02 152619

ให้เราทำการอัพโหลดไฟล์ index.html, script.js, style.css ลงไปให้เหมือนในภาพด้านล่าง

part4-1

ให้เราดูหัวข้อด้านบน เลือก Properties

part4-2

เลื่อนลงมาด้านล่างสุด
ในหัวข้อ Static website hosting ให้เรากด Edit

part4-3

Static website hosting เลือก ◉Enable

Index document เขียน index.html

เลื่อนลงมาล่างสุด กด Save changes

part4-4

มาที่หัวข้อ Permissions

ไปที่ Bucket policy กด Edit

part4-5

ให้เรา Copy ข้อความด้านนี้ลงไปใส่

โดยเปลี่ยน ชื่อบักเก็ต เป็น Bucket name ของคุณ (ซึ่งในกรณีของผมคือ tar-translate-app)

จากนั้นกด Save changes

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::ชื่อบักเก็ต/*"
            ]
        }
    ]
}

จากนั้นให้เรากลับมาที่หัวข้อ Static website hosting
แล้วทำการ Copy ลิ้งค์ที่อยู่ในภาพ

part4-7

นำไปเปิด

หากได้ตามรูปในภาพถือว่าโอเคครับ

part4-6

เท่านี้ก็ถือว่าเสร็จสิ้นการทำ Serverless webapp แปลภาษาบน AWS แล้วครับ

เราสามารถส่งลิ้งค์ S3 ที่ได้มา ส่งให้คนอื่นสามารถนำไปเปิดใช้งานได้ครับ

สำหรับการเรียนเกี่ยวกับ API Gateway โดยใช้ Serverless ทุกอย่างก็มีแค่นี้ครับ
แต่หากใครอยากไปต่อ ลองใช้ในชีวิตจริง เราสามารถแปะ Domain ไปที่เว็บนี้ แล้วทำการติดตั้ง SSL Credencial แบบฟรีได้ด้วยครับ

โดยใครสนใจเนื้อหาในส่วนนี้สามารถเข้าไปดูได้ที่

วิธีการสร้างเว็บไซต์แบบ Static โดยใช้ S3 + CloudFront (ใช้งาน OAC) | DevelopersIO
ซึ่งบทความนี้จะเป็นการใช้ CloudFront + S3 ในการเผยแผ่เว็บของเรา

การตั้งค่า Free SSL กับ DNS ใน CloudFront โดยใช้ ACM กับ Route 53 | DevelopersIO
บทความนี้จะสอนการใช้ SSL Credential + domain

ทิ้งท้าย

เท่านี้ ก็ถือว่า Service ที่เราใช้ทุกอย่างถูกอัพโหลด ขึ้น AWS แล้ว โดยที่ทุก Service ที่ใช้เป็น Serverless (หมายความว่าหากไม่มีการ Access เกิดขึ้น จะแทบไม่มีค่าใช้จ่ายเกิดขึ้นเลย)

ผมหวังว่าผู้ที่ได้อ่านแล้วได้ทำตาม น่าจะได้ความรู้กลับไป ไม่มากก็น้อย
แล้วเจอกันในบทความต่อไป สวัสดีครับ

บทความ Part อื่นๆ

บทความอ้างอิง

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.