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

เวลาดำเนินการ
20 นาที
บริการที่ใช้
ลองใน GitHub
คำแนะนำในการนำมาใช้งาน
-
ขั้นตอนที่ 1: เพิ่มฐานข้อมูล NoSQL ไปยัง Mythical Mysfits
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
-
ขั้นตอนที่ 2: ยืนยันการเปลี่ยนรหัสครั้งแรกของคุณ
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 เพื่อดูความคืบหน้าการเปลี่ยนแปลงผ่านไปป์ไลน์ของคุณ
-
ขั้นตอนที่ 3: อัปเดตเนื้อหาเว็บไซต์ใน S3
สุดท้าย เราจำเป็นต้องเผยแพร่หน้า 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