透過直接存取存放區,為免費方案下載 Python 套件

在免費方案中,Assured Open Source Software (Assured OSS) 套件會託管於 Google 代管的 Artifact Registry 存放區。如要直接存取及下載 Python 套件,可以連線至 Assured OSS 的 Artifact Registry 存放區。

本文僅適用於免費方案。如需進階級,請參閱「使用直接存放區存取權下載 Python 套件」。

事前準備

  1. 請要求管理員授予您組織的服務帳戶金鑰管理員 (roles/iam.serviceAccountKeyAdmin) IAM 角色。您需要這項權限,才能取得服務帳戶金鑰的 Base64 編碼字串。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

  2. 設定 Assured OSS。如要使用免費方案,請提交客戶啟用表單,啟用 Assured OSS 存取權。

  3. 驗證所要求服務帳戶與 Assured OSS 的連線能力。

  4. 針對用於存取 Assured OSS 的服務帳戶,啟用其上層 Google Cloud 專案的 Artifact Registry API。

  5. 安裝最新版本的 Google Cloud CLI。如果您先前已安裝 Google Cloud CLI,請執行下列指令,確認您使用的是最新版本:

    gcloud components update
    

設定驗證方法

您可以使用下列任一方法,向 Assured OSS Python 套件存放區進行驗證:

  • 使用 Python 鑰匙圈進行驗證
  • 使用服務帳戶金鑰進行驗證

以下各節說明如何設定這些驗證方式。

使用 Python 鑰匙圈進行驗證

如要使用 Python 向 Artifact Registry 驗證,建議使用 Python keyring。詳情請參閱「使用 keyring 驗證」和「憑證搜尋順序」。

如要設定 Python keyring 進行驗證,請按照下列步驟操作:

  1. 安裝 keyring 程式庫:

    pip install keyring
    
  2. 安裝 Artifact Registry 後端:

    pip install keyrings.google-artifactregistry-auth
    
  3. 列出後端,確認安裝:

    keyring --list-backends
    

    清單應包含下列項目:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. 如要瞭解如何設定應用程式預設憑證,請參閱「設定驗證」。

    這個步驟可確保 Assured OSS 憑證輔助程式在連線至存放區時,能取得您的金鑰。

使用服務帳戶金鑰進行驗證

如果應用程式需要以使用者名稱和密碼驗證,請使用服務帳戶金鑰驗證。

將 Package Repository 網址 https://us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple 替換為網址 https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/cloud-aoss/cloud-aoss-python/simple

安裝套件

以下操作說明假設您使用 PyPI 和 requirements.txt 下載及管理依附元件。如果您使用其他依附元件管理程序,則必須採取不同步驟。

在 Assured OSS 中安裝套件

如要指定要下載的 Assured OSS Python 套件,請建立兩個 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.
    

執行下列指令,下載套件:

  • 如要下載 Assured OSS Artifact Registry 中的必要套件,請執行下列指令:

     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 為選用項目。如果指定,指令會提供更多輸出。建議您在 requirements.txt 檔案中,使用 SHA-256 雜湊固定依附元件,確保安全性和可重現性。
  • 如要下載 Artifact Registry for Assured OSS 中沒有的必要套件,請執行下列指令:

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

    這個指令也會下載您使用前一個指令下載的套件缺少的依附元件。

存取 Assured OSS 的 Artifact Registry 存放區中未提供的套件

Assured OSS 已預設為偏好存放區,並使用 Maven Central 或 PyPI 等標準公開存放區做為次要存放區。

如要使用這項功能 (預先發布版),可以指向單一網址:

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

列出 Assured OSS 中所有可用的 Python 套件

如要使用 API 取得 Artifact Registry 存放區中所有 Python 套件的清單,請參閱「列出 Assured OSS 中所有可用的 Python 套件」。

產生 requirements-google.txt 檔案

本節提供產生 requirements-google.txt 檔案的其他資訊,您需要下載 Python 套件。如要下載雜湊並為環境產生 requirements-google.txt 檔案,可以使用下列兩種選項之一:

  • 使用指令碼為所有構件產生單一需求檔案。

  • 為每個構件下載個別的需求檔案。

以下各節將進一步說明這些選項。

方法 1:使用指令碼為所有構件產生單一需求檔案

使用 generator.sh 指令碼,為 Linux 作業系統的 Assured OSS 提供的所有 Python 套件 (及其雜湊) 產生單一 requirements-google.txt 檔案。套件必須符合 Python 版本、機器架構和作業系統等限制。接著,您可以刪除不需要的套件版本,並使用產生的檔案。

generator.sh 指令碼有以下兩種用途:

  • 產生可透過 Assured OSS 取得,且能成功安裝在系統上的最新 Python 套件版本清單。
  • 產生 requirements-google.txt 檔案和所有雜湊。

必要的指令碼及其 README.md 檔案位於 Cloud Storage bucket (gs://cloud-aoss/utils/python-requirements-txt/v1.0),可使用 Google Cloud CLI 下載。

如要下載指令碼和 README.md 檔案,請按照下列步驟操作:

  1. 使用下列指令,透過服務帳戶進行驗證,存取 Cloud Storage bucket:

    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

您也可以為每個 Python 構件下載獨立的 requirements.txt (包含雜湊) 檔案,然後將這些檔案合併為單一 requirements.txt 檔案。

構件雜湊值會儲存在 Cloud Storage bucket 中,您可以使用 gcloud CLI 下載。每個套件和版本的雜湊都位於 gs://cloud-aoss/python/PACKAGE_NAME/VERSION Cloud Storage bucket 位置。

如要下載 requirements.txt 檔案,請按照下列步驟操作:

  1. 使用下列指令,透過服務帳戶進行驗證,存取 Cloud Storage bucket:

    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 檔案。

後續步驟