การระบุทรัพยากร Dependency สำหรับฟังก์ชันที่เขียนด้วย Python ทำได้ 2 วิธี ได้แก่ การใช้ไฟล์ requirements.txt
ของตัวจัดการแพ็กเกจ pip หรือการแพ็กเกจทรัพยากร Dependency ในเครื่องพร้อมกับฟังก์ชันCloud Functions
ไม่รองรับข้อกำหนดการขึ้นต่อกันโดยใช้มาตรฐาน 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
เฟรมเวิร์กฟังก์ชันเป็น การอ้างอิงที่จำเป็นสำหรับฟังก์ชันทั้งหมด แม้ว่า Cloud Functions จะติดตั้งให้คุณเมื่อสร้างฟังก์ชัน แต่เราขอแนะนำ ให้คุณระบุเป็นทรัพยากร Dependency ที่ชัดเจนเพื่อความชัดเจน
หากฟังก์ชันของคุณต้องใช้ทรัพยากร Dependency ส่วนตัว เราขอแนะนำให้คุณทำมิเรอร์ functions-framework
ไปยังรีจิสทรีส่วนตัว รวม
functions-framework
ที่มิเรอร์เป็นทรัพยากร Dependency ของฟังก์ชันเพื่อหลีกเลี่ยงการติดตั้งแพ็กเกจ
จากอินเทอร์เน็ตสาธารณะ
การแพ็กเกจทรัพยากร Dependency ในเครื่อง
นอกจากนี้ คุณยังแพ็กเกจและนำทรัพยากร 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