การระบุทรัพยากร Dependency สําหรับ Cloud Functions ที่เขียนด้วย Python มี 2 วิธี ได้แก่ การใช้ไฟล์ requirements.txt
ของตัวจัดการแพ็กเกจ pip หรือการจัดแพ็กเกจทรัพยากร Dependency ในเครื่องไปพร้อมกับฟังก์ชัน
ระบบไม่รองรับข้อกำหนดของ Dependency ที่ใช้มาตรฐาน Pipfile/Pipfile.lock โปรเจ็กต์ไม่ควรมีไฟล์เหล่านี้
การระบุทรัพยากร Dependency ด้วย pip
Dependency ใน Python จัดการด้วย pip และแสดงในไฟล์ข้อมูลเมตาที่ชื่อ requirements.txt
ไฟล์นี้ต้องอยู่ในไดเรกทอรีเดียวกับไฟล์ main.py
ที่มี
รหัสฟังก์ชัน
เมื่อคุณทำให้ฟังก์ชันใช้งานได้หรือทำให้ใช้งานได้อีกครั้ง Cloud Functionsจะใช้ pip เพื่อดาวน์โหลดและติดตั้งข้อกำหนดเวอร์ชันล่าสุดตามที่ประกาศไว้ในไฟล์ requirements.txt
ไฟล์ requirements.txt
จะมี 1 บรรทัดต่อแพ็กเกจ แต่ละบรรทัดประกอบด้วยชื่อแพ็กเกจและเวอร์ชันที่ขอ (ไม่บังคับ) ดูรายละเอียดเพิ่มเติมได้ที่requirements.txt
อ้างอิง
หากไม่ต้องการให้บิลด์ได้รับผลกระทบจากการเปลี่ยนแปลงเวอร์ชันของ Dependency ให้พิจารณาปักหมุดแพ็กเกจ Dependency ไว้ที่เวอร์ชันที่ต้องการ
ต่อไปนี้เป็นตัวอย่างไฟล์ requirements.txt
functions-framework requests==2.20.0 numpy
เฟรมเวิร์กฟังก์ชันคือ ทรัพยากร Dependency ที่จำเป็นสำหรับทุกฟังก์ชัน แม้ว่า Cloud Functions จะติดตั้งในนามของคุณเมื่อสร้างฟังก์ชัน แต่เราขอแนะนำให้คุณรวมไว้ในข้อกำหนดอย่างชัดแจ้งเพื่อความชัดเจน
หาก
ต้องใช้ทรัพยากร Dependency ส่วนตัว เราขอแนะนำให้คุณ
มิเรอร์ functions-framework
ไปยังรีจิสทรีส่วนตัวของคุณ รวมการมิเรอร์
functions-framework
เป็นทรัพยากร Dependency ของฟังก์ชันเพื่อหลีกเลี่ยงการติดตั้ง
จากอินเทอร์เน็ตสาธารณะ
การบรรจุ Dependency ในพื้นที่
นอกจากนี้ คุณยังแพ็กเกจและทำให้ทรัพยากร Dependencies พร้อมใช้งานควบคู่ไปกับฟังก์ชันได้ด้วย ช่วงเวลานี้ วิธีการมีประโยชน์หากทรัพยากร Dependency ไม่พร้อมใช้งานผ่าน PIP โปรแกรมจัดการแพ็กเกจ หรือหากอินเทอร์เน็ตของสภาพแวดล้อม Cloud Functions มีการจำกัดการเข้าถึง
ตัวอย่างเช่น คุณอาจใช้โครงสร้างไดเรกทอรีดังต่อไปนี้
myfunction/ ├── main.py └── localpackage/ ├── __init__.py └── script.py
จากนั้นคุณสามารถนำเข้าโค้ดตามปกติจาก localpackage
โดยใช้
import
# Code in main.py from localpackage import script
โปรดทราบว่าวิธีนี้จะไม่เรียกใช้ไฟล์ setup.py
ใดๆ แพ็กเกจที่มีไฟล์เหล่านั้นจะยังคงจัดกลุ่มได้ แต่จะทำงานไม่ถูกต้องใน Cloud Functions