ตำแหน่งของ 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 us-central1 เสมอ
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