การเริ่มต้นใช้งาน 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 และเว็บฮุคที่มีขนาดเล็กอีกด้วย นอกจากนี้ การจัดสรรอุปกรณ์ปลายทาง HTTP โดยอัตโนมัติเมื่อคุณทำให้ฟังก์ชัน HTTP ใช้งานได้หมายความว่าไม่ต้องมีการกำหนดค่าที่ซับซ้อนเหมือนกับบริการอื่นๆ บางบริการ

ห้องทดลองเชิงปฏิบัตินี้จะแสดงวิธีสร้าง ทำให้ใช้งานได้ และทดสอบฟังก์ชันระบบคลาวด์โดยใช้คอนโซล Google Cloud คุณจะ :

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

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

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

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

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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

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

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

Google Cloud Shell

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

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

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

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 14-06-2017 เวลา 22.13.43 น.

เมื่อเชื่อมต่อกับ 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 Functions

fe64222954f5f372.png

  • คลิก "สร้างฟังก์ชัน" :

7adca9640ca2e5a6.png

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

795f1fedc0f039bb.png

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

b68c3647b771e6f9.png

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

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

3ec684b1b4906657.png

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

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

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

74e310ee6663bb3c.png

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

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

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

a876def9cbf24a45.png

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

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

8917a2bfa4fb9502.png

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

e97e6ec1fc17dfd7.png

ต่อไปนี้เป็นตัวอย่างของ ประวัติบันทึก :

d91a00cf4457fa84.png

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

ทำให้แอปพลิเคชันใช้งานได้ ทดสอบแล้ว และคุณดูบันทึกได้

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

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

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

4fe11e1b41b32ba2.png

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

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

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