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

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

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

โดยค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค us-central1 โปรดทราบว่าอาจ แตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น บัคเก็ต 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 โปรดทราบว่าอาจ แตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น บัคเก็ต 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 ครั้ง ซึ่งหมายความว่า ในบางกรณี ฟังก์ชันอาจได้รับเหตุการณ์ที่ซ้ำกัน ดังนั้น คุณควร ใช้ฟังก์ชันให้เป็น ไอดีมโพเทนต์ หากฟังก์ชันของคุณ เป็น Idempotent อยู่แล้ว คุณก็สามารถนำฟังก์ชันไปใช้งานใหม่ในภูมิภาคใหม่ได้ โดยใช้ทริกเกอร์เหตุการณ์เดียวกัน และนำฟังก์ชันเก่าออกหลังจากยืนยันว่า ฟังก์ชันใหม่รับการเข้าชมได้อย่างถูกต้อง ในระหว่างการเปลี่ยนผ่านนี้ ทั้ง 2 ฟังก์ชันจะได้รับเหตุการณ์ ดู เปลี่ยนภูมิภาคของฟังก์ชัน สำหรับลำดับคำสั่งที่แนะนำในการเปลี่ยนภูมิภาคสำหรับฟังก์ชัน

หากฟังก์ชันของคุณไม่ได้เป็นแบบ Idempotent ในขณะนี้ หรือ Idempotency ไม่ได้ขยายออกไปนอกภูมิภาค เราขอแนะนำให้คุณใช้ Idempotency ก่อนที่จะย้ายฟังก์ชัน

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

ประเภททริกเกอร์ คำแนะนำเกี่ยวกับภูมิภาค
Cloud Firestore ภูมิภาคที่ใกล้กับCloud Firestoreตำแหน่งอินสแตนซ์ (ดูส่วนถัดไป)
Realtime Database ภูมิภาคเดียวกับอินสแตนซ์ Realtime Database
Cloud Storage ภูมิภาคที่ใกล้กับ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