0_102)", "user":"AAAAAAAAAAAA"}, "resourcePath":"/{proxy+}", "Method":"GET", "apiId":"t2yh6sjnmk"}, "body":null}' | docker run --rm -v "$PWD":/var/task -i -e DOCKER_LAMBDA_USE_STDIN=1 --network mysql -e TEST_LAMBDA_DBCONNECTION="server=mysql;userid=root;password=1234;database=test_lambda;convert zero datetime=True; CharSet=utf8" -e AWS_LAMBDA_FUNCTION_MEMORY_SIZE=128 lambci/lambda:dotnetcore2. 1 ction::Get ตัวอย่างสาม สามารถใส่ event ด้านหน้า ในรูปแบบ stdin ได้ โดยเรียกใช้ข้อมูลจากไฟล์ แบบนี้เหมือนกับด้านบน เพียงแต่ผมแปลงนิดหน่อย ให้พ่นข้อมูลจากไฟล์แทน โดยใช้คำสั่ง cat เช่น cat /Users/chitpong/Sourcecode/aws-serverless/profile/test/ | docker run --rm -v "$PWD":/var/task -i -e DOCKER_LAMBDA_USE_STDIN=1 --network mysql -e TEST_LAMBDA_DBCONNECTION="server=mysql;userid=root;password=1234;database=test_lambda;convert zero datetime=True; CharSet=utf8" -e AWS_LAMBDA_FUNCTION_MEMORY_SIZE=128 lambci/lambda:dotnetcore2. 1 ction::Get ในที่นี้ผมใช้ JSON ไฟล์เดียวกันกับที่ผมเขียนทดสอบใน Unit Test สรุป เป็นรุปแบบการทดสอบ AWS Lambda แบบที่ไม่เสียเงินอีกรูปแบบหนึ่ง และค่อนข้างทำงานได้เหมือนจริงตามที่เราต้องการ ซึ่งถ้าใช้งานบ่อยๆ การทำคำสั่งแบบนี้อาจจะยาวและเสียเวลาหน่อย ก็ให้ไปเขียนเป็น shell script หรือ makefile เพื่อรันก็จะไวขึ้นอีกนิด ทั้งนี้ทั้งนั้น ผมก็ยังยืนยันแบบเดิมว่า ทดสอบด้วยการเขียน Unit Test เถอะครับ Reference
63 โดยคิดเป็นค่า Requests $5. 80 และค่าประมวลผล (Compute) $5. 83 สูตรคือ Total requests — Free tier request = Billable requests แทนค่า 30M requests — 1M free tier requests = 29M Monthly billable requests สรุป Monthly request charges = 29M * $0. 2/M = $5. 80 สูตรคือ Total compute (seconds) = 30, 000, 000 * 0. 2sec = 6, 000, 000 seconds แปลงเป็น GB-Second Total compute (GB-s) = 6, 000, 000sec * 128MB/1024 = 750, 000 GB-s หา GB-Second ที่ต้องจ่าย 750, 000 GB-s — 400, 000 free tier GB-s = 350, 000 GB-s สรุป Monthly compute charges = 350, 000 * $0. 00001667 = $5.
1 ction::Get จะสังเกตว่ามีตัวแปรแปลกๆมานิดนึง คือ –network mysql หมายถึง ให้ Container นี้อยู่ในวง Network ชื่อ mysql โดยในวงนั้นผมมี Container MySQL อยู่ในนั้นอยู่แล้ว จากนั้นผมระบุ Environment Variable ชื่อว่า TEST_LAMBDA_DBCONNECTION เข้าไป เนื่องจากโค้ดของผมเรียกใช้ config ผ่าน Environment Variable (ตาม หลักการข้อ 3.
สรุป เห็นไหมว่าใช้งานไม่ยากเลย เพียงแค่เขียน code เล็กน้อยเราก็ได้ function ขึ้นมาเพื่อไว้ใช้งานแล้ว ในตอนต่อไปเราจะมาลองทำให้ function ของเราสามารถเชื่อมต่อกับ AWS Api Gateway กันดู เพื่อที่เราจะได้สามารถเรียก function นี้จากภายนอก เช่นทำการเรียกจากหน้าเว็บ ได้ครับ:D ตอนที่ 2 ต่อที่นี้เลยครับ: Next
ใน Slide เรื่องเดียวกัน ได้อ้างถึงเครื่องมือตัวหนึ่ง ชื่อ AWS Lambda Power Tuning ที่พัฒนาโดย Alex Casalboni และเขาได้เล่าที่มาในบล็อก AWS Lambda Power Tuning with AWS Step Functions ว่า Serverless Developer ทุกคนมักหลับหูหลับตาเพื่อจัดสรรทรัพยากร หรือไม่ก็ใช้วิธีการ Manual Test เพื่อทดสอบดูทีละแบบ ซึ่งมันก็เสียเวลาและไม่ได้ผลลัพธ์ที่ดีแน่นอน พี่แกเลยบอกว่า ถ้าเช่นนั้นเรามาใช้วิธี Data-Driven ดีกว่า! แกเลยเริ่มจากทำ โพลสำรวจใน Twitter ว่าสิ่งที่สังเกตเห็นมันเป็นจริงไหม ซึ่งกว่า 50% ในโพล เคยใช้ Memory เท่าไรก็ตั้งไว้แบบเดิมเท่านั้น ไม่ได้สนใจที่จะ Tuning อะไร และครึ่งหนึ่งนิยมตั้งค่าไว้ที่ 128MB ทุก Function ด้วยเหตุผลที่ว่า เพราะมันราคาถูกที่สุดน่ะสิ!
บังคับ คดี หัก เงินเดือน, 2024 | Sitemap