リポジトリへの直接アクセス(無料枠)を使用して Python パッケージをダウンロードする

無料枠では、Assured Open Source Software パッケージは Google が管理する Artifact Registry リポジトリにホストされます。

このページでは、Assured OSS の Artifact Registry リポジトリに接続して、Python パッケージに直接アクセスしてダウンロードする方法について説明します。

このドキュメントは、無料枠にのみ適用されます。プレミアム ティアについては、リポジトリへの直接アクセスを使用して 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 による認証認証情報の検索順序をご覧ください。

認証用の Python キーリングを設定するには、次の操作を行います。

  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 認証情報ヘルパーがリポジトリとの接続時に鍵を取得できるようになります。

サービス アカウント キーによる認証

アプリケーションでユーザー名とパスワードによる認証が必要な場合は、サービス アカウント キーで認証します。

パッケージ リポジトリの 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 にパッケージをインストールする

ダウンロードする Assured OSS Python パッケージを指定するには、2 つの 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 ハッシュを使用して依存関係を固定することをおすすめします。
  • Assured OSS の Artifact Registry にない必須パッケージをダウンロードするには、次のコマンドを実行します。

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

    このコマンドは、前述のコマンドを使用してダウンロードしたパッケージで不足している依存関係もダウンロードします。

Assured OSS の Artifact Registry リポジトリで利用できないパッケージにアクセスする

Assured OSS は、優先リポジトリとして Assured OSS、セカンダリ リポジトリとして正規公開リポジトリ(Maven Central や PyPI など)を使用して事前構成されます。

この機能(プレビュー)を使用するには、単一の URL を指定します。

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

Assured OSS で利用可能なすべての Python パッケージを一覧表示する

API を使用して、Artifact Registry リポジトリのすべての Python パッケージのリストを取得するには、Assured OSS で利用可能なすべての Python パッケージを一覧表示するをご覧ください。

requirements-google.txt ファイルの生成

このセクションでは、Python パッケージのダウンロードに必要な requirements-google.txt ファイルの生成に関する追加情報について説明します。ハッシュをダウンロードして、環境用の requirements-google.txt ファイルを生成するには、次の 2 つのオプションのいずれかを使用します。

  • スクリプトを使用して、すべてのアーティファクトに対する 1 つの要件ファイルを生成する。

  • アーティファクトごとに個別の要件ファイルをダウンロードする。

以降のセクションでは、これらのオプションについて詳しく説明します。

オプション 1: スクリプトを使用して、すべてのアーティファクトに対する 1 つの要件ファイルを生成する

generator.sh スクリプトを使用して、Linux オペレーティング システム用 Assured OSS で利用可能なすべての Python パッケージ(およびそれらのハッシュ)用の 1 つの requirements-google.txt ファイルを生成します。パッケージは、Python のバージョン、マシン アーキテクチャ、オペレーティング システムなどの制約を満たす必要があります。その後、不要なパッケージのバージョンを削除して、結果のファイルを使用できます。

generator.sh スクリプトは、次の 2 つの形で役立ちます。

  • システムに正常にインストールできる Assured OSS で利用可能な Python パッケージ バージョンの最新のリストを生成する。
  • 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 をダウンロードする

Python アーティファクトごとに個別の requirements.txt(ハッシュを含む)ファイルをダウンロードし、単一の requirements.txt ファイルに結合することもできます。

アーティファクト ハッシュは Cloud Storage バケットで入手可能であり、gcloud CLI を使用してダウンロードできます。各パッケージとバージョンのハッシュは、gs://cloud-aoss/python/PACKAGE_NAME/VERSION Cloud Storage バケットのロケーションにあります。

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 ファイルの各コンテンツは、1 つの requirements-google.txt ファイルに結合できます。

次のステップ