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

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

อัพโหลดโค้ดขึ้น S3 ถือว่าเสร็จสิ้นทุกอย่าง
2024.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 อื่นๆ

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

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.