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

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

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

リモート リポジトリが機能する仕組み

リモート リポジトリには、次のアップストリーム ソースからのアーティファクトが保存されます。

  • 標準の 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 の構成の手順をご覧ください。

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

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

パッケージ インデックスやメタデータなどの変更可能なファイルは、デフォルトの存続期間を超えるとアップストリーム ソースから更新されます。特定のファイルタイプのデフォルト期間は、次の表のとおりです。

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

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

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

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

便宜上、多くの一般的なアップストリーム リポジトリ URL は、次の形式でプリセットとして利用できます。

形式 パッケージ タイプ アップストリーム 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 のいずれかを選択して、特定のリポジトリへの 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

Artifact Registry リポジトリのアップストリーム

次の形式のアップストリームとして、Artifact Registry 標準形式のリポジトリでリモート リポジトリを作成できます。

  • Docker
  • npm
  • Maven
  • Python

カスタム URL

次の形式の場合、プリセット アップストリーム ソースのいずれかを使用せずに、リモート リポジトリの URL を直接入力できます。

  • Docker
  • npm
  • Maven
  • Python

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

形式 アップストリーム URI レジストリ名
Docker https://registry-1.docker.io Docker Hub
Docker https://public.ecr.aws AWS ECR Public Gallery
Docker https://registry.k8s.io Kubernetes Container Registry
Docker https://MY_NEXUS_IP Nexus
npm https://registry.npmjs.org npm
npm https://npm.pkg.github.com GitHub Npm Registry
npm https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Maven https://repo.maven.apache.org/maven2 Maven Central
Maven https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Python https://pypi.io Python Package Index(PyPI)
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

ここで

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

制限事項

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

  • Maven リモート リポジトリでは、バージョン ポリシーをスナップショットまたはリリースに設定できません。
  • アップストリーム ソースは、インターネットにアクセスできる必要があります。リモート リポジトリは、パブリック IP アドレスのないオンプレミスまたは Virtual Private Cloud(VPC)ネットワークのアップストリーム ソースをサポートしていません。

次のステップ