Cloud Functions เป็นแบบระดับภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้ฟังก์ชันของคุณจะอยู่ในภูมิภาคเฉพาะและ Google เป็นผู้จัดการเพื่อให้พร้อมใช้งานแบบทำซ้ำในโซนทั้งหมดภายในภูมิภาคเหล่านั้น
เมื่อเลือกภูมิภาคที่จะเรียกใช้ฟังก์ชัน สิ่งสำคัญที่ต้องคำนึงถึงคือเวลาในการตอบสนองและความพร้อมใช้งาน โดยทั่วไปคุณสามารถเลือกภูมิภาคที่ใกล้กับผู้ใช้ได้ แต่ควรพิจารณาตำแหน่งของผลิตภัณฑ์และบริการอื่นๆ ที่แอปใช้ด้วย การใช้บริการในหลายภูมิภาคอาจส่งผลต่อเวลาในการตอบสนองของแอปและการกำหนดราคา
ฟังก์ชันจะทำงานในภูมิภาค us-central1
โดยค่าเริ่มต้น โปรดทราบว่าขั้นตอนนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage
ดูวิธีระบุภูมิภาคที่ฟังก์ชันทำงานภายหลังในหน้านี้
ภูมิภาคที่รองรับ
ในรายการในส่วนนี้ ไอคอน energy_savings_leaf บ่งชี้ว่าไฟฟ้าสำหรับภูมิภาคนี้ผลิตออกมาโดยมีการปล่อยก๊าซคาร์บอนต่ำ ดูข้อมูลเพิ่มเติมได้ที่พลังงานแบบปลอดคาร์บอนสำหรับภูมิภาคของ Google Cloud
Cloud Functions พร้อมใช้งานในภูมิภาคต่อไปนี้ที่มีการกำหนดราคาระดับ 1
asia-east1
(ไต้หวัน)asia-east2
(ฮ่องกง) รุ่นที่ 1 เท่านั้นasia-northeast1
(โตเกียว)asia-northeast2
(โอซะกะ)europe-north1
(ฟินแลนด์) energy_savings_leaf รุ่นที่ 2 เท่านั้นeurope-west1
(เบลเยียม) energy_savings_leafeurope-west2
(ลอนดอน) รุ่นที่ 1 เท่านั้นus-central1
(ไอโอวา) energy_savings_leafus-east1
(เซาท์แคโรไลนา)us-east4
(เวอร์จิเนียตอนเหนือ)us-west1
(ออริกอน) energy_savings_leaf
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
(ซูริค) energy_savings_leafnorthamerica-northeast1
(มอนทรีออล) energy_savings_leafnorthamerica-northeast2
(โตรอนโต) energy_savings_leaf รุ่นที่ 2 เท่านั้นsouthamerica-east1
(เซาเปาโล) energy_savings_leafsouthamerica-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 ของฟังก์ชันใหม่ หากไคลเอ็นต์ของคุณจัดการการเปลี่ยนเส้นทางได้ไม่ดีพอ คุณสามารถพร็อกซีคำขอจากฟังก์ชันเดิมไปยังฟังก์ชันใหม่โดยการส่งคำขอใหม่จากฟังก์ชันเดิมไปยังฟังก์ชันใหม่ ขั้นตอนสุดท้ายคือตรวจสอบว่า ลูกค้าทั้งหมดเรียกใช้ฟังก์ชันใหม่
การเลือกตำแหน่งฝั่งไคลเอ็นต์สำหรับฟังก์ชันแบบเรียกใช้ได้
เกี่ยวกับฟังก์ชันที่เรียกใช้ได้ การตั้งค่าที่เรียกใช้ได้ของไคลเอ็นต์ควรเป็นไปตามหลักเกณฑ์เดียวกันกับฟังก์ชัน 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 หากฟังก์ชันไม่ทำงานแล้ว คุณสามารถทำให้ฟังก์ชันใช้งานได้อีกครั้งในภูมิภาคใหม่ด้วยทริกเกอร์เหตุการณ์เดิม และนำฟังก์ชันเก่าออกหลังจากที่คุณยืนยันว่าฟังก์ชันใหม่ได้รับการเข้าชมอย่างถูกต้องแล้ว ระหว่างการเปลี่ยนนี้ ทั้ง 2 ฟังก์ชันจะได้รับเหตุการณ์ โปรดดูเปลี่ยนภูมิภาคของฟังก์ชันเพื่อดูลำดับคำสั่งที่แนะนำเพื่อเปลี่ยนภูมิภาคของฟังก์ชัน
หากปัจจุบันฟังก์ชันของคุณไม่ได้อยู่ตำแหน่งเดิม หรืออัตราการไม่มีตัวของฟังก์ชันดังกล่าวขยายออกไปนอกภูมิภาค เราขอแนะนำให้คุณใช้ไอเท็มก่อนก่อนที่จะย้ายฟังก์ชัน
คำแนะนำภูมิภาคที่ดีที่สุดจะแตกต่างกันไปตามประเภททริกเกอร์เหตุการณ์ ดังนี้
ประเภททริกเกอร์ | ภูมิภาคที่แนะนำ |
---|---|
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 |