Cloud Functions เป็น ระดับภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้ฟังก์ชันของคุณจะอยู่ในภูมิภาคที่เฉพาะเจาะจง และ Google จะจัดการให้พร้อมใช้งานซ้ำซ้อนในทุก โซนภายในภูมิภาคเหล่านั้น
เมื่อเลือกภูมิภาคที่จะเรียกใช้ฟังก์ชัน สิ่งที่คุณควรพิจารณาเป็นอันดับแรกคือเวลาในการตอบสนองและความพร้อมใช้งาน โดยทั่วไปคุณสามารถเลือกภูมิภาคที่อยู่ใกล้กับผู้ใช้ แต่คุณ ก็ควรพิจารณาตำแหน่งของ ผลิตภัณฑ์และบริการอื่นๆ ที่แอปของคุณใช้ด้วย การใช้บริการในหลายภูมิภาคอาจส่งผลต่อ เวลาในการตอบสนองของแอป รวมถึงการกำหนดราคาด้วย
โดยค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค us-central1 โปรดทราบว่าภูมิภาคนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น Bucket Cloud Storage
ดูวิธี
ระบุภูมิภาคที่จะเรียกใช้ฟังก์ชัน
ได้ในส่วนท้ายของหน้านี้
ภูมิภาคที่รองรับ
ในรายการในส่วนนี้ ไอคอน energy_savings_leaf ระบุว่าไฟฟ้าสำหรับภูมิภาคนี้ผลิตขึ้นโดยมีการปล่อยคาร์บอนต่ำ ดูข้อมูลเพิ่มเติมได้ที่ พลังงานปลอดคาร์บอนสำหรับภูมิภาค Google Cloud
การกำหนดราคาระดับ 1
Cloud Functions พร้อมให้บริการในภูมิภาคต่อไปนี้ด้วย การกำหนดราคาระดับ 1:
| ภูมิภาค | ตำแหน่ง | เวอร์ชันผลิตภัณฑ์ที่รองรับ | การปล่อยก๊าซ CO2 |
|---|---|---|---|
africa-south1 |
โจฮันเนสเบิร์ก | รุ่นที่ 2 เท่านั้น | |
asia-east1 |
ไต้หวัน | รุ่นที่ 1, รุ่นที่ 2 | |
asia-east2 |
ฮ่องกง | รุ่นที่ 1 เท่านั้น | |
asia-northeast1 |
โตเกียว | รุ่นที่ 1, รุ่นที่ 2 | |
asia-northeast2 |
โอซาก้า | รุ่นที่ 1, รุ่นที่ 2 | |
europe-north1 |
ฟินแลนด์ | รุ่นที่ 2 เท่านั้น | energy_savings_leaf |
europe-southwest1 |
มาดริด | รุ่นที่ 2 เท่านั้น | |
europe-west1 |
เบลเยียม | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
europe-west4 |
เนเธอร์แลนด์ | รุ่นที่ 2 เท่านั้น | |
europe-west8 |
มิลาน | รุ่นที่ 2 เท่านั้น | |
europe-west9 |
ปารีส | รุ่นที่ 2 เท่านั้น | energy_savings_leaf |
me-west1 |
เทลอาวีฟ | รุ่นที่ 2 เท่านั้น | |
europe-west2 |
ลอนดอน | รุ่นที่ 1 เท่านั้น | |
us-central1 |
ไอโอวา | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
us-east1 |
เซาท์แคโรไลนา | รุ่นที่ 1, รุ่นที่ 2 | |
us-east4 |
นอร์เทิร์นเวอร์จิเนีย | รุ่นที่ 1, รุ่นที่ 2 | |
us-east5 |
โคลัมบัส | รุ่นที่ 2 เท่านั้น | |
us-south1 |
แดลลัส | รุ่นที่ 2 เท่านั้น | |
us-west1 |
ออริกอน | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
การกำหนดราคาระดับ 2
Cloud Functions พร้อมให้บริการในภูมิภาคต่อไปนี้ด้วย การกำหนดราคาระดับ 2:
| ภูมิภาค | ตำแหน่ง | เวอร์ชันผลิตภัณฑ์ที่รองรับ | การปล่อยก๊าซ CO2 |
|---|---|---|---|
asia-east2 |
ฮ่องกง | รุ่นที่ 2 เท่านั้น | |
asia-northeast3 |
โซล | รุ่นที่ 1, รุ่นที่ 2 | |
asia-southeast1 |
สิงคโปร์ | รุ่นที่ 1, รุ่นที่ 2 | |
asia-southeast2 |
จาการ์ตา | รุ่นที่ 1, รุ่นที่ 2 | |
asia-south1 |
มุมไบ | รุ่นที่ 2 เท่านั้น | |
asia-south2 |
เดลี อินเดีย | รุ่นที่ 2 เท่านั้น | |
australia-southeast1 |
ซิดนีย์ | รุ่นที่ 1, รุ่นที่ 2 | |
australia-southeast2 |
เมลเบิร์น | รุ่นที่ 2 เท่านั้น | |
europe-central2 |
วอร์ซอ | รุ่นที่ 1, รุ่นที่ 2 | |
europe-west2 |
ลอนดอน | รุ่นที่ 2 เท่านั้น | |
europe-west3 |
แฟรงก์เฟิร์ต | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
europe-west6 |
ซูริก | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
europe-west10 |
เบอร์ลิน | รุ่นที่ 2 เท่านั้น | |
europe-west12 |
ตูริน | รุ่นที่ 2 เท่านั้น | |
me-central1 |
โดฮา | รุ่นที่ 2 เท่านั้น | |
me-central2 |
ดัมมาม | รุ่นที่ 2 เท่านั้น | |
northamerica-northeast1 |
มอนทรีออล | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
northamerica-northeast2 |
โทรอนโต | รุ่นที่ 2 เท่านั้น | energy_savings_leaf |
southamerica-east1 |
เซาเปาโล | รุ่นที่ 1, รุ่นที่ 2 | energy_savings_leaf |
southamerica-west1 |
ซานเตียโก ชิลี | รุ่นที่ 2 เท่านั้น | |
us-west2 |
ลอสแอนเจลิส | รุ่นที่ 1, รุ่นที่ 2 | |
us-west3 |
ซอลต์เลกซิตี | รุ่นที่ 1, รุ่นที่ 2 | |
us-west4 |
ลาสเวกัส | รุ่นที่ 1, รุ่นที่ 2 |
ฟังก์ชันในภูมิภาคหนึ่งๆ ในโปรเจ็กต์หนึ่งๆ ต้องมีชื่อที่ไม่ซ้ำกัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) แต่ฟังก์ชันในภูมิภาคต่างๆ หรือในโปรเจ็กต์ต่างๆ อาจมีชื่อเดียวกันได้
แนวทางปฏิบัติแนะนำสำหรับการระบุภูมิภาค
โดยค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค us-central1 โปรดทราบว่าภูมิภาคนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น Bucket 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 ไปยังฟังก์ชันใหม่ (ฟังก์ชันทั้ง 2 อาจมีชื่อเดียวกันได้) หากไคลเอ็นต์ของฟังก์ชัน HTTP รองรับการเปลี่ยนเส้นทาง คุณก็เพียงแค่เปลี่ยนฟังก์ชันเดิมให้แสดงสถานะการเปลี่ยนเส้นทาง HTTP (301) พร้อมกับ URL ของฟังก์ชันใหม่ หากไคลเอ็นต์จัดการการเปลี่ยนเส้นทางได้ไม่ดี คุณสามารถ พร็อกซี คำขอจากฟังก์ชันเดิมไปยังฟังก์ชันใหม่ได้โดยเริ่มคำขอใหม่จากฟังก์ชันเดิมไปยังฟังก์ชันใหม่ ขั้นตอนสุดท้ายคือตรวจสอบว่าไคลเอ็นต์ทั้งหมดเรียกใช้ฟังก์ชันใหม่
การเลือกตำแหน่งฝั่งไคลเอ็นต์สำหรับฟังก์ชันที่เรียกใช้ได้
สำหรับการตั้งค่าฟังก์ชันที่เรียกใช้ได้โดยไคลเอ็นต์ คุณควรปฏิบัติตามหลักเกณฑ์เดียวกับฟังก์ชัน 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 ครั้ง ซึ่งหมายความว่าในบางกรณี ฟังก์ชันอาจได้รับเหตุการณ์ที่ซ้ำกัน ดังนั้น คุณควรใช้ฟังก์ชันให้เป็นฟังก์ชันที่ทำซ้ำได้โดยไม่เกิดผลข้างเคียง หากฟังก์ชันเป็นฟังก์ชันที่ทำซ้ำได้โดยไม่เกิดผลข้างเคียงอยู่แล้ว คุณสามารถติดตั้งใช้งานฟังก์ชันอีกครั้งในภูมิภาคใหม่ด้วยทริกเกอร์เหตุการณ์เดียวกัน และนำฟังก์ชันเก่าออกหลังจากยืนยันว่าฟังก์ชันใหม่ได้รับการรับส่งข้อมูลอย่างถูกต้อง ฟังก์ชันทั้ง 2 จะได้รับเหตุการณ์ในช่วงเปลี่ยนผ่านนี้ ดู เปลี่ยนภูมิภาคของฟังก์ชัน สำหรับลำดับคำสั่งที่แนะนำเพื่อเปลี่ยนภูมิภาคสำหรับฟังก์ชัน
หากฟังก์ชันของคุณไม่ใช่ฟังก์ชันที่ทำซ้ำได้โดยไม่เกิดผลข้างเคียงในปัจจุบัน หรือฟังก์ชันที่ทำซ้ำได้โดยไม่เกิดผลข้างเคียงนั้นไม่ครอบคลุมภูมิภาคอื่น เราขอแนะนำให้คุณใช้ฟังก์ชันที่ทำซ้ำได้โดยไม่เกิดผลข้างเคียงก่อนที่จะย้ายฟังก์ชัน
คำแนะนำภูมิภาคที่เหมาะสมที่สุดจะแตกต่างกันไปตามประเภททริกเกอร์เหตุการณ์
| ประเภททริกเกอร์ | คำแนะนำภูมิภาค |
|---|---|
| Cloud Firestore | ภูมิภาคที่ใกล้ที่สุดกับตำแหน่งอินสแตนซ์ Cloud Firestore (ดูส่วนถัดไป) |
| Realtime Database | ภูมิภาคเดียวกับอินสแตนซ์ Realtime Database |
| Cloud Storage | ภูมิภาคที่ใกล้ที่สุดกับตำแหน่ง Bucket ของ Cloud Storage (ดูส่วนถัดไป) |
| อื่นๆ | หากคุณโต้ตอบกับอินสแตนซ์ Realtime Database อินสแตนซ์ Cloud Firestore
หรือ Bucket ของ Cloud Storage ภายในฟังก์ชัน ภูมิภาคที่แนะนำ
จะเหมือนกับกรณีที่คุณมีฟังก์ชันที่ทริกเกอร์โดยทรัพยากรใดทรัพยากรหนึ่ง
ไม่เช่นนั้น ให้ใช้ภูมิภาคเริ่มต้น us-central1
ฟังก์ชันที่เชื่อมต่อกับ Firebase Hosting จะอยู่ในภูมิภาคใดก็ได้ แต่โปรดดู
คำแนะนำในภาพรวมแบบไม่มีเซิร์ฟเวอร์ของ Hosting |
การเลือกภูมิภาคตามตำแหน่ง Cloud Firestore และ Cloud Storage
ภูมิภาคที่พร้อมใช้งานสำหรับฟังก์ชันอาจไม่ตรงกับ ภูมิภาคที่พร้อมใช้งานสำหรับฐานข้อมูล Cloud Firestore และ Bucket Cloud Storage เสมอไป
โปรดทราบว่าหากฟังก์ชันและทรัพยากร (อินสแตนซ์ฐานข้อมูลหรือ Cloud Storage Bucket) อยู่คนละตำแหน่ง คุณอาจพบว่าเวลาในการตอบสนองและ ค่าใช้จ่ายที่เรียกเก็บ เพิ่มขึ้น
ต่อไปนี้คือการจับคู่ภูมิภาคที่รองรับฟังก์ชันที่ใกล้ที่สุดสำหรับ 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 |