1. ภาพรวม

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 และอื่นๆ อีกมากมายได้อย่างราบรื่น

เหตุการณ์และทริกเกอร์
เหตุการณ์ในระบบคลาวด์คือสิ่งที่เกิดขึ้นในสภาพแวดล้อมระบบคลาวด์ของคุณ ซึ่งอาจเป็นสิ่งต่างๆ เช่น การเปลี่ยนแปลงข้อมูลในฐานข้อมูล ไฟล์ที่เพิ่มลงในระบบจัดเก็บข้อมูล หรือการสร้างอินสแตนซ์เครื่องเสมือนใหม่
กิจกรรมจะเกิดขึ้นไม่ว่าคุณจะเลือกตอบกลับหรือไม่ก็ตาม คุณสร้างการตอบสนองต่อเหตุการณ์ด้วยทริกเกอร์ ทริกเกอร์คือการประกาศว่าคุณสนใจเหตุการณ์หนึ่งๆ หรือชุดเหตุการณ์ การเชื่อมโยงฟังก์ชันกับทริกเกอร์ช่วยให้คุณบันทึกและดำเนินการกับเหตุการณ์ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างทริกเกอร์และการเชื่อมโยงทริกเกอร์กับฟังก์ชันได้ที่หัวข้อเหตุการณ์และทริกเกอร์
Serverless
Cloud Functions ช่วยลดภาระในการจัดการเซิร์ฟเวอร์ การกำหนดค่าซอฟต์แวร์ การอัปเดตเฟรมเวิร์ก และการแพตช์ระบบปฏิบัติการ Google จะจัดการซอฟต์แวร์และโครงสร้างพื้นฐานทั้งหมดเพื่อให้คุณเพียงแค่เพิ่มโค้ด นอกจากนี้ การจัดสรรทรัพยากรจะเกิดขึ้นโดยอัตโนมัติเพื่อตอบสนองต่อเหตุการณ์ ซึ่งหมายความว่าฟังก์ชันจะปรับขนาดจากการเรียกใช้เพียงไม่กี่ครั้งต่อวันเป็นการเรียกใช้หลายล้านครั้งได้โดยที่คุณไม่ต้องดำเนินการใดๆ
กรณีศึกษาการใช้งาน
เวิร์กโหลดแบบอะซิงโครนัส เช่น ETL ขนาดเล็ก หรือการทำงานอัตโนมัติในระบบคลาวด์ เช่น การทริกเกอร์บิลด์แอปพลิเคชัน ไม่จำเป็นต้องมีเซิร์ฟเวอร์ของตัวเองและนักพัฒนาซอฟต์แวร์เพื่อเชื่อมต่ออีกต่อไป เพียงแค่ติดตั้งใช้งาน Cloud Function ที่เชื่อมโยงกับเหตุการณ์ที่ต้องการก็เป็นอันเสร็จสิ้น
ลักษณะการทำงานแบบละเอียดและตามความต้องการของ Cloud Functions ยังทำให้เป็นตัวเลือกที่เหมาะสำหรับ API และ Webhook ที่มีน้ำหนักเบาอีกด้วย นอกจากนี้ การจัดสรรปลายทาง HTTP โดยอัตโนมัติเมื่อคุณติดตั้งใช้งานฟังก์ชัน HTTP หมายความว่าไม่จำเป็นต้องมีการกำหนดค่าที่ซับซ้อนเหมือนกับบริการอื่นๆ บางอย่าง
แล็บภาคปฏิบัติจะแสดงวิธีสร้าง ทำให้ใช้งานได้ และทดสอบ Cloud Function โดยใช้ Google Cloud Console คุณจะได้รับสิ่งต่อไปนี้
- สร้างฟังก์ชันระบบคลาวด์
- ทําให้ฟังก์ชันใช้งานได้และทดสอบ
- ดูบันทึก
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน 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)
- หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console เพียงคลิกเปิดใช้งาน Cloud Shell
(ระบบจะใช้เวลาเพียงไม่กี่นาทีในการจัดสรรและเชื่อมต่อกับสภาพแวดล้อม)
เมื่อเชื่อมต่อกับ 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
นอกจากนี้ Cloud Shell ยังตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างโดยค่าเริ่มต้น ซึ่งอาจมีประโยชน์เมื่อคุณเรียกใช้คำสั่งในอนาคต
echo $GOOGLE_CLOUD_PROJECT
เอาต์พุตของคำสั่ง
<PROJECT_ID>
- สุดท้าย ให้ตั้งค่าโซนเริ่มต้นและการกำหนดค่าโปรเจ็กต์
gcloud config set compute/zone us-central1-f
คุณเลือกโซนต่างๆ ได้หลากหลาย ดูข้อมูลเพิ่มเติมได้ที่ภูมิภาคและโซน
3. สร้างฟังก์ชัน
ในขั้นตอนนี้ คุณจะได้สร้าง Cloud Function โดยใช้คอนโซล
- ในคอนโซล ให้คลิกเมนูการนำทาง > Cloud Functions

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

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

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

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

เท่านี้ก็เรียบร้อย ตอนนี้ฟังก์ชันของคุณพร้อมใช้งานและพร้อมที่จะทริกเกอร์ผ่าน HTTP แล้ว
4. ทดสอบฟังก์ชัน
ในหน้าภาพรวมของ Cloud Functions ให้แสดงเมนูสำหรับฟังก์ชัน แล้วคลิกทดสอบฟังก์ชัน

ในช่องเหตุการณ์ที่ทริกเกอร์ ให้ป้อนข้อความต่อไปนี้ระหว่างวงเล็บ {} แล้วคลิกทดสอบฟังก์ชัน
ในช่องเอาต์พุต คุณควรเห็นข้อความ Success: Hello World!
ในช่องบันทึก รหัสสถานะ 200 แสดงว่าสำเร็จ โปรดทราบว่าระบบอาจใช้เวลา 1 นาทีเพื่อให้บันทึกปรากฏ

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

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

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

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

7. ขั้นตอนถัดไป
Cloud Functions ยังมีฟีเจอร์อื่นๆ อีกมากมายรอคุณอยู่ ดู Codelab อื่นๆ และหน้าผลิตภัณฑ์ รวมถึงเอกสารประกอบ
นอกจากนี้ คุณควรตรวจสอบสิ่งต่อไปนี้ด้วย
- การเรียกใช้ Cloud Functions (ทริกเกอร์พร้อมใช้งานสำหรับการเรียกใช้ฟังก์ชัน)
- การตรวจสอบ Cloud Functions (บันทึก การรายงานข้อผิดพลาด และอื่นๆ)
- ... หรือ Codelab อื่นๆ จากหมวดหมู่ Serverless