הורדת חבילות Python באמצעות גישה ישירה למאגר עבור רמת השימוש בחינם

במסגרת רמת השירות ללא תשלום, חבילות של Assured Open Source Software מאוחסנות במאגר Artifact Registry שמנוהל על ידי Google.

בדף הזה מוסבר איך להתחבר למאגר של Assured OSS ב-Artifact Registry כדי לגשת ישירות לחבילות Python ולהוריד אותן.

המסמך הזה רלוונטי רק לתוכנית בחינם. למידע על מסלול Premium, אפשר לעיין במאמר בנושא הורדת חבילות Python באמצעות גישה ישירה למאגר.

לפני שמתחילים

  1. צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM אדמין של מפתח של חשבון שירות (roles/iam.serviceAccountKeyAdmin) בארגון. ההרשאה הזו נדרשת כדי לקבל את המחרוזת המקודדת ב-Base64 של מפתח חשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

  2. מגדירים את Assured OSS. כדי לקבל גישה ל-Assured OSS ברמת השימוש החינמית, צריך לשלוח את טופס ההרשמה ללקוחות.

  3. מאמתים את הקישוריות ל-Assured OSS עבור חשבונות השירות המבוקשים.

  4. מפעילים את Artifact Registry API בפרויקט האב Google Cloudשל חשבונות השירות שמשמשים לגישה ל-Assured OSS.

  5. מתקינים את הגרסה האחרונה של Google Cloud CLI. אם התקנתם את Google Cloud CLI בעבר, צריך לוודא שפועלת אצלכם הגרסה העדכנית ביותר באמצעות הפקודה הבאה:

    gcloud components update
    

מגדירים אימות

אפשר לבצע אימות למאגר חבילות ה-Python של Assured OSS באחת מהשיטות הבאות:

  • אימות באמצעות Python keyring
  • אימות באמצעות מפתח לחשבון שירות

בקטעים הבאים מוסבר איך מגדירים את שיטות האימות האלה.

אימות באמצעות Python keyring

כדי לבצע אימות ב-Artifact Registry באמצעות Python, מומלץ להשתמש ב-Python keyring. מידע נוסף זמין במאמרים בנושא אימות באמצעות keyring וסדר החיפוש של פרטי הכניסה.

כדי להגדיר את מחזיק המפתחות של Python לאימות:

  1. מתקינים את הספרייה keyring:

    pip install keyring
    
  2. מתקינים את ה-backend של Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. מריצים את הפקודה הבאה כדי לוודא שההתקנה בוצעה:

    keyring --list-backends
    

    הרשימה צריכה לכלול את הפרטים הבאים:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. מידע על הגדרת Application Default Credentials זמין במאמר הגדרת אימות.

    השלב הזה מבטיח שכלי העזר לאימות של Assured OSS יקבל את המפתח שלכם כשמתחברים למאגרי המידע.

אימות באמצעות מפתח לחשבון שירות

מבצעים אימות באמצעות מפתח של חשבון שירות כשהאפליקציה דורשת אימות באמצעות שם משתמש וסיסמה.

מחליפים את כתובת ה-URL של מאגר החבילות https://us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple בכתובת ה-URL https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple

התקנת חבילות

ההוראות הבאות מבוססות על ההנחה שאתם משתמשים ב-PyPI וב-requirements.txt כדי להוריד ולנהל את קשרי התלות. אם אתם משתמשים בתהליך אחר לניהול תלות, אתם צריכים לבצע שלבים שונים.

התקנת חבילות ב-Assured OSS

כדי לציין את חבילות ה-Python של Assured OSS שרוצים להוריד, יוצרים שני קובצי requirements.txt. אלה קובצי הדוגמה:

  • requirements-google.txt

    # Packages present in Google's Artifact Registry
    
    urllib3==1.26.11 --hash=sha256:1cffe1aa066363a75c856f261c8fce62d87f7c40ce0f46453ea12bf652b12a13
    jsonschema==4.13.0 --hash=sha256:29895bfe55b93b75552fbdd1e09aa0c82b7c1c9395d4f267e10c7d43cd31a74e
    
  • requirements-pypi.txt

    # Packages present in Google's Artifact Registry are mentioned here so that pip
    # downloads their dependencies from PyPI.
    
    urllib3==1.26.11
    jsonschema==4.13.0
    
    # Below this comment, add any package version which you need but is NOT
    # present in Google's Artifact Registry and therefore needs to be downloaded from
    # PyPI.
    

כדי להוריד את החבילות, מריצים את הפקודות הבאות:

  • כדי להוריד את החבילות הנדרשות שנמצאות ב-Artifact Registry בשביל Assured OSS, מריצים את הפקודה הבאה:

     pip install --require-hashes --requirement=requirements-google.txt \
         --index-url https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple -v \
         --no-deps
    

    כמה נקודות שכדאי לחשוב עליהן:

    • הערך --require-hashes הוא אופציונלי. אם הם כלולים, הגיבובים מצוינים לכל החבילות ולכל גרסאות החבילות בקובץ requirements.txt.
    • הערך -v הוא אופציונלי. אם מציינים את האפשרות הזו, הפקודה נותנת פלט נוסף. מומלץ להצמיד תלויות עם גיבובי SHA-256 בקובץ requirements.txt כדי להבטיח אבטחה ושחזור.
  • כדי להוריד את החבילות הנדרשות שלא נמצאות ב-Artifact Registry ל-Assured OSS, מריצים את הפקודה הבאה:

     pip install --requirement=requirements-pypi.txt --index-url https://pypi.org/simple -v
    

    הפקודה הזו גם מורידה את התלויות החסרות של החבילות שהורדתם באמצעות הפקודה הקודמת.

חבילות גישה לא זמינות במאגר Artifact Registry ל-Assured OSS

המאגר המועדף של Assured OSS מוגדר מראש ב-Assured OSS, ומאגרי מידע ציבוריים קנוניים, כמו Maven Central או PyPI, מוגדרים כמאגרי מידע משניים.

כדי להשתמש בתכונה הזו (תצוגה מקדימה), אפשר להפנות לכתובת URL אחת:

https://us-python.pkg.dev/cloud-aoss/python/simple

הצגת רשימה של כל חבילות Python שזמינות ב-Assured OSS

כדי להשתמש ב-API כדי לקבל רשימה של כל חבילות Python במאגר של Artifact Registry, אפשר לעיין במאמר איך מציגים רשימה של כל חבילות Python שזמינות ב-Assured OSS.

יצירת קובץ requirements-google.txt

בקטע הזה מפורט מידע נוסף על יצירת הקובץ requirements-google.txt שצריך להוריד את חבילות Python. כדי להוריד את הגיבוב וליצור את קובץ requirements-google.txt לסביבה שלכם, אתם יכולים להשתמש באחת משתי האפשרויות הבאות:

  • שימוש בסקריפט כדי ליצור קובץ דרישות יחיד לכל הארטיפקטים.

  • מורידים קובץ דרישות נפרד לכל ארטיפקט.

בקטעים הבאים מוסבר בהרחבה על האפשרויות האלה.

אפשרות 1: שימוש בסקריפט ליצירת קובץ דרישות יחיד לכל הארטיפקטים

אפשר להשתמש בסקריפט generator.sh כדי ליצור קובץ requirements-google.txt יחיד לכל חבילות Python (יחד עם הגיבובים שלהן) שזמינות ב-Assured OSS למערכת ההפעלה Linux. החבילות צריכות לעמוד במגבלות כמו גרסת Python, ארכיטקטורת המכונה ומערכת ההפעלה. אחר כך תוכלו למחוק את גרסאות החבילה שלא תצטרכו ולהשתמש בקובץ שיתקבל.

הסקריפט generator.sh עוזר בשתי דרכים:

  • יוצר את הרשימה העדכנית ביותר של גרסאות חבילות Python שזמינות עם Assured OSS, שאפשר להתקין במערכת בהצלחה.
  • המערכת יוצרת את קובץ requirements-google.txt עם כל הגיבובים.

הסקריפט הנדרש וקובץ ה-README.md שלו זמינים בקטגוריה של Cloud Storage‏ (gs://cloud-aoss/utils/python-requirements-txt/v1.0), שאפשר להוריד באמצעות Google Cloud CLI.

כדי להוריד את הסקריפט ואת קובץ ה-README.md:

  1. מבצעים אימות באמצעות חשבון השירות כדי לגשת לקטגוריה של Cloud Storage באמצעות הפקודה הבאה:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    מחליפים את KEY_FILE בנתיב לקובץ שמכיל את פרטי הכניסה של חשבון השירות.

  2. מורידים את generator.sh למחשב באמצעות הפקודה הבאה:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE --recursive
    

    מחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים לשמור את הקובץ שהורד.

  3. מורידים את הקובץ README.md באמצעות הפקודה הבאה:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE --recursive
    

    מחליפים את PATH_TO_LOCAL_STORE בנתיב המקומי שבו רוצים לשמור את הקובץ שהורד. הקובץ README.md מכיל הוראות לשימוש בסקריפט.

כדי להריץ את הסקריפט, משתמשים בפקודות הבאות:

  • כדי ליצור את הקובץ requirements-google.txt, מריצים את הפקודה הבאה:

     chmod +x generator.sh
     ./generator.sh
    
  • כדי לקבל את פרטי החבילה בקובץ CSV, מריצים את הפקודה הבאה:

    chmod +x generator.sh
    ./generator.sh -i
    

אפשרות 2: הורדת requirements.txt לכל ארטיפקט נדרש

אפשר גם להוריד קובץ requirements.txt נפרד (שמכיל את הגיבוב) לכל ארטיפקט של Python, ואז לשלב אותם בקובץ requirements.txt אחד.

הגיבובים של הארטיפקטים זמינים בקטגוריה של Cloud Storage, שאפשר להוריד באמצעות ה-CLI של gcloud. הגיבובים של כל חבילה וגרסה נמצאים במיקום של קטגוריה של Cloud Storage‏ gs://cloud-aoss/python/PACKAGE_NAME/VERSION.

כדי להוריד את הקובץ requirements.txt:

  1. מבצעים אימות באמצעות חשבון השירות כדי לגשת לקטגוריה של Cloud Storage באמצעות הפקודה הבאה:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    מחליפים את KEY_FILE בנתיב לקובץ שמכיל את פרטי הכניסה של חשבון השירות.

  2. מורידים את requirements.txt של חבילה ספציפית וגרסה ספציפית למחשב המקומי באמצעות הפקודה הבאה:

    gcloud storage cp gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE --recursive
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PACKAGE_NAME: שם החבילה
    • VERSION: הגרסה של החבילה
    • PATH_TO_LOCAL_STORE: הנתיב המקומי שאליו רוצים להוריד את הקובץ

    פקודה לדוגמה:

    gcloud storage cp gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach --recursive

    קובץ requirements.txt לדוגמה:

    bleach==5.0.0 \
     --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812
    

    אפשר לשלב את התוכן של כל קובץ requirements.txt כזה בקובץ requirements-google.txt אחד.

המאמרים הבאים