ตำแหน่งฟังก์ชั่นคลาวด์

Cloud Functions เป็น แบบภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้ Cloud Function ของคุณนั้นตั้งอยู่ในภูมิภาคเฉพาะ และได้รับการจัดการโดย 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