ตำแหน่งของ Cloud Functions

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

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

ฟังก์ชันจะทำงานในภูมิภาค us-central1 โดยค่าเริ่มต้น โปรดทราบว่าอาจเป็น ที่แตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage เรียนรู้วิธีการ ระบุภูมิภาคที่ฟังก์ชันทำงาน ภายหลังในหน้านี้

ภูมิภาคที่รองรับ

ในรายการในส่วนนี้ ใบประหยัดพลังงาน บ่งชี้ว่าไฟฟ้าในภูมิภาคนี้ผลิตด้วย การปล่อยคาร์บอนต่ำ สำหรับข้อมูลเพิ่มเติม โปรดดู พลังงานแบบปลอดคาร์บอนสำหรับภูมิภาค Google Cloud

Cloud Functions พร้อมใช้งานในภูมิภาคต่อไปนี้ด้วย การกำหนดราคาระดับ 1

  • asia-east1 (ไต้หวัน)
  • asia-east2 (ฮ่องกง) รุ่นที่ 1 เท่านั้น
  • asia-northeast1 (โตเกียว)
  • asia-northeast2 (โอซะกะ)
  • europe-north1 (ฟินแลนด์) ใบประหยัดพลังงาน รุ่นที่ 2 เท่านั้น
  • europe-west1 (เบลเยียม) ใบประหยัดพลังงาน
  • europe-west2 (ลอนดอน) รุ่นที่ 1 เท่านั้น
  • us-central1 (ไอโอวา) ใบประหยัดพลังงาน
  • us-east1 (เซาท์แคโรไลนา)
  • us-east4 (เวอร์จิเนียตอนเหนือ)
  • us-west1 (ออริกอน) ใบประหยัดพลังงาน

Cloud Functions พร้อมใช้งานในภูมิภาคต่อไปนี้ด้วย การกำหนดราคาระดับ 2

  • asia-east2 (ฮ่องกง) รุ่นที่ 2 เท่านั้น
  • asia-northeast3 (โซล)
  • asia-southeast1 (สิงคโปร์)
  • asia-southeast2 (จาการ์ตา)
  • asia-south1 (มุมไบ) รุ่นที่ 2 เท่านั้น
  • australia-southeast1 (ซิดนีย์)
  • australia-southeast2 (เมลเบิร์น) รุ่นที่ 2 เท่านั้น
  • europe-central2 (วอร์ซอ)
  • europe-west2 (ลอนดอน) รุ่นที่ 2 เท่านั้น
  • europe-west3 (แฟรงก์เฟิร์ต)
  • europe-west6 (ซูริค) ใบประหยัดพลังงาน
  • northamerica-northeast1 (มอนทรีออล) ใบประหยัดพลังงาน
  • northamerica-northeast2 (โทรอนโต) ใบประหยัดพลังงาน รุ่นที่ 2 เท่านั้น
  • southamerica-east1 (เซาเปาโล) ใบประหยัดพลังงาน
  • southamerica-west1 (ซันติอาโก ชิลี) รุ่นที่ 2 เท่านั้น
  • us-west2 (ลอสแอนเจลิส)
  • us-west3 (ซอลต์เลกซิตี)
  • us-west4 (ลาสเวกัส)

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

แนวทางปฏิบัติที่ดีที่สุดในการระบุภูมิภาค

ฟังก์ชันจะทำงานในภูมิภาค us-central1 โดยค่าเริ่มต้น โปรดทราบว่าอาจเป็น ที่แตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage ถ้า คุณต้องระบุภูมิภาคที่ฟังก์ชันทำงาน ให้ทำตาม คำแนะนำในส่วนนี้สำหรับทริกเกอร์ฟังก์ชันแต่ละประเภท

หากต้องการตั้งค่าภูมิภาคที่ฟังก์ชันทํางาน ให้ตั้งค่าพารามิเตอร์ region ใน คำจำกัดความของฟังก์ชันตามที่แสดง

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Python

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

คุณสามารถระบุหลายภูมิภาคได้โดยส่งหลายภูมิภาคที่คั่นด้วยคอมมา สตริงใน region และโปรดทราบว่าเมื่อระบุภูมิภาคสำหรับ ประเภททริกเกอร์พื้นหลัง คุณจะต้องระบุตัวกรองเหตุการณ์ที่ถูกต้อง รวมถึงภูมิภาค ในตัวอย่างด้านบนคือ Cloud Firestore document ที่ปล่อยเหตุการณ์นั้น สำหรับ Cloud Storage ให้ทริกเกอร์ตัวกรองเหตุการณ์ เป็น bucket ได้ สำหรับทริกเกอร์ Pub/Sub จะเป็น topic เป็นต้น

โปรดดู เปลี่ยนภูมิภาคของฟังก์ชัน เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนภูมิภาคของฟังก์ชันที่ดูแลจัดการ การเข้าชมเวอร์ชันที่ใช้งานจริง

HTTP และฟังก์ชันที่เรียกใช้ได้ของไคลเอ็นต์

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

การเลือกตำแหน่งฝั่งไคลเอ็นต์สำหรับฟังก์ชันที่เรียกใช้ได้

สำหรับฟังก์ชัน Callable การตั้งค่า Callable ของไคลเอ็นต์ควรเป็นไปตาม ในฐานะฟังก์ชัน HTTP นอกจากนี้ ไคลเอ็นต์ยังระบุภูมิภาค และ ต้องดำเนินการดังกล่าว หากฟังก์ชันทำงานในภูมิภาคอื่นนอกเหนือจาก us-central1

หากต้องการตั้งค่า ภูมิภาคในไคลเอ็นต์ ให้ระบุภูมิภาคที่ต้องการเมื่อเริ่มต้น ดังนี้

Swift

lazy var functions = Functions.functions(region:"europe-west1")

Objective-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];

เว็บ


var functions = firebase.app().functions('europe-west1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

Unity

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

ฟังก์ชันพื้นหลัง

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

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

คำแนะนำภูมิภาคที่เหมาะสมที่สุดจะแตกต่างกันไปตามประเภททริกเกอร์เหตุการณ์ ดังนี้

ประเภททริกเกอร์ คำแนะนำระดับภูมิภาค
Cloud Firestore ภูมิภาคที่ใกล้กับตำแหน่งอินสแตนซ์ Cloud Firestore มากที่สุด (ดูส่วนถัดไป)
Realtime Database us-central1 เสมอ
Cloud Storage ภูมิภาคที่ใกล้กับตำแหน่งที่เก็บข้อมูล Cloud Storage มากที่สุด (ดูส่วนถัดไป)
อื่นๆ หากคุณโต้ตอบกับอินสแตนซ์ Realtime Database อยู่ Cloud Firestore หรือที่เก็บข้อมูล Cloud Storage ภายในฟังก์ชัน จากนั้น ภูมิภาค จะเหมือนกับกรณีที่มีฟังก์ชันที่ทริกเกอร์โดยฟังก์ชันหนึ่ง ที่ไม่ซับซ้อน หรือใช้ภูมิภาคเริ่มต้น us-central1 ฟังก์ชันที่เชื่อมต่อกับโฮสติ้งของ Firebase จะอยู่ในภูมิภาคใดก็ได้ แต่ ภาพรวมแบบ Serverless ของโฮสติ้งเพื่อดูคำแนะนำ

การเลือกภูมิภาคตามตำแหน่ง Cloud Firestore และ Cloud Storage

ภูมิภาคที่พร้อมใช้งานสำหรับฟังก์ชันอาจไม่ตรงกับ ภูมิภาคที่พร้อมใช้งานสำหรับฐานข้อมูล Cloud Firestore และ Cloud Storage ใหม่

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

การแมปภูมิภาคที่รองรับฟังก์ชันซึ่งอยู่ใกล้ที่สุดสำหรับ Cloud Firestore และ Cloud Storage ในกรณีที่ไม่รองรับภูมิภาคเดียวกัน ให้ทำดังนี้

ภูมิภาค/หลายภูมิภาคสำหรับ Cloud Firestore และ Cloud Storage เขตที่ใกล้ที่สุดที่มีฟังก์ชัน
nam5 หรือ us-central (หลายภูมิภาค) us-central1
eur3 หรือ europe-west (หลายภูมิภาค) europe-west1
europe-west4 (เนเธอร์แลนด์) europe-west1
asia-south1 (มุมไบ) asia-east2
asia-south2 (เดลี) asia-east2
australia-southeast2 (เมลเบิร์น) australia-southeast1