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


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

ระบบไม่รองรับการระบุทรัพยากร Dependency โดยใช้มาตรฐาน Pipfile/Pipfile.lock โปรเจ็กต์ไม่ควรรวมไฟล์เหล่านี้

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

ระบบจะจัดการทรัพยากร Dependency ใน 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 ภายใน

นอกจากนี้ คุณยังแพ็กและทำให้ทรัพยากร 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