View a markdown version of this page

Bundler の互換性 - CodeArtifact

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Bundler の互換性

このガイドには、CodeArtifact の Bundler との互換性に関する情報が含まれています。

Bundler の互換性

AWS CodeArtifact は Bundler 2.4.11 以降を推奨しています。インストールで問題が発生した場合は、Bundler CLI を最新バージョンに更新してください。

Bundler バージョンのサポート

2.4.11 より前のバージョンの Bundler では、Gemfile で定義できる依存関係は 500 に制限されており、500 を超えると Bundler がインデックス全体のクエリを決定します (specs.4.8.gz)。CodeArtifact ではフルインデックスがサポートされていません。そのため、2.4.11 より前の Bundler バージョンを使用する場合、500 を超える依存関係を指定すると CodeArtifact では機能しません。

CodeArtifact を使用して Gemfile に 500 を超える依存関係を定義するには、Bundler をバージョン 2.4.11 以降に更新してください。

Bundler オペレーションのサポート

Bundler は、Compact Index API または Dependencies API の 2 つのプロトコルのいずれかを使用して Ruby Gem の依存関係を解決します。CodeArtifact は両方をサポートしています。Bundler 2.4.11 以降では、Compact Index API を優先し、利用できない場合は Dependencies API にフォールバックします。以前のバージョンでは Dependencies API のみを使用します。RubyGems 3.5.19 以降では、 の実行時に Compact Index API を直接使用しますgem install

CodeArtifact は、次の Compact Index エンドポイントをサポートしています。

  • GET /versions: リポジトリ内のすべての Gem を完全なバージョンリストとともに返します。Bundler と RubyGems は、依存関係解決のエントリポイントとしてこのエンドポイントを使用します。

  • GET /names: リポジトリ内のすべての Gem 名をアルファベット順にソートして返します。

  • GET /info/gem-name: 1 つの Gem のバージョン、依存関係、および required-Ruby-version情報を返します。

/versions エンドポイントと /namesエンドポイントは、最大 5,000 Gem を含むリポジトリをサポートします。5,000 を超える Gem を含むリポジトリに対するリクエストは、HTTP 400 エラーを返します。

CodeArtifact は、 で Bundler Dependencies API もサポートしています/api/v1/dependencies。1 つのリクエストに複数の Gem 名を含めることができます。マルチ Gem リクエストがアカウントの 1 秒あたりの読み取りリクエストクォータに対してどのように重み付けされるかの詳細については、「」を参照してくださいAWS CodeArtifact のクォータ

/versions および はリポジトリ内のすべての gem のデータを/names返すため、CodeArtifact はこれらのリクエストを返された gem の数で重み付けします。bundle install または gem installオペレーションを同時に実行している CI/CD 環境は、HTTP リクエストレートが低いように見える場合でもスロットリングできます。Ruby Gem の解決中にスロットリングが発生した場合は、1 つの AWS アカウントから 1 秒あたりの読み取りリクエストのクォータの引き上げをリクエストします。

CodeArtifact 互換性の回避策として、以前に RubyGems を 3.5.19 未満のバージョンに固定していた場合は、そのピンを削除して最新バージョンにアップグレードできるようになりました。

CodeArtifact は、、、 などのレガシー RubyGems specs.4.8.gz仕様インデックスをサポートしていませんlatest_specs.4.8.gzprerelease_specs.4.8.gz。これらは、Compact Index API に置き換えられました。

コンパクトインデックスのサポートのテスト

コンパクトインデックス解決が CodeArtifact リポジトリで正しく機能していることを確認するには:

  1. 以前に RubyGems を 3.5.19 未満のバージョンに固定した場合は、ピンを削除します。

    gem update --system
  2. RubyGems と Bundler のバージョンを確認します。

    gem --version # Should be 3.5.19 or higher bundle --version # Should be 2.4.11 or higher
  3. CodeArtifact リポジトリgem installに対してテストします。

    gem install <gem-name> --source https://<domain>-<account-id>.d.codeartifact.<region>.amazonaws.com/ruby/<repo>/
  4. 詳細な出力bundle installでテストして、Compact Index が使用されていることを確認します。

    bundle install --verbose 2>&1 | grep -i "compact\|/versions\|/info"

    /info/<gem-name> ではなく、 /versionsおよび へのリクエストが表示されます/api/v1/dependencies