การเริ่มต้นใช้งาน Cloud Functions

1. ภาพรวม

Cloud-Functions.png

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

ปัจจุบัน Cloud Functions เขียนได้ใน JavaScript, Python หรือ Go ในกรณีของ JavaScript ฟังก์ชันจะทำงานในสภาพแวดล้อม Node.js บน Google Cloud Platform คุณสามารถนำ Cloud Function ไปเรียกใช้ในรันไทม์ Node.js มาตรฐานใดก็ได้ ซึ่งจะช่วยให้ทั้งการพกพาและการทดสอบในเครื่องเป็นเรื่องง่าย

เชื่อมต่อและขยายบริการระบบคลาวด์

Cloud Functions มีเลเยอร์ตรรกะที่เชื่อมต่อกันซึ่งช่วยให้คุณเขียนโค้ดเพื่อเชื่อมต่อและขยายบริการระบบคลาวด์ได้ รับฟังและตอบสนองต่อการอัปโหลดไฟล์ไปยัง Cloud Storage, การเปลี่ยนแปลงบันทึก หรือข้อความขาเข้าในหัวข้อ Cloud Pub/Sub Cloud Functions ช่วยเสริมบริการระบบคลาวด์ที่มีอยู่และช่วยให้คุณรับมือกับ Use Case ที่เพิ่มขึ้นได้ด้วยตรรกะการเขียนโปรแกรมที่กำหนดเอง Cloud Functions มีสิทธิ์เข้าถึงข้อมูลเข้าสู่ระบบบัญชีบริการของ Google จึงได้รับการตรวจสอบสิทธิ์กับบริการส่วนใหญ่ของ Google Cloud Platform เช่น Datastore, Cloud Spanner, Cloud Translation API, Cloud Vision API และอื่นๆ อีกมากมายได้อย่างราบรื่น

907ffb96feada611.png

เหตุการณ์และทริกเกอร์

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

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

Serverless

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

กรณีศึกษาการใช้งาน

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

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

แล็บภาคปฏิบัติจะแสดงวิธีสร้าง ทำให้ใช้งานได้ และทดสอบ Cloud Function โดยใช้ Google Cloud Console คุณจะได้รับสิ่งต่อไปนี้

  • สร้างฟังก์ชันระบบคลาวด์
  • ทําให้ฟังก์ชันใช้งานได้และทดสอบ
  • ดูบันทึก

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย โปรดทำตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนำวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

Google Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud และ Cloud Functions จากแล็ปท็อประยะไกลได้ แต่ใน Codelab นี้เราจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

เครื่องเสมือนที่ใช้ Debian นี้มาพร้อมเครื่องมือพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก ซึ่งหมายความว่าคุณจะต้องมีเพียงเบราว์เซอร์เท่านั้นสำหรับโค้ดแล็บนี้ (ใช่แล้ว ใช้ได้ใน Chromebook)

  1. หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console เพียงคลิกเปิดใช้งาน Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (ระบบจะใช้เวลาเพียงไม่กี่นาทีในการจัดสรรและเชื่อมต่อกับสภาพแวดล้อม)

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าระบบได้ตรวจสอบสิทธิ์คุณแล้ว และตั้งค่าโปรเจ็กต์เป็น PROJECT_ID แล้ว

gcloud auth list

เอาต์พุตของคำสั่ง

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

เอาต์พุตของคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่ได้ตั้งค่าโปรเจ็กต์ด้วยเหตุผลบางประการ ให้เรียกใช้คำสั่งต่อไปนี้

gcloud config set project <PROJECT_ID>

หากกำลังมองหา PROJECT_ID ตรวจสอบว่าคุณใช้รหัสใดในขั้นตอนการตั้งค่า หรือค้นหารหัสในแดชบอร์ด Cloud Console

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

นอกจากนี้ Cloud Shell ยังตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างโดยค่าเริ่มต้น ซึ่งอาจมีประโยชน์เมื่อคุณเรียกใช้คำสั่งในอนาคต

echo $GOOGLE_CLOUD_PROJECT

เอาต์พุตของคำสั่ง

<PROJECT_ID>
  1. สุดท้าย ให้ตั้งค่าโซนเริ่มต้นและการกำหนดค่าโปรเจ็กต์
gcloud config set compute/zone us-central1-f

คุณเลือกโซนต่างๆ ได้หลากหลาย ดูข้อมูลเพิ่มเติมได้ที่ภูมิภาคและโซน

3. สร้างฟังก์ชัน

ในขั้นตอนนี้ คุณจะได้สร้าง Cloud Function โดยใช้คอนโซล

  • ในคอนโซล ให้คลิกเมนูการนำทาง > Cloud Functions

fe64222954f5f372.png

  • คลิก "CREATE FUNCTION" ดังนี้

7adca9640ca2e5a6.png

  • ตั้งชื่อฟังก์ชันเป็น GCFunction และคงค่าเริ่มต้นอื่นๆ ไว้ ได้แก่ การจัดสรรหน่วยความจำ, HTTP เป็นทริกเกอร์, เอดิเตอร์แบบอินไลน์, รันไทม์เริ่มต้น และโค้ดตัวอย่างเริ่มต้น

795f1fedc0f039bb.png

  • ขณะที่ยังอยู่ในกล่องโต้ตอบ "สร้างฟังก์ชัน" ให้คลิก "สร้าง" ที่ด้านล่างเพื่อทำให้ฟังก์ชันใช้งานได้

b68c3647b771e6f9.png

หลังจากคลิกสร้างแล้ว คอนโซลจะเปลี่ยนเส้นทางไปยังหน้าภาพรวมของ Cloud Functions

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

3ec684b1b4906657.png

เท่านี้ก็เรียบร้อย ตอนนี้ฟังก์ชันของคุณพร้อมใช้งานและพร้อมที่จะทริกเกอร์ผ่าน HTTP แล้ว

4. ทดสอบฟังก์ชัน

ในหน้าภาพรวมของ Cloud Functions ให้แสดงเมนูสำหรับฟังก์ชัน แล้วคลิกทดสอบฟังก์ชัน

74e310ee6663bb3c.png

ในช่องเหตุการณ์ที่ทริกเกอร์ ให้ป้อนข้อความต่อไปนี้ระหว่างวงเล็บ {} แล้วคลิกทดสอบฟังก์ชัน

ในช่องเอาต์พุต คุณควรเห็นข้อความ Success: Hello World!

ในช่องบันทึก รหัสสถานะ 200 แสดงว่าสำเร็จ โปรดทราบว่าระบบอาจใช้เวลา 1 นาทีเพื่อให้บันทึกปรากฏ

a876def9cbf24a45.png

5. ดูบันทึกของฟังก์ชัน

คลิกลูกศรสีน้ำเงินเพื่อกลับไปที่หน้าภาพรวมของ Cloud Functions

8917a2bfa4fb9502.png

แสดงเมนูสำหรับฟังก์ชัน แล้วคลิกดูบันทึก

e97e6ec1fc17dfd7.png

ตัวอย่างประวัติบันทึกมีดังนี้

d91a00cf4457fa84.png

โปรดทราบว่าคุณสามารถกรองบันทึกตามฟังก์ชัน ตามความรุนแรง และค้นหาผ่านป้ายกำกับหรือข้อความแบบอิสระได้

ระบบได้ติดตั้งใช้งานและทดสอบแอปพลิเคชันของคุณแล้ว และคุณสามารถดูบันทึกได้

6. ล้างข้อมูลทรัพยากร

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

หากต้องการลบฟังก์ชัน เพียงไปที่หน้าภาพรวม เลือกฟังก์ชัน แล้วคลิกลบ

4fe11e1b41b32ba2.png

7. ขั้นตอนถัดไป

Cloud Functions ยังมีฟีเจอร์อื่นๆ อีกมากมายรอคุณอยู่ ดู Codelab อื่นๆ และหน้าผลิตภัณฑ์ รวมถึงเอกสารประกอบ

นอกจากนี้ คุณควรตรวจสอบสิ่งต่อไปนี้ด้วย