การจัดการทรัพยากร Dependency


การระบุทรัพยากร Dependency สำหรับ Cloud Functions ที่เขียนด้วยไฟล์มีอยู่ 2 วิธี Python: การใช้ตัวจัดการแพ็กเกจ pip requirements.txt หรือจัดแพ็กเกจทรัพยากร Dependency ภายในไฟล์พร้อมกับฟังก์ชัน

ข้อกำหนดการขึ้นต่อกันที่ใช้มาตรฐาน Pipfile/Pipfile.lock คือ ไม่รองรับ โปรเจ็กต์ไม่ควรมีไฟล์เหล่านี้

การระบุทรัพยากร Dependency ด้วย PIP

การขึ้นต่อกันใน Python ได้รับการจัดการด้วย PIP และแสดงในไฟล์ข้อมูลเมตา โทรหา requirements.txt ไฟล์นี้ต้องอยู่ในไดเรกทอรีเดียวกับไฟล์ main.py ที่มี รหัสฟังก์ชัน

เมื่อทำให้ฟังก์ชันใช้งานได้หรือทำให้ฟังก์ชันใช้งานได้อีกครั้ง Cloud Functions ใช้ PIP เพื่อดาวน์โหลดและติดตั้งเวอร์ชันล่าสุด ทรัพยากร Dependency ตามที่ประกาศไว้ในไฟล์ requirements.txt ไฟล์ requirements.txt จะมี 1 บรรทัดต่อแพ็กเกจ แต่ละบรรทัดประกอบด้วย ชื่อแพ็กเกจ และเวอร์ชันที่ขอ (ไม่บังคับ) ดูรายละเอียดเพิ่มเติมได้ที่ requirements.txt ข้อมูลอ้างอิง

หากต้องการป้องกันไม่ให้บิลด์ของคุณได้รับผลกระทบจากการเปลี่ยนแปลงเวอร์ชันของทรัพยากร Dependency ให้ลองปักหมุดแพ็กเกจทรัพยากร Dependency เป็นเวอร์ชันที่เจาะจง

ต่อไปนี้คือตัวอย่างไฟล์ requirements.txt

functions-framework
requests==2.20.0
numpy

เฟรมเวิร์กฟังก์ชันคือ ทรัพยากร Dependency ที่จำเป็นสำหรับทุกฟังก์ชัน แม้ว่า Cloud Functions เราขอแนะนำให้ติดตั้งในนามของคุณเมื่อมีการสร้างฟังก์ชัน ที่คุณใช้เป็นทรัพยากร Dependency ที่ชัดเจนเพื่อความชัดเจน

หาก ต้องใช้ทรัพยากร Dependency ส่วนตัว เราขอแนะนำให้คุณ มิเรอร์ functions-framework ไปยังรีจิสทรีส่วนตัว รวมการมิเรอร์ functions-framework เป็นทรัพยากร Dependency ของฟังก์ชันเพื่อหลีกเลี่ยงการติดตั้ง จากอินเทอร์เน็ตสาธารณะ

การรวมแพ็กเกจทรัพยากร 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