ฟังก์ชันคลาวด์เป็น แบบภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้ฟังก์ชันคลาวด์ของคุณตั้งอยู่ในภูมิภาคเฉพาะ และได้รับการจัดการโดย Google เพื่อให้พร้อมใช้งานซ้ำซ้อนใน ทุกโซนภายในภูมิภาคเหล่านั้น
เมื่อเลือกภูมิภาคที่จะเรียกใช้ฟังก์ชันของคุณ ข้อควรพิจารณาหลักๆ ของคุณควรคือเวลาแฝงและความพร้อมใช้งาน โดยทั่วไปคุณสามารถเลือกภูมิภาคที่ใกล้กับผู้ใช้ของคุณได้ แต่คุณควรพิจารณาตำแหน่งของ ผลิตภัณฑ์และบริการอื่นๆ ที่แอปของคุณใช้ด้วย การใช้บริการในหลายภูมิภาคอาจส่งผลต่อเวลาในการตอบสนองของแอปตลอดจน ราคา
ภูมิภาคที่รองรับ
ในรายการในส่วนนี้ ไอคอน Energy_savings_leaf ระบุว่าไฟฟ้าสำหรับภูมิภาคนี้ผลิตขึ้นโดยมีการปล่อยก๊าซคาร์บอนต่ำ สำหรับข้อมูลเพิ่มเติม โปรดดู พลังงานปลอดคาร์บอนสำหรับภูมิภาค Google Cloud
Cloud Functions มีให้บริการในภูมิภาคต่อไปนี้โดยมี ราคาระดับ Tier 1 :
-
asia-east1
(ไต้หวัน) -
asia-east2
(ฮ่องกง) รุ่นที่ 1 เท่านั้น -
asia-northeast1
(โตเกียว) -
asia-northeast2
(โอซาก้า) -
europe-north1
(ฟินแลนด์) Energy_savings_leaf รุ่นที่ 2 เท่านั้น -
europe-west1
(เบลเยียม) Energy_savings_leaf -
europe-west2
(ลอนดอน) รุ่นที่ 1 เท่านั้น -
us-central1
(ไอโอวา) Energy_savings_leaf -
us-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_leaf -
northamerica-northeast1
(มอนทรีออล) Energy_savings_leaf -
northamerica-northeast2
(โตรอนโต) Energy_savings_leaf รุ่นที่ 2 เท่านั้น -
southamerica-east1
(เซาเปาโล) Energy_savings_leaf -
southamerica-west1
(ซานติอาโก ชิลี) รุ่นที่ 2 เท่านั้น -
us-west2
(ลอสแอนเจลิส) -
us-west3
(ซอลต์เลกซิตี) -
us-west4
(ลาสเวกัส)
ฟังก์ชันในภูมิภาคที่กำหนดในโปรเจ็กต์ที่กำหนดจะต้องมีชื่อที่ไม่ซ้ำกัน (ไม่คำนึงถึงขนาดตัวพิมพ์) แต่ฟังก์ชันข้ามภูมิภาคหรือข้ามโปรเจ็กต์อาจมีชื่อเดียวกัน
แนวทางปฏิบัติที่ดีที่สุดในการระบุภูมิภาค
ตามค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค us-central1
โปรดทราบว่าสิ่งนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage หากคุณต้องการระบุภูมิภาคที่ฟังก์ชันทำงาน ให้ทำตามคำแนะนำในส่วนนี้สำหรับทริกเกอร์ฟังก์ชันแต่ละประเภท
หากต้องการตั้งค่าขอบเขตที่ฟังก์ชันทำงาน ให้ตั้งค่าพารามิเตอร์ region
ในคำจำกัดความฟังก์ชันดังที่แสดง:
โหนด js
exports.firestoreAsia = onDocumentCreated(
{
document: "my-collection/{docId}",
region: "asia-northeast1",
},
(event) => {},
);
หลาม
# 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
โปรดทราบว่าเมื่อระบุภูมิภาคสำหรับทริกเกอร์พื้นหลังหลายประเภท คุณจะต้องระบุตัวกรองเหตุการณ์ที่ถูกต้องพร้อมกับภูมิภาค ในตัวอย่างด้านบน นี่คือ document
Cloud Firestore ที่เผยแพร่เหตุการณ์ สำหรับทริกเกอร์ Cloud Storage ตัวกรองเหตุการณ์อาจเป็น bucket
สำหรับทริกเกอร์ Pub/Sub จะเป็น topic
และอื่นๆ
ดู การเปลี่ยนแปลงภูมิภาคของฟังก์ชัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนภูมิภาคสำหรับฟังก์ชันที่จัดการปริมาณการใช้งานจริง
ฟังก์ชัน HTTP และไคลเอ็นต์ที่เรียกได้
สำหรับฟังก์ชัน HTTP และฟังก์ชันที่เรียกได้ เราขอแนะนำให้คุณตั้งค่าฟังก์ชันของคุณเป็นภูมิภาคปลายทางหรือใกล้กับตำแหน่งที่ลูกค้าคาดหวังมากที่สุดมากที่สุด จากนั้นจึงแก้ไขฟังก์ชันเดิมของคุณเพื่อเปลี่ยนเส้นทางคำขอ HTTP ไปยังฟังก์ชันใหม่ (ฟังก์ชันเหล่านี้สามารถมีเหมือนกันได้) ชื่อ). หากไคลเอนต์ของฟังก์ชัน HTTP ของคุณรองรับการเปลี่ยนเส้นทาง คุณสามารถเปลี่ยนฟังก์ชันเดิมของคุณเพื่อส่งคืนสถานะการเปลี่ยนเส้นทาง HTTP (301) พร้อมกับ URL ของฟังก์ชันใหม่ของคุณ หากไคลเอ็นต์ของคุณจัดการการเปลี่ยนเส้นทางได้ไม่ดีนัก คุณสามารถ พร็อก ซีคำขอจากฟังก์ชันดั้งเดิมไปยังฟังก์ชันใหม่ได้โดยการเริ่มคำขอใหม่จากฟังก์ชันดั้งเดิมไปยังฟังก์ชันใหม่ ขั้นตอนสุดท้ายคือต้องแน่ใจว่าไคลเอนต์ทั้งหมดเรียกใช้ฟังก์ชันใหม่
การเลือกตำแหน่งฝั่งไคลเอ็นต์สำหรับฟังก์ชันที่เรียกได้
เกี่ยวกับฟังก์ชันที่เรียกได้ การตั้งค่าที่เรียกได้ของไคลเอ็นต์ควรเป็นไปตามหลักเกณฑ์เดียวกันกับฟังก์ชัน HTTP ไคลเอนต์ยังสามารถระบุภูมิภาคได้ และ จะต้อง ทำเช่นนั้นหากฟังก์ชันทำงานในภูมิภาคอื่นที่ไม่ใช่ us-central1
หากต้องการตั้งค่าขอบเขตบนไคลเอนต์ ให้ระบุขอบเขตที่ต้องการเมื่อเริ่มต้น:
สวิฟท์
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');
หุ่นยนต์
private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");
ซี++
firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");
ความสามัคคี
firebase.Functions.FirebaseFunctions functions;
functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");
ฟังก์ชั่นพื้นหลัง
ฟังก์ชันพื้นหลังใช้ความหมายในการส่งเหตุการณ์อย่างน้อยหนึ่งครั้ง ซึ่งหมายความว่าในบางกรณีอาจได้รับกิจกรรมที่ซ้ำกัน ดังนั้นคุณควรใช้ฟังก์ชันให้เป็น idempotent หากฟังก์ชันของคุณมีตำแหน่งเดิมอยู่แล้ว คุณสามารถปรับใช้ฟังก์ชันใหม่ในภูมิภาคใหม่ด้วยทริกเกอร์เหตุการณ์เดียวกัน และลบฟังก์ชันเก่าออกหลังจากที่คุณตรวจสอบแล้วว่าฟังก์ชันใหม่รับการรับส่งข้อมูลอย่างถูกต้อง ในระหว่างการเปลี่ยนแปลงนี้ ทั้งสองฟังก์ชันจะได้รับเหตุการณ์ ดู การเปลี่ยนขอบเขตของฟังก์ชัน สำหรับลำดับคำสั่งที่แนะนำเพื่อเปลี่ยนขอบเขตของฟังก์ชัน
หากฟังก์ชันของคุณไม่ใช่ค่าเดิมในปัจจุบัน หรือค่าค่าเดิมไม่ได้ขยายออกไปนอกขอบเขต เราขอแนะนำให้คุณใช้ค่าค่าเดิมก่อนที่จะย้ายฟังก์ชัน
คำแนะนำภูมิภาคที่เหมาะสมที่สุดจะแตกต่างกันไปตามประเภททริกเกอร์เหตุการณ์:
ประเภททริกเกอร์ | ข้อเสนอแนะภูมิภาค |
---|---|
คลาวด์ไฟร์สโตร์ | ภูมิภาคที่ใกล้กับตำแหน่งอินสแตนซ์ Cloud Firestore มากที่สุด (ดูหัวข้อถัดไป) |
ฐานข้อมูลเรียลไทม์ | us-central1 เสมอ |
การจัดเก็บเมฆ | ภูมิภาคที่ใกล้กับตำแหน่งที่เก็บข้อมูล Cloud Storage มากที่สุด (ดูหัวข้อถัดไป) |
คนอื่น | หากคุณกำลังโต้ตอบกับอินสแตนซ์ Realtime Database, อินสแตนซ์ Cloud Firestore หรือที่เก็บข้อมูล Cloud Storage ภายในฟังก์ชัน ภูมิภาคที่แนะนำจะเหมือนกับว่าคุณมีฟังก์ชันที่ทริกเกอร์โดยทรัพยากรใดทรัพยากรหนึ่งเหล่านั้น มิฉะนั้น ให้ใช้ภูมิภาคเริ่มต้นของ us-central1 ฟังก์ชั่นที่เชื่อมต่อกับ Firebase Hosting จะอยู่ในภูมิภาคใดก็ได้ แต่ดูคำแนะนำเกี่ยวกับ ภาพรวมของโฮสติ้งแบบไร้เซิร์ฟเวอร์ |
การเลือกภูมิภาคตามตำแหน่งของ 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 |