Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

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

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

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

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

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

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

โดยค่าเริ่มต้น ฟังก์ชันจะทำงานในภูมิภาค 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

ในการตั้งค่าภูมิภาคบนไคลเอนต์ ให้ระบุภูมิภาคที่ต้องการเมื่อเริ่มต้น:

Swift

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');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C++

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