获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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

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

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

ภูมิภาคที่รองรับ

ในรายการในส่วนนี้ ไอคอน energy_savings_leaf ระบุว่าไฟฟ้าสำหรับภูมิภาคนี้ผลิตโดยปล่อยคาร์บอนต่ำ สำหรับข้อมูลเพิ่มเติม โปรดดู พลังงานปลอดคาร์บอนสำหรับภูมิภาค Google Cloud

Cloud Functions มีให้บริการในภูมิภาคต่อไปนี้ด้วย ราคา Tier 1 :

  • asia-east1 (ไต้หวัน)
  • asia-east2 (ฮ่องกง)
  • asia-northeast1 (โตเกียว)
  • asia-northeast2 (โอซาก้า)
  • europe-west1 (เบลเยียม) energy_savings_leaf
  • europe-west2 (ลอนดอน)
  • us-central1 (ไอโอวา) energy_savings_leaf
  • us-east1 (เซาท์แคโรไลนา)
  • us-east4 (เวอร์จิเนียตอนเหนือ)
  • us-west1 (ออริกอน) energy_savings_leaf

Cloud Functions มีให้บริการในภูมิภาคต่อไปนี้ด้วย ราคา Tier 2 :

  • asia-northeast3 (โซล)
  • asia-southeast1 (สิงคโปร์)
  • asia-southeast2 (จาการ์ตา)
  • asia-south1 (มุมไบ)
  • australia-southeast1 (ซิดนีย์)
  • europe-central2 (วอร์ซอว์)
  • europe-west3 (แฟรงค์เฟิร์ต)
  • europe-west6 (ซูริค) energy_savings_leaf
  • northamerica-northeast1 (มอนทรีออล) energy_savings_leaf
  • southamerica-east1 (เซาเปาโล) energy_savings_leaf
  • us-west2 (ลอสแองเจลิส)
  • us-west3 (ซอลท์เลคซิตี้)
  • us-west4 เวสต์4 (ลาสเวกัส)

ฟังก์ชันในภูมิภาคที่กำหนดในโครงการที่กำหนดต้องมีชื่อเฉพาะ (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) แต่ฟังก์ชันข้ามภูมิภาคหรือข้ามโครงการอาจใช้ชื่อเดียวกัน

แนวทางปฏิบัติที่ดีที่สุดสำหรับการเปลี่ยนภูมิภาค

ตามค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค us-central1 โปรดทราบว่าการดำเนินการนี้อาจแตกต่างจากภูมิภาคของแหล่งที่มาของเหตุการณ์ เช่น ที่เก็บข้อมูล Cloud Storage หากคุณต้องการเปลี่ยนภูมิภาคที่ฟังก์ชันทำงาน ให้ทำตามคำแนะนำในส่วนนี้สำหรับทริกเกอร์ฟังก์ชันแต่ละประเภท

หากต้องการตั้งค่าขอบเขตที่ฟังก์ชันทำงาน ให้ตั้งค่าพารามิเตอร์ region ในนิยามฟังก์ชันตามที่แสดง:

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

คุณสามารถระบุหลายภูมิภาคโดยส่งสตริงภูมิภาคที่คั่นด้วยเครื่องหมายจุลภาคหลายรายการใน functions.region() ดู การเปลี่ยนแปลงภูมิภาคของฟังก์ชัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนที่แนะนำ

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

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

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

ประเภททริกเกอร์ คำแนะนำภูมิภาค
Cloud Firestore ภูมิภาคที่ใกล้กับตำแหน่งอินสแตนซ์ของ Cloud Firestore มากที่สุด (ดูหัวข้อถัดไป)
ฐานข้อมูลเรียลไทม์ us-central1 เสมอ1
การจัดเก็บเมฆ ภูมิภาคที่ใกล้กับตำแหน่งบัคเก็ต Cloud Storage มากที่สุด (ดูหัวข้อถัดไป)
คนอื่น หากคุณโต้ตอบกับอินสแตนซ์ฐานข้อมูลเรียลไทม์ อินสแตนซ์ Cloud Firestore หรือบัคเก็ต Cloud Storage ภายในฟังก์ชัน ขอบเขตที่แนะนำจะเหมือนกับว่าคุณมีฟังก์ชันที่ทริกเกอร์โดยหนึ่งในทรัพยากรเหล่านั้น มิฉะนั้น ให้ใช้ภูมิภาคเริ่มต้นของ us-central1 โปรดทราบว่าฟังก์ชันที่เชื่อมต่อกับโฮสติ้ง Firebase จะต้องอยู่ใน us-central1

การเลือกภูมิภาคตามตำแหน่ง 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
asia-south1 (มุมไบ) asia-east2
australia-southeast2 (เมลเบิร์น) australia-southeast1