โปรเจกต์ใน AWS

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

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

โมดูล 3: จัดเก็บข้อมูล Mysfit

ในโมดูลนี้ คุณได้จะสร้าง Amazon DynamoDB เพื่อจัดเก็บข้อมูล Mysfit ในตารางฐานข้อมูลกลาง

ภาพรวม

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

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

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

แผนผังสถาปัตยกรรม Fargate และ DynamoDB

 เวลาดำเนินการ

20 นาที

 บริการที่ใช้

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

  • A: สร้างตาราง DynamoDB

    ในการเพิ่มตาราง DynamoDB ไปยังสถาปัตยกรรม เราได้ทำการรวมไฟล์อินพุต JSON CLI อีกไฟล์หนึ่งที่ใช้กำหนดตารางในชื่อ MysfitsTable ตารางนี้จะมีดัชนีหลักที่กำหนดโดยแอตทริบิวต์แฮชคีย์ที่ชื่อว่า MysfitId และดัชนีรองอีกสองรายการ ดัชนีรองตัวแรกจะมีแฮชคีย์ของ Species และเรนจ์คีย์ของ MysfitId และดัชนีรองตัวที่สองจะมีแฮชคีย์ของ Alignment และ เรนจ์คีย์ของ MysfitId

    ดัชนีรองทั้งสองตัวนี้จะช่วยให้เราสามารถใช้การสืบค้นกับตารางเพื่อเรียกคืน Mysfits ทั้งหมดที่ตรงกับ Species หรือ Alignment ที่กำหนด เพื่อเปิดใช้งานฟังก์ชั่นการกรองที่คุณอาจสังเกตเห็นว่ายังไม่ทำงานบนเว็บไซต์ คุณสามารถดูไฟล์นี้ได้ที่ ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json ไม่จำเป็นต้องทำการเปลี่ยนแปลงไฟล์นี้เนื่องจากพร้อมที่จะทำงานแล้ว หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับดัชนี DynamoDB และแนวคิดหลักอื่นๆ ไปที่ หน้านี้ 

    ในการสร้างตารางโดยใช้ AWS CLI ให้ใช้คำสั่งต่อไปนี้ในเทอร์มินัล Cloud9:

    aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json

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

    aws dynamodb describe-table --table-name MysfitsTable

    หากเราใช้คำสั่งต่อไปนี้เพื่อเรียกคืนรายการทั้งหมดที่เก็บไว้ในตาราง คุณจะเห็นว่าตารางนั้นว่างเปล่า:

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    B: เพิ่มรายการไปยังตาราง DynamoDB

    นอกจากนี้ยังมีไฟล์ JSON ที่สามารถใช้ในการเพื่อเพิ่มกลุ่มรายการ Mysfit ลงในตารางนี้ด้วย ซึ่งสามารถทำได้ผ่าน DynamoDB API BatchWriteItem

    ในการเรียก API โดยใช้ไฟล์ JSON ให้ใช้คำสั่งเทอร์มินัลต่อไปนี้ (การตอบสนองจากบริการควรรายงานว่า ไม่มีรายการที่ไม่ได้ประมวลผล):

    aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json

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

    aws dynamodb scan --table-name MysfitsTable
  • A: คัดลอกโค้ดของบริการ Flask ที่มีการอัปเดตแล้ว

    ตอนนี้ เราได้รวมข้อมูลไว้ในตารางแล้ว ให้เปลี่ยนโค้ดแอปพลิเคชันของเราเพื่ออ่านจากตารางนี้แทนที่จะส่งคืนไฟล์ JSON แบบสแตติกที่ใช้ในโมดูล 2 เราได้รวมไฟล์ Python ชุดใหม่สำหรับไมโครเซอร์วิสของ Flask แล้ว แต่ไฟล์ JSON แบบสแตติกจะทำการส่งคำขอไปยัง DynamoDB แทนการอ่าน

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

    ในการคัดลอกไฟล์ใหม่ไปยังไดเรคทอรีพื้นที่จัดเก็บข้อมูล CodeCommit ให้เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล:

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    B: คัดลอกโค้ดของบริการ Flask ที่มีการอัปเดตแล้ว

    ตอนนี้ เราจำเป็นต้องตรวจสอบการเปลี่ยนแปลงโค้ดเหล่านี้เป็น CodeCommit โดยใช้ไคลเอนต์บรรทัดในคำสั่ง git

    เรียนใช้งานคำสั่งต่อไปนี้เพื่อตรวจสอบการเปลี่ยนแปลงโค้ดใหม่และเริ่มใช้ไปป์ไลน์ CI/CD ของคุณ:

    cd ~/environment/MythicalMysfitsService-Repository
    git add .
    git commit -m "Add new integration to DynamoDB."
    git push

    ตอนนี้ ในเวลาเพียง 5-10 นาที คุณจะเห็นการเปลี่ยนโค้ดที่ทำผ่านไปป์ไลน์ CI/CD เต็มรูปแบบของคุณใน CodePipeline และออกไปยังบริการ Flask ของคุณที่ถูกติดตั้งที่ AWS Fargate ใน Amazon ECS

    อย่าลังเลที่จะค้นหาคอนโซล AWS CodePipeline เพื่อดูความคืบหน้าการเปลี่ยนแปลงผ่านไปป์ไลน์ของคุณ

  • สุดท้าย เราจำเป็นต้องเผยแพร่หน้า index.html ใหม่ไปยังบัคเก็ต S3 ของเราเพื่อให้ฟังก์ชัน API ใหม่ที่ใช้สตริงสืบค้นเพื่อกรองการตอบสนองถูกนำมาใช้งาน ไฟล์ index.html ใหม่อยู่ที่ ~/environment/aws-modern-application-workshop/module-3/web/index.html

    เปิดไฟล์นี้ใน Cloud9 IDE และแทนที่ด้วยสตริงชื่อ “REPLACE_ME” เหมือนที่ทำในโมดูล 2ด้วยตำแหน่งข้อมูล NLB ที่เหมาะสม โปรดจำไว้ว่าอย่ารวมเส้นทาง /misfits

    อ้างอิงไฟล์ที่คุณได้แก้ไขแล้วในไดเรคทอรี่ /module-2/ หากต้องการ หลังจากการแทนที่ตำแหน่งข้อมูลให้ชี้ไปที่ NLB ของคุณแล้ว ให้อัปโหลดไฟล์ index.html ใหม่โดยใช้คำสั่งต่อไปนี้ (แทนที่ด้วยชื่อบัคเก็ตที่สร้างแล้วในโมดูล 1:)

    aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/

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

    นี่คือการสรุป โมดูล 3

ถัดไปคือการตั้งค่าการลงทะเบียนผู้ใช้