リモート リポジトリの概要

このドキュメントでは、リモート リポジトリの概要について説明します。リモート リポジトリの作成方法については、リモート リポジトリを作成するをご覧ください。

Artifact Registry の割り当てと上限は、リモート リポジトリに適用されます。

リモート リポジトリの仕組み

リモート リポジトリには、Docker Hub、Maven Central、Python Package Index(PyPI)、Debian、CentOS などの事前設定された外部ソースからのアーティファクトと、サポートされている形式のユーザー定義のソースが保存されます。して、ソース別にトラフィック データを分類します。リモート リポジトリは、外部ソースのプロキシとして機能するため、外部依存関係をより細かく管理できます。パッケージのバージョンを初めてリクエストするときに、Artifact Registry はパッケージをダウンロードして、リモート リポジトリにキャッシュ保存します。次に同じパッケージ バージョンをリクエストすると、Artifact Registry はキャッシュに保存されたコピーを提供します。

存在しないアップストリーム ソースから、または指定したバージョンが含まれないアップストリーム ソースからアーティファクトをリクエストすると、リクエストは失敗します。

その他のリポジトリ モードは以下のとおりです。

  • 標準: デフォルトのリポジトリ モード。標準リポジトリに非公開パッケージなどのアーティファクトを直接アップロードまたは公開します。ダウンロードは個々の標準リポジトリから直接行えますが、仮想リポジトリでリポジトリのグループにアクセスするとツールの構成が簡素化されます。
  • 仮想: リモート リポジトリと標準リポジトリなど、複数のアップストリーム リポジトリに対する単一のアクセス ポイントとして機能するリポジトリ。

アップストリーム認証

Artifact Registry のリモート リポジトリは、サポートされている形式のプリセットおよびユーザー定義のアップストリーム ソースに対する基本認証をサポートしています。リモート リポジトリのアップストリーム ソースに対する認証方法の詳細については、リモート リポジトリのアップストリームへの認証を構成するをご覧ください。

ユースケースと利点

アーティファクトへのより高速で信頼性の高いアクセス
一般公開の依存関係のキャッシュ コピーを Artifact Registry に保存すると、他の Google Cloud サービスがイメージを取得する際のレイテンシが短縮されます。キャッシュに保存されたアーティファクトは、停止などの問題により外部公開リポジトリがオフラインになっている場合でも引き続き使用できます。
依存関係のより安全な解決

リモート リポジトリを仮想リポジトリと併用して、公開の依存関係に関連するリスクを軽減します。一部のツールでは、非公開リポジトリと公開リポジトリが混在してクライアントに構成されている場合に、検索順序を制御する方法が提供されていません。このタイプの構成は、依存関係の混乱攻撃に対して脆弱です。この場合、悪意のあるコードを含むパッケージの新しいバージョンが公開リポジトリにアップロードされて、クライアントが騙されて不正なバージョンを選んでしまいます。

クライアントを直接構成して複数のリポジトリを検索するのではなく、仮想リポジトリを構成してリモート リポジトリよりもプライベート リポジトリを優先させることが可能です。

Artifact Registry が VPC Service Controls のサービス境界内にある場合、Artifact Registry はデフォルトで境界外のアップストリーム ソースへのアクセスを拒否します。特定のロケーションにあるリモート リポジトリが、構成された境界外の外部ソースにアクセスできるようにするには、VPC Service Controls の構成の手順をご覧ください。

依存関係の管理に関するその他のベスト プラクティスについては、依存関係の管理をご覧ください。

パッケージ インデックスとメタデータを更新する

パッケージ インデックスやメタデータなどの変更可能なファイルは、デフォルトの経過時間を超えると、アップストリーム ソースから更新されます。次の表に、特定のファイル形式のデフォルトを示します。

形式 File type デフォルトの更新期間
Maven maven-metadata.xml 5 分
archetype-catalog.xml 1 時間
Npm マニフェスト ファイル 5 分
Python インデックス ファイル 1 時間
Docker タグキャッシュの一覧表示 / 取得 1 時間
Apt/Yum(プレビュー) インデックス ファイル 2 分
パッケージ ファイル 72 時間

サポートされているファイル形式

プリセットとユーザー定義のリモート リポジトリで使用可能な形式については、次のセクションをご覧ください。

プリセット アップストリーム

次のリポジトリ形式と対応するプリセット アップストリーム ソースのリモート リポジトリを作成できます。

形式 パッケージ タイプ アップストリーム URL アップストリーム プリセット名
Docker 公開 / 非公開 https://registry-1.docker.io DOCKER-HUB
Maven 公開 / 非公開 https://repo.maven.apache.org/maven2 MAVEN-CENTRAL
npm 公開 / 非公開 https://registry.npmjs.org NPMJS
Python パブリック https://pypi.io PYPI
OS パッケージ (プレビュー版 パブリック アップストリームでサポートされる OS パッケージをご覧ください アップストリームでサポートされる OS パッケージをご覧ください

OS パッケージのプリセット アップストリーム

リポジトリ ベースを選択して、特定のリポジトリへの URL の残りの部分をカスタマイズすることで、OS パッケージのリモート リポジトリを作成できます。次のリポジトリ ベースがサポートされています。

Apt

リポジトリ URL プレフィックス リポジトリのベース名
Debian http://deb.debian.org DEBIAN
Ubuntu LTS または Pro http://archive.ubuntu.com UBUNTU

Yum

リポジトリ URL プレフィックス リポジトリのベース名
CentOS http://mirror.centos.org CENTOS
http://debuginfo.centos.org CENTOS_DEBUG
https://vault.centos.org CENTOS_VAULT
https://mirror.stream.centos.org CENTOS_STREAM
Rocky http://dl.rockylinux.org ROCKY
Fedora Extra Packages for Enterprise Linux(EPEL) https://dl.fedoraproject.org/pub/epel EPEL

ユーザー定義のアップストリーム

ユーザー定義のアップストリーム ソースのリモート リポジトリは、次の形式で作成できます。

  • Docker
  • npm
  • Maven
  • Python

次の表に、一般的なアップストリーム URI の一部を一覧表示します。

形式 アップストリーム URI レジストリ名
Docker https://public.ecr.aws AWS ECR 公開ギャラリー
Docker https://registry.k8s.io Kubernetes Container Registry
Docker https://MY_ARTIFACTORY_INSTANCE.jfrog.io JFrog Artifactory
Docker https://MY_NEXUS_IP Nexus
npm https://npm.pkg.github.com GitHub Npm Registry
npm https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/npm/MY_UPSTREAM_REPOSITORY JFrog Artifactory
npm https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Maven https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/MY_UPSTREAM_REPOSITORY JFrog Artifactory
Maven https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Python https://MY_ARTIFACTORY_INSTANCE.jfrog.io/artifactory/api/pypi/MY_UPSTREAM_REPOSITORY JFrog Artifactory
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

場所

  • MY_ARTIFACTORY_INSTANCE は、Jfrog Artifactory アップストリーム インスタンスの名前です。
  • MY_NEXUS_IP は、Nexus アップストリーム インスタンスの IP アドレスとポートです。
  • MY_UPSTREAM_REPOSITORY は、Nexus と Artifactory の例で使用されるアップストリーム リポジトリの名前です。

制限事項

Artifact Registry の割り当てと制限に加えて、リモート リポジトリには次の制限があります。

  • Maven リモート リポジトリでは、バージョン ポリシーをスナップショットまたはリリースに設定できません。

次のステップ