Cloud Functions เป็นแบบ ภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้ Cloud Function ของคุณตั้งอยู่ในภูมิภาคเฉพาะและได้รับการจัดการโดย Google เพื่อให้พร้อมใช้งานซ้ำซ้อนใน ทุกโซนภายในภูมิภาคเหล่านั้น
เมื่อเลือกภูมิภาคที่จะเรียกใช้ฟังก์ชันของคุณ ข้อควรพิจารณาหลัก ๆ ของคุณควรเป็นเวลาแฝงและความพร้อมใช้งาน โดยทั่วไปคุณสามารถเลือกภูมิภาคที่ใกล้กับผู้ใช้ของคุณ แต่ควรพิจารณาตำแหน่งของ ผลิตภัณฑ์และบริการอื่นๆ ที่แอปของคุณใช้ด้วย การใช้บริการในหลายภูมิภาคอาจส่งผลต่อเวลาในการตอบสนองของแอป รวมทั้ง ราคา
Cloud Functions มีให้บริการในภูมิภาคต่อไปนี้ด้วย ราคา Tier 1 :
-
us-central1
(ไอโอวา) -
us-east1
(เซาท์แคโรไลนา) -
us-east4
(เวอร์จิเนียตอนเหนือ) -
europe-west1
(เบลเยียม) -
europe-west2
(ลอนดอน) -
asia-east1
(ไต้หวัน) -
asia-east2
(ฮ่องกง) -
asia-northeast1
(โตเกียว) -
asia-northeast2
(โอซาก้า)
Cloud Functions มีให้บริการในภูมิภาคต่อไปนี้ด้วย ราคา Tier 2 :
-
us-west2
(ลอสแองเจลิส) -
us-west3
(ซอลต์เลกซิตี้) -
us-west4
(ลาสเวกัส) -
northamerica-northeast1
(มอนทรีออล) -
southamerica-east1
(เซาเปาโล) -
europe-west3
(แฟรงค์เฟิร์ต) -
europe-west6
(ซูริค) -
europe-central2
(วอร์ซอ) -
australia-southeast1
(ซิดนีย์) -
asia-south1
(มุมไบ) -
asia-southeast1
(สิงคโปร์) -
asia-southeast2
(จาการ์ตา) -
asia-northeast3
(โซล)
ฟังก์ชันในภูมิภาคที่กำหนดในโปรเจ็กต์ที่กำหนดต้องมีชื่อที่ไม่ซ้ำกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) แต่ฟังก์ชันข้ามภูมิภาคหรือข้ามโปรเจ็กต์อาจใช้ชื่อเดียวกัน
แนวปฏิบัติที่ดีที่สุดสำหรับการเปลี่ยนภูมิภาค
โดยค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค us-central1
โปรดทราบว่าสิ่งนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage หากคุณต้องการเปลี่ยนขอบเขตที่ฟังก์ชันทำงาน ให้ทำตามคำแนะนำในส่วนนี้สำหรับทริกเกอร์ฟังก์ชันแต่ละประเภท
ในการตั้งค่าขอบเขตที่ฟังก์ชันทำงาน ให้ตั้งค่าพารามิเตอร์ region
ในนิยามฟังก์ชันดังที่แสดง:
exports.myStorageFunction = functions
.region('europe-west1')
.storage
.object()
.onFinalize((object) => {
// ...
});
คุณสามารถระบุขอบเขตได้หลายเขตโดยส่งสตริงขอบเขตที่คั่นด้วยเครื่องหมายจุลภาคหลายรายการใน functions.region()
ดู การเปลี่ยนแปลงขอบเขตของฟังก์ชัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนที่แนะนำ
ฟังก์ชัน HTTP และไคลเอ็นต์เรียกได้
สำหรับ HTTP และฟังก์ชันที่เรียกได้ เราขอแนะนำให้คุณตั้งค่าฟังก์ชันของคุณเป็นภูมิภาคปลายทางก่อน หรือใกล้กับตำแหน่งที่ลูกค้าคาดหวังมากที่สุด จากนั้นแก้ไขฟังก์ชันเดิมของคุณเพื่อเปลี่ยนเส้นทางคำขอ HTTP ไปยังฟังก์ชันใหม่ (พวกเขาสามารถมีเหมือนกัน ชื่อ). หากไคลเอนต์ของฟังก์ชัน HTTP ของคุณรองรับการเปลี่ยนเส้นทาง คุณสามารถเปลี่ยนฟังก์ชันดั้งเดิมของคุณเพื่อส่งคืนสถานะการเปลี่ยนเส้นทาง HTTP (301) พร้อมกับ URL ของฟังก์ชันใหม่ของคุณ หากไคลเอนต์ของคุณจัดการการเปลี่ยนเส้นทางได้ไม่ดีนัก คุณสามารถ พร็อกซี่ คำขอจากฟังก์ชันเดิมไปยังฟังก์ชันใหม่โดยเริ่มต้นคำขอใหม่จากฟังก์ชันเดิมไปยังฟังก์ชันใหม่ ขั้นตอนสุดท้ายคือทำให้แน่ใจว่าไคลเอ็นต์ทั้งหมดกำลังเรียกใช้ฟังก์ชันใหม่
การเลือกตำแหน่งฝั่งไคลเอ็นต์สำหรับฟังก์ชันที่เรียกได้
เกี่ยวกับฟังก์ชันที่เรียกได้ การตั้งค่าไคลเอ็นต์ที่เรียกได้ควรเป็นไปตามแนวทางเดียวกันกับฟังก์ชัน HTTP ไคลเอ็นต์ยังสามารถระบุภูมิภาคได้ และ ต้อง ดำเนินการดังกล่าวหากฟังก์ชันทำงานในภูมิภาคอื่นที่ไม่ใช่ us-central1
ในการตั้งค่าภูมิภาคบนไคลเอนต์ ให้ระบุภูมิภาคที่ต้องการเมื่อเริ่มต้น:
Swift
lazy var functions = Functions.functions(region:"europe-west1")
วัตถุประสงค์-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");
ความสามัคคี
firebase.Functions.FirebaseFunctions functions;
functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");
ฟังก์ชั่นพื้นหลัง
ฟังก์ชันพื้นหลังใช้ความหมายการส่งเหตุการณ์อย่างน้อยหนึ่งครั้ง ซึ่งหมายความว่าในบางกรณีอาจได้รับเหตุการณ์ที่ซ้ำกัน ดังนั้น คุณควรใช้ฟังก์ชันเพื่อให้เป็น idempotent หากฟังก์ชันของคุณไม่มีศักยภาพอยู่แล้ว คุณสามารถปรับใช้ฟังก์ชันใหม่ในภูมิภาคใหม่ด้วยทริกเกอร์เหตุการณ์เดียวกัน และลบฟังก์ชันเก่าออกหลังจากที่คุณตรวจสอบว่าฟังก์ชันใหม่ได้รับการรับส่งข้อมูลอย่างถูกต้อง ระหว่างการเปลี่ยนแปลงนี้ ฟังก์ชันทั้งสองจะได้รับเหตุการณ์ ดู การเปลี่ยนแปลงขอบเขตของฟังก์ชัน สำหรับลำดับคำสั่งที่แนะนำเพื่อเปลี่ยนขอบเขตสำหรับฟังก์ชัน
หากฟังก์ชันของคุณไม่ได้มีค่าเท่ากันในปัจจุบัน หรือฟังก์ชันนั้นไม่ได้ขยายเกินขอบเขต เราขอแนะนำให้คุณใช้ฟังก์ชัน idempotency ก่อนทำการย้ายฟังก์ชัน
คำแนะนำภูมิภาคที่เหมาะสมที่สุดจะแตกต่างกันไปตามประเภททริกเกอร์เหตุการณ์:
ประเภททริกเกอร์ | คำแนะนำภูมิภาค |
---|---|
Cloud Firestore | ภูมิภาคที่ใกล้กับตำแหน่งอินสแตนซ์ Cloud Firestore ที่สุด (ดูหัวข้อถัดไป) |
ฐานข้อมูลเรียลไทม์ | เสมอ us-central1 |
การจัดเก็บเมฆ | ภูมิภาคที่ใกล้กับตำแหน่งที่ฝากข้อมูล Cloud Storage ที่สุด (ดูหัวข้อถัดไป) |
คนอื่น | หากคุณกำลังโต้ตอบกับอินสแตนซ์ฐานข้อมูลเรียลไทม์ อินสแตนซ์ Cloud Firestore หรือบัคเก็ต Cloud Storage ภายในฟังก์ชัน ภูมิภาคที่แนะนำจะเหมือนกับที่คุณมีฟังก์ชันที่ทริกเกอร์โดยหนึ่งในทรัพยากรเหล่านั้น มิฉะนั้น ให้ใช้ขอบเขตเริ่มต้นของ us-central1 โปรดทราบว่าฟังก์ชันที่เชื่อมต่อกับ Firebase Hosting จะต้องอยู่ใน us-central1 |
การเลือกภูมิภาคตามตำแหน่ง 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 |
asia-south1 (มุมไบ) | asia-east2 |