โปรเจกต์ใน AWS

สร้างเว็บแอปพลิเคชันสมัยใหม่

ติดตั้งเว็บแอปพลิเคชันเพื่อใช้จริง เชื่อมต่อกับฐานข้อมูล และวิเคราะห์พฤติกรรมของผู้ใช้

โมดูลที่ 5: บันทึกพฤติกรรมของผู้ใช้

ในโมดูลนี้ คุณจะบันทึกพฤติกรรมของผู้ใช้โดยใช้ AWS Lambda และบริการไร้เซิร์ฟเวอร์อื่นๆ

ภาพรวม

เมื่อไซต์ Mythical Mysfits ของคุณทำงานได้แล้ว เราจะมาสร้างวิธีในการทำความเข้าใจให้ดีขึ้นว่าผู้ใช้โต้ตอบกับเว็บไซต์และ Mysfits อย่างไร มันจะง่ายต่อเรามากในการวิเคราะห์การดำเนินการของผู้ใช้ที่ทำบนเว็บไซต์ที่นำไปสู่การเปลี่ยนแปลงข้อมูลในแบ็คเอนด์ของเรา เมื่อรับอุปการะหรือถูกใจสัตว์ประหลาด

แต่การทำความเข้าใจการดำเนินการที่ผู้ใช้ของคุณทำบนเว็บไซต์ก่อนที่จะตัดสินใจว่าถูกใจหรือรับอุปการะสัตว์ประหลาด ก็สามารถช่วยให้คุณออกแบบประสบการณ์ผู้ใช้ที่ดีขึ้นได้ในอนาคต ซึ่งจะทำให้สัตว์ประหลาดได้รับการอุปการะได้เร็วขึ้นอีกด้วย เพื่อช่วยเรารวบรวมข้อมูลเชิงลึกเหล่านี้ เราจะนำความสามารถนั้นมาใช้งานเพื่อให้ฟรอนต์เอนด์ของเว็บไซต์ส่งคำขอขนาดเล็กในแต่ละครั้งที่ผู้ใช้คลิกโปรไฟล์สัตว์ประหลาดไปยัง API ของไมโครเซอร์วิสใหม่ที่เราจะสร้างขึ้น ข้อมูลเหล่านั้นจะได้รับการประมวลผลแบบเรียลไทม์โดยฟังก์ชันโค้ดไร้เซิร์ฟเวอร์ รวมข้อมูล และจัดเก็บไว้สำหรับการวิเคราะห์ในอนาคตใดๆ ที่คุณอาจต้องการดำเนินการ

หลักการออกแบบแอปพลิเคชันสมัยใหม่เลือกที่จะใช้บริการที่เน้นเฉพาะ ไม่ผูกติด และเป็นโมดูล ดังนั้น แทนที่จะเพิ่มเมธอดและความสามารถเพิ่มขึ้นอีกในบริการ Mysfits ที่มีอยู่ที่คุณทำงานด้วยจนถึงปัจจุบัน เราจะสร้างบริการใหม่และไม่ผูกติดเพื่อรับเหตุการณ์คลิกของผู้ใช้จากเว็บไซต์ Mysfits สแตกที่สมบูรณ์นี้แสดงโดยใช้เทมเพลต CloudFormation ที่ให้มา

แผนผังสถาปัตยกรรม

บันทึกพฤติกรรมของผู้ใช้

เหตุใดจึงเลือก AWS Lambda สำหรับการนำมาใช้งานในครั้งนี้

Lambda เหมาะสำหรับแอปพลิเคชันที่ขับเคลื่อนด้วยข้อมูลที่จำเป็นต้องตอบสนองแบบเรียลไทม์ต่อการเปลี่ยนแปลงของข้อมูล การเปลี่ยนแปลงสถานะระบบ หรือการดำเนินการโดยผู้ใช้ ตามปกติแล้ว แอปพลิเคชันเหล่านี้จะเชื่อมต่อกับคลังข้อมูล เพื่อเข้าถึงและวิเคราะห์ข้อมูลสำหรับการประมวลผลแบบกลุ่ม การวิเคราะห์สตรีม และการอนุมานแมชชีนเลิร์นนิ่ง Lambda เหมาะอย่างยิ่งสำหรับแอปพลิเคชันเหล่านี้ เนื่องจากบูรณาการกับคลังข้อมูลอยู่แล้ว เช่น Kinesis Data Streams และ Data Firehose, S3, CloudWatch Events, CloudWatch Logs และ DynamoDB โดยมีแหล่งเหตุการณ์ทั้งหมด 17 แหล่งในปัจจุบัน   

ทรัพยากรไร้เซิร์ฟเวอร์ที่ใช้ในโมดูลนี้

สตรีมการนำส่ง AWS Kinesis Firehose: Kinesis Firehose คือบริการสตรีมแบบเรียบไทม์ที่มีความพร้อมใช้งานสูงและมีการจัดการ ซึ่งรับบันทึกข้อมูลและนำเข้าปลายทางการจัดเก็บที่เป็นไปได้หลายรูปแบบภายใน AWS โดยอัตโนมัติ เช่น บัคเก็ต Amazon S3 หรือคลัสเตอร์ของคลังข้อมูล Amazon Redshift นอกจากนี้ Kinesis Firehose ยังช่วยให้สามารถส่งบันทึกทั้งหมดที่สตรีมได้รับมาไปยังฟังก์ชันไร้เซิร์ฟเวอร์ที่สร้างขึ้นด้วย AWS Lambda โดยอัตโนมัติ ซึ่งหมายความว่าโค้ดที่คุณเขียนนั้นสามารถดำเนินการประมวลผลเพิ่มเติมหรือแปลงบันทึกใดๆ ได้ ก่อนที่จะถูกรวมและจัดเก็บไว้ในปลายทางที่กำหนดค่าไว้

บัคเก็ต Amazon S3: บัคเก็ตใหม่จะถูกสร้างขึ้นใน S3 ซึ่งบันทึกเหตุการณ์การคลิกที่ประมวลผลทั้งหมดจะถูกรวมไว้ในไฟล์และจัดเก็บเป็นอ็อบเจกต์

ฟังก์ชัน AWS Lambda: AWS Lambda ช่วยให้นักพัฒนาเขียนฟังก์ชันโค้ดที่มีเฉพาะสิ่งที่ต้องมีตามตรรกะ และนำโค้ดมาใช้งานจริง เรียกใช้ ทำให้มีความพร้อมใช้งานสูง และปรับขนาดได้โดยไม่ต้องจัดการโครงสร้างพื้นฐานใดๆ ทั้งสิ้น ฟังก์ชันโค้ดไร้เซิร์ฟเวอร์กำหนดได้โดยใช้ AWS SAM โดยจะถูกนำมาใช้งานจริงใน AWS Lambda ที่เขียนขึ้นใน Python แล้วจึงประมวลผลและเสริมบันทึกการคลิกที่ได้รับมาโดยสตรีมการนำส่ง โค้ดที่เราเขียนนั้นง่ายมาก และสามารถเขียนเสริมได้บนฟรอนต์เอนด์ของเว็บไซต์ได้โดยไม่ต้องมีการประมวลผลใดๆ ตามมาเลย ฟังก์ชันนี้จะเรียกข้อมูลแอตทริบิวต์เพิ่มเติมเกี่ยวกับการคลิกบน Mysfit เพื่อทำให้บันทึกการคลิกมีความหมายมากขึ้น (ข้อมูลที่ฟรอนต์เอนด์ของเว็บไซต์ดึงมาใช้แล้ว) แต่เพื่อจุดประสงค์ของเวิร์กช้อปนี้ โค้ดดังกล่าวมีจุดประสงค์เพื่อสาธิตให้เห็นความเป็นไปได้ทางสถาปัตยกรรมของการรวมฟังก์ชันโค้ดไร้เซิร์ฟเวอร์ เพื่อทำการประมวลผลเพิ่มเติมใดๆ หรือการแปลงที่จำเป็นในเวลาจริง ก่อนที่จะจัดเก็บบันทึก เมื่อสร้างฟังก์ชัน Lambda และกำหนดค่าสตรีมการนำส่ง Kinesis Firehose เป็นแหล่งเหตุการณ์ของฟังก์ชันแล้ว สตรีมการนำส่งจะส่งบันทึกการคลิกเป็นเหตุการณ์ไปยังฟังก์ชันโค้ดที่เราสร้างขึ้น รับการตอบสนองที่โค้ดของเราส่งคืน และส่งบันทึกที่อัปเดตแล้วไปยังบัคเก็ต Amazon S3 ที่กำหนดค่าไว้โดยอัตโนมัติ

REST API ของ Amazon API Gateway: AWS Kinesis Firehose จัดให้มี API บริการเช่นเดียวกับบริการอื่นๆ ของ AWS และในกรณีนี้ เราจะใช้การดำเนินการ PutRecord เพื่อใส่บันทึกเหตุการณ์การคลิกของผู้ใช้ไว้ในสตรีมการนำส่ง แต่เราไม่ต้องการให้ฟรอนต์เอนด์ของเว็บไซต์ของเราจำเป็นต้องบูรณาการกับ PutRecord API ของ Kinesis Firehose โดยตรง การกระทำเช่นนั้นจะทำให้เราจำเป็นต้องจัดการข้อมูลประจำตัว AWS ภายในโค้ดของฟรอนต์เอนด์ เพื่ออนุญาตคำขอ API เหล่านั้นต่อ PutRecord API และจะทำให้ผู้ใช้เห็น AWS API โดยตรงที่จำเป็นต้องใช้ (ซึ่งอาจล่อตาล่อใจให้ผู้เยี่ยมชมไซต์ที่ประสงค์ร้ายพยายามเพิ่มบันทึกในสตรีมการนำส่ง ซึ่งผิดรูปแบบหรือเป็นอันตรายต่อเป้าหมายของเราในการทำความเข้าใจพฤติกรรมของผู้ใช้ที่แท้จริง) ดังนั้น เราจะใช้ Amazon API Gateway แทน เพื่อสร้างพร็อกซีบริการของ AWS ให้กับ PutRecord API ของ Kinesis Firehose ซึ่งทำให้เราสามารถสร้างตำแหน่งข้อมูล RESTful สาธารณะของเราเองได้ โดยไม่จำเป็นต้องมีการจัดการข้อมูลประจำตัว AWS บนฟรอนต์เอนด์สำหรับคำขอ นอกจากนี้ เราจะใช้เทมเพลตการจับคู่คำขอใน API Gateway อีกด้วย ซึ่งจะทำให้เราสามารถกำหนดโครงสร้างเพย์โหลดคำขอของเราเองที่จะจำกัดคำขอให้เป็นไปตามโครงสร้างที่เราคาดหวัง แล้วจึงแปลงคำขอที่อยู่ในรูปแบบที่ถูกต้องเหล่านั้นเป็นโครงสร้างที่ PutRecord API ของ Kinesis Firehose ต้องการ

บทบาท IAM: Kinesis Firehose ต้องใช้บทบาทบริการที่ทำให้สามารถส่งบันทึกที่ได้รับเป็นเหตุการณ์ไปยังฟังก์ชัน Lambda ที่สร้างขึ้นได้ รวมทั้งบันทึกที่ประมวลผลแล้วไปยังบัคเก็ต S3 ปลายทาง นอกจากนี้ Amazon API Gateway API ยังต้องใช้บทบาทใหม่ที่อนุญาตให้ API เรียกใช้ PutRecord API ภายใน Kinesis Firehose สำหรับแต่ละคำขอ API ที่ได้รับอีกด้วย

คำแนะนำในการนำมาใช้งาน

  • ก: สร้างคลัง CodeCommit ใหม่

    สแตกใหม่ที่คุณจะนำมาใช้งานจริงโดยใช้ CloudFormation นี้ จะไม่ได้มีแค่เพียงทรัพยากรสภาพแวดล้อมของโครงสร้างพื้นฐานเท่านั้น แต่ยังมีโค้ดของแอปพลิเคชันที่ AWS Lambda จะสั่งทำงานเพื่อประมวลผลเหตุการณ์การสตรีมด้วย เพื่อรวมการสร้างโครงสร้างพื้นฐานและโค้ดของเราไว้ด้วยกันในการนำติดตั้งใช้จริงครั้งเดียว เราจะใช้เครื่องมืออีกตัวของ AWS ที่ติดตั้งล่วงหน้ามาใน AWS Cloud9 IDE ซึ่งได้แก่ AWS SAM CLI โค้ดสำหรับฟังก์ชันของ AWS Lambda จะถูกส่งไปยังบริการด้วยการอัปโหลดโค้ดของฟังก์ชันในแพ็คเกจ .zip ไปยังบัคเก็ต Amazon S3

    SAM CLI ทำให้กระบวนการนี้ทำงานอัตโนมัติให้เรา โดยเราสามารถนำมาใช้เพื่อสร้างเทมเพลต CloudFormation ที่อ้างถึงภายในในระบบไฟล์ที่จัดเก็บโค้ดทั้งหมดสำหรับฟังก์ชัน Lambda ของเรา จากนั้น SAM CLI ก็จะจัดเก็บเป็นแพ็คเกจไว้ในไฟล์ .zip อัปโหลดขึ้นบัคเก็ต Amazon S3 ที่กำหนดค่าไว้ และสร้างเทมเพลต CloudFormation ใหม่ที่ระบุตำแหน่งใน S3 ที่อัปโหลดแพ็คเกจ .zip ที่สร้างขึ้นไว้สำหรับการนำมาติดตั้งใช้จริงใน AWS Lambda จากนั้น เราสามารถนำเทมเพลต CloudFormation ที่ SAM CLI สร้างขึ้นนั้นมาใช้งานจริงกับ AWS และเฝ้าดูสภาพแวดล้อมถูกสร้างขึ้นพร้อมกับฟังก์ชัน Lambda ที่ใช้แพ็คเกจโค้ดที่ SAM CLI อัปโหลดนั้น

    ก่อนอื่น เราจะมาสร้างคลัง CodeCommit ใหม่ที่โค้ดของบริการสตรีมจะทำงาน:

    aws codecommit create-repository --repository-name MythicalMysfitsStreamingService-Repository

    คัดลอกค่าสำหรับ "cloneUrlHttp" ในคำตอบต่อคำสั่งดังกล่าว โดยควรอยู่ในรูปแบบ: https://git-codecommit.REPLACE_ME_REGION.amazonaws.com/v1/repos/MythicalMysfitsStreamingService-Repository

    จากนั้น ลอกแบบคลังใหม่ที่ว่างเปล่านั้นลงใน IDE ของเรา:

    cd ~/environment/
    git clone {insert the copied cloneValueUrl from above}
    ข: คัดลอกโค้ดเบสของบริการสตรีม

    ตอนนี้ ให้ย้ายไดเรกทอรีการทำงานของเราไปยังคลังใหม่นี้:

    cd ~/environment/MythicalMysfitsStreamingService-Repository/

    จากนั้น คัดลอกส่วนประกอบของแอปพลิเคชันในโมดูลที่ 5 ลงในไดเรกทอรีของคลังใหม่นี้:

    cp -r ~/environment/aws-modern-application-workshop/module-5/app/streaming/* .

    และคัดลอกเทมเพลต CloudFormation สำหรับโมดูลนี้เช่นกัน

    cp ~/environment/aws-modern-application-workshop/module-5/cfn/* .
  • ก: ใช้ Pip เพื่อติดตั้งการขึ้นต่อกันของฟังก์ชัน Lambda

    ตอนนี้ เราก็มีไดเรกทอรีคลังที่กำหนดไว้ด้วยสิ่งต่างๆ ที่จัดให้มาทั้งหมด

    เทมเพลต CFN เพื่อสร้างสแตกที่สมบูรณ์

    สคริปต์ Python ที่ประกอบด้วยโค้ดสำหรับฟังก์ชัน Lambda ของเรา: streamProcessor.py

    นี่คือวิธีการทั่วไปที่ลูกค้า AWS ใช้ในการจัดเก็บเทมเพลต CloudFormation ร่วมกับโค้ดของแอปพลิเคชันของตนในคลัง วิธีนี้จะทำให้คุณมีเพียงแหล่งเดียว ซึ่งสามารถติดตามการเปลี่ยนแปลงทั้งหมดต่อแอปพลิเคชันและสภาพแวดล้อมร่วมกันได้

    แต่ถ้าคุณดูโค้ดภายในไฟล์ streamProcessor.py คุณจะสังเกตเห็นว่ามีการใช้แพ็คเกจ Python ของคำขอเพื่อสร้างคำขอ API ไปยังบริการ Mythical Mysfits ที่คุณสร้างขึ้นก่อนหน้านี้ ไลบรารีภายนอกไม่รวมอยู่ในสภาพแวดล้อมของรันไทม์ของ AWS Lambda โดยอัตโนมัติ เนื่องจากลูกค้า AWS ที่แตกต่างกันอาจต้องใช้ไลบรารีต่างๆ ในเวอร์ชันที่แตกต่างกัน เป็นต้น

    คุณจะต้องจัดเก็บการขึ้นต่อกันทั้งหมดของไลบรารีของคุณเป็นแพ็คเกจร่วมกับฟังก์ชันโค้ด Lambda ของคุณ ก่อนที่จะอัปโหลดไปยังบริการ Lambda เราจะใช้ pip โปรแกรมจัดการแพ็คเกจ Python เพื่อดำเนินการดังกล่าว ในเทอร์มินัล Cloud9 เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจคำขอและการขึ้นต่อกันภายในร่วมกับโค้ดของฟังก์ชันของคุณ:

    pip install requests -t .

    เมื่อคำสั่งทำงานเสร็จแล้ว คุณจะเห็นโฟลเดอร์แพ็คเกจ python เพิ่มเติมหลายโฟลเดอร์ที่จัดเก็บไว้ภายในไดเรกทอรีคลังของคุณ

    ข: อัปเดตโค้ดของฟังก์ชัน Lambda

    ต่อไป เรามีโค้ดที่จะต้องเปลี่ยนแปลงอีกหนึ่งอย่าง ก่อนที่โค้ดของฟังก์ชัน Lambda ของเราจะพร้อมโดยสมบูรณ์สำหรับการนำไปติดตั้งใช้จริง มีบรรทัดภายในไฟล์ streamProcessor.py ที่จะต้องแทนที่ด้วย ApiEndpoint สำหรับ API ของบริการ Mysfits ของคุณ ซึ่งเป็น ApiEndpoint ของบริการเดียวกันที่คุณสร้างขึ้นในโมดูลที่ 4 และใช้บนฟรอนต์เอนด์ของเว็บไซต์

    replace-api-endpoint

    บริการดังกล่าวทำหน้าที่ในการบูรณาการกับ MysfitsTable ใน DynamoDB ดังนั้น แม้ว่าเราจะสามารถเขียนฟังก์ชัน Lambda ที่บูรณาการโดยตรงกับตารางของ DynamoDB ได้โดยตรงเช่นกัน แต่การกระทำเช่นนั้นจะละเมิดจุดประสงค์ของไมโครเซอร์วิสแรก และทำให้เรามีโค้ดเบสหลายๆ ตัวหรือแยกต่างหากที่บูรณาการกับตารางเดียวกัน แทนที่จะทำเช่นนั้น เราจะบูรณาการกับตารางดังกล่าวผ่านทางบริการที่มีอยู่ และมีสถาปัตยกรรมแอปพลิเคชันที่ไม่ผูกติดและเป็นโมดูลมากกว่านั้นมาก

    ค: พุชโค้ดของคุณลงใน CodeCommit

    เราจะมายืนยันการเปลี่ยนแปลงโค้ดของเราไปยังคลังใหม่ เพื่อให้ได้รับการบันทึกไว้ใน CodeCommit:

    git add .
    git commit -m "New stream processing service."
    git push
  • ก: สร้างบัคเก็ต S3 สำหรับแพ็คเกจโค้ดของฟังก์ชัน Lambda

    ด้วยบรรทัดที่เปลี่ยนแปลงในไฟล์ Python และได้ยืนยันโค้ดของเราแล้ว เราก็พร้อมที่จะใช้ AWS SAM CLI เพื่อจัดเก็บโค้ดทั้งหมดของฟังก์ชันของเราเป็นแพ็คเกจ อัปโหลดขึ้น S3 และสร้างเทมเพลต CloudFormation ที่ติดตั้งใช้จริงได้เพื่อสร้างสแตกการสตรีมของเรา

    อันดับแรก ใช้ AWS CLI เพื่อสร้างบัคเก็ต S3 ใหม่ที่จะอัปโหลดแพ็คเกจโค้ดของฟังก์ชัน Lambda ของเรา ชื่อบัคเก็ต S3 จะต้องไม่ซ้ำกันในลูกค้า AWS ทั้งหมด ดังนั้น ให้เปลี่ยนส่วนท้ายของชื่อบัคเก็ตนี้ด้วยสตริงที่ทำให้คุณไม่ซ้ำกับคนอื่น:

    ข: ใช้ SAM CLI เพื่อจัดเก็บโค้ดของคุณเป็นแพ็คเกจสำหรับ Lambda

    ด้วยบัคเก็ตของเราที่สร้างขึ้น เราพร้อมที่จะใช้ SAM CLI เพื่อจัดเก็บโค้ดของเราเป็นแพ็คเกจและอัปโหลดโค้ดดังกล่าว และแปลงเทมเพลต CloudFormation เราต้องแทนค่าพารามิเตอร์ของคำสั่งสุดท้ายด้วยชื่อบัคเก็ตที่คุณเพิ่งสร้างขึ้นข้างต้น (คำสั่งนี้ยังถือว่าเทอร์มินัลของคุณยังอยู่ในไดเรกทอรีการทำงานของคลังอีกด้วย):

    sam package --template-file ./real-time-streaming.yml --output-template-file ./transformed-streaming.yml --s3-bucket replace-with-your-bucket-name

    ถ้าสำเร็จ คุณจะเห็นไฟล์ transformed-streaming.yml ที่เพิ่งสร้างขึ้นอยู่ภายในไดเรกทอรี ./MythicalMysfitsStreamingService-Repository/ หากคุณดูเนื้อหา คุณจะเห็นว่าพารามิเตอร์ CodeUri ของฟังก์ชัน Lambda แบบไร้เซิร์ฟเวอร์นั้นได้รับการอัปเดตด้วยตำแหน่งอ็อบเจกต์ที่ SAM CLI ได้อัปโหลดโค้ดที่จัดเก็บเป็นแพ็คเกจของคุณ

    ค: ติดตั้งสแตกเพื่อใช้จริงโดยใช้ AWS CloudFormation

    นอกจากนี้คำสั่ง SAM CLI ยังได้ส่งคืนคำสั่ง CloudFormation ที่จำเป็นต้องดำเนินการเพื่อสร้างสแตกใหม่ที่สมบูรณ์ แต่เนื่องจากสแตกของเราสร้างทรัพยากร IAM คุณจึงต้องเพิ่มพารามิเตอร์อีกหนึ่งตัวให้กับคำสั่ง ดำเนินการคำสั่งต่อไปนี้เพื่อติดตั้งสแตกการสตรีมเพื่อใช้จริง:

    aws cloudformation deploy --template-file /home/ec2-user/environment/MythicalMysfitsStreamingService-Repository/cfn/transformed-streaming.yml --stack-name MythicalMysfitsStreamingStack --capabilities CAPABILITY_IAM

    เมื่อสร้างสแตกดังกล่าวเสร็จแล้ว ไมโครเซอร์วิสการประมวลผลแบบเรียลไทม์ทั้งหมดก็จะถูกสร้างขึ้น

    ในสถานการณ์สมมติในอนาคตที่มีการเปลี่ยนแปลงโค้ดกับฟังก์ชัน Lambda ของคุณเพียงอย่างเดียว และไม่มีการเปลี่ยนแปลงในส่วนที่เหลือของสแตก CloudFormation ของคุณ คุณสามารถใช้คำสั่ง AWS SAM CLI และ CloudFormation ซ้ำได้ดังเช่นข้างต้น ซึ่งจะส่งผลให้สภาพแวดล้อมของโครงสร้างพื้นฐานยังคงไม่มีการเปลี่ยนแปลง แต่เกิดการนำโค้ดมาใช้งานจริงกับฟังก์ชัน Lambda ของคุณ

  • ก: อัปเดตเนื้อหาเว็บไซต์

    เมื่อสแตกการสตรีมทำงานได้แล้ว ตอนนี้ เราจะต้องเผยแพร่ฟรอนต์เอนด์ของ Mythical Mysfits เวอร์ชันใหม่ที่มี JavaScript ที่ส่งเหตุการณ์ให้แก่บริการของเรา เมื่อใดก็ตามที่ผู้ใช้คลิกโปรไฟล์สัตว์ประหลาด

    ไฟล์ index.html ใหม่รวมอยู่ที่: ~/environment/aws-modern-application-workshop/module-5/web/index.html

    ไฟล์นี้ประกอบด้วยชื่อแทนเดียวกันกับโมดูลที่ 4 ซึ่งจะต้องอัปเดต รวมทั้งชื่อแทนเพิ่มเติมสำหรับตำแหน่งข้อมูลของบริการประมวลผลสตรีมใหม่ที่คุณเพิ่งสร้างขึ้น สำหรับค่าของตัวแปรก่อนหน้านี้ คุณสามารถดูไฟล์ index.html ก่อนหน้าที่คุณอัปเดตโดยเป็นส่วนของโมเดลที่ 4

    ดำเนินการคำสั่งต่อไปนี้ เพื่อให้สแตกการสตรีมใหม่ดึงข้อมูลตำแหน่งข้อมูลใหม่ของ API Gateway สำหรับบริการประมวลผลสตรีมของคุณ:

    aws cloudformation describe-stacks --stack-name MythicalMysfitsStreamingStack
    ข: พุชเวอร์ชันใหม่ของไซต์ไปยัง S3

    เปลี่ยนค่าสุดท้ายภายใน index.html สำหรับ streamingApiEndpoint แล้วคุณก็จะพร้อมที่จะเผยแพร่อัปเดตต่อหน้าแรกของ Mythical Mysfits เวอร์ชันล่าสุด:

    aws s3 cp ~/environment/aws-modern-application-workshop/module-5/web/index.html s3://YOUR-S3-BUCKET/

    รีเฟรชเว็บไซต์ Mythical Mysfits ของคุณในเบราว์เซอร์อีกครั้ง แล้วคุณก็จะมีไซต์ที่บันทึกและเผยแพร่ในแต่ละครั้งที่ผู้ใช้คลิกบนโปรไฟล์สัตว์ประหลาด

    เพื่อดูบันทึกที่ได้รับการประมวลผล บันทึกเหล่านั้นจะเข้ามาอยู่ในบัคเก็ต S3 ปลายทางที่สร้างขึ้นโดยเป็นส่วนหนึ่งของ MythicalMysfitsStreamingStack ของคุณ

    เมื่อคุณได้สร้างสถาปัตยกรรมแอปพลิเคชันสมัยใหม่เสร็จแล้ว ขอแนะนำให้คุณสำรวจคอนโซล AWS และบริการต่างๆ ทั้งหมดที่คุณสร้างขึ้นเพื่อเปิดใช้ Mythical Mysfits

  • อย่าลืมลบทรัพยากรทั้งหมดที่สร้างขึ้นระหว่างเวิร์กช้อป เพื่อให้แน่ใจว่าไม่มีการเรียกเก็บเงินทรัพยากรต่อเนื่องนานเกินจุดมุ่งหมายของคุณ เราขอแนะนำให้คุณใช้คอนโซล AWS เพื่อสำรวจทรัพยากรที่คุณสร้างขึ้น และลบออกไปเมื่อคุณพร้อม

    สำหรับสองกรณีที่คุณจัดเตรียมทรัพยากรโดยใช้ AWS CloudFormation คุณสามารถลบทรัพยากรเหล่านั้นได้โดยเพียงแค่เรียกใช้คำสั่ง CLI ต่อไปนี้สำหรับแต่ละสแตก:

    aws cloudformation delete-stack --stack-name STACK-NAME-HERE

    เพื่อลบทรัพยากรที่สร้างขึ้นทั้งหมด คุณสามารถไปที่คอนโซล AWS ต่อไปนี้ ซึ่งประกอบด้วยทรัพยากรที่คุณสร้างขึ้นระหว่างเวิร์กช้อป Mythical Mysfits:

สรุป

ประสบการณ์นี้มีจุดมุ่งหมายเพื่อให้คุณได้สัมผัสถึงการที่นักพัฒนาออกแบบและสร้างสถาปัตยกรรมแอปพลิเคชันสมัยใหม่บน AWS นักพัฒนาบน AWS สามารถเขียนโปรแกรมเพื่อจัดให้มีทรัพยากรได้โดยใช้ AWS CLI นำคำจำกัดความของโครงสร้างพื้นฐานมาใช้ซ้ำโดยผ่าน AWS CloudFormation สร้างและนำการเปลี่ยนแปลงโค้ดมาใช้งานจริงโดยอัตโนมัติโดยใช้ชุดเครื่องมือของนักพัฒนา AWS สำหรับบริการโค้ด และใช้ประโยชน์จากความสามารถต่างๆ ที่หลากหลายในการประมวลผลและบริการแอปพลิเคชัน ซึ่งคุณไม่จำเป็นต้องจัดเตรียมหรือจัดการเซิร์ฟเวอร์ใดๆ เลย

เพื่อเป็นขั้นตอนต่อไปที่ดี คุณควรดูรายละเอียดเทมเพลต CloudFormation ที่ให้มาและทรัพยากรที่ประกาศภายในนั้น เพื่อเรียนรู้เพิ่มเกี่ยวกับการทำงานภายในของเว็บไซต์ Mythical Mysfits ที่คุณเพิ่งสร้างขึ้น

เราหวังว่าคุณจะเพลิดเพลินกับเวิร์กช้อปแอปพลิเคชันสมัยใหม่ของ AWS บทแนะนำสอนการใช้งานนี้ยังโฮสต์ไว้บน GitHub อีกด้วย เพื่อให้คุณสามารถส่งคำถามมาได้ หากคุณมีข้อแนะนำ นอกจากนี้ คุณยังสามารถเตรียมใช้งานคำขอพูลของ GitHub ได้ หากคุณต้องการร่วมมือทำงานเพื่อปรับปรุงโค้ด

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาบน AWS ไปที่ AWS Developer Center ของเรา

ขอแสดงความยินดี!

คุณได้สร้างเว็บแอปพลิเคชันสมัยใหม่บน AWS แล้ว
แชร์กับเพื่อนๆ ของคุณ หรือส่งคำติชมถึงเรา

Twilight Glitter ประทับใจกับงานของคุณ