

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

# Ruby で CodeArtifact を使用する
<a name="using-ruby"></a>

これらのトピックでは、CodeArtifact で RubyGems と Bundler ツールを使用して Ruby の gem をインストールして公開する方法について説明します。

**注記**  
CodeArtifact では Ruby 3.3 以降の使用が推奨されます。Ruby 2.6 以前では動作しません。

**Topics**
+ [RubyGems と Bundler を設定して使用する](configure-use-rubygems-bundler.md)
+ [RubyGems コマンドのサポート](ruby-command-support.md)
+ [Bundler の互換性](bundler-compatibility.md)

# CodeArtifact で RubyGems と Bundler を設定して使用する
<a name="configure-use-rubygems-bundler"></a>

CodeArtifact でリポジトリを作成したら、RubyGems (`gem`) と Bundler (`bundle`) を使用して gem をインストールして公開できます。このトピックでは、CodeArtifact リポジトリの認証と使用のためにパッケージマネージャーを設定する方法について説明します。

## CodeArtifact で RubyGems (`gem`) と Bundler (`bundle`) を設定する
<a name="configure-ruby-gem"></a>

RubyGems (`gem`) または Bundler (`bundle`) を使用して AWS CodeArtifact に gem を公開したり、CodeArtifact から gem を使用したりするには、まず CodeArtifact リポジトリ情報を使用して設定する必要があります。これには、アクセスするための認証情報が含まれます。次のいずれかの手順に沿って、CodeArtifact リポジトリのエンドポイント情報と認証情報を使用して `gem` および `bundle` CLI ツールを設定します。

### コンソールの手順を使用して RubyGems と Bundler を設定する
<a name="configure-ruby-gem-console"></a>

コンソールの設定手順を使用して、Ruby パッケージマネージャーを CodeArtifact リポジトリに接続できます。コンソールの手順にはカスタムコマンドが用意されており、CodeArtifact 情報を検索して入力することなく、パッケージマネージャーをセットアップできます。

1. [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home) で AWS CodeArtifact コンソールを開きます。

1. ナビゲーションペインで、**[リポジトリ]** をクリックし、Ruby の gem のインストールまたはプッシュに使用するリポジトリの名前を選択します。

1. **[接続手順の表示]** を選択します。

1. オペレーティングシステムを選択します。

1. CodeArtifact リポジトリで設定する Ruby パッケージマネージャークライアントを選択します。

1. 生成された手順に従って、Ruby gem をリポジトリからインストールするか、Ruby Gem をリポジトリに公開するようにパッケージマネージャークライアントを設定します。

### RubyGems と Bundler を手動で設定する
<a name="configure-ruby-gem-manual"></a>

コンソールの設定手順を使用できない場合、または使用しない場合は、次の手順を使用して、手動で Ruby パッケージマネージャーを CodeArtifact リポジトリに接続できます。

1. コマンドラインで以下のコマンドを使用して、CodeArtifact 認可トークンを取得し、認可トークンを環境変数に保存します。
   + *my\$1domain* を CodeArtifact ドメイン名に置き換えます。
   + *111122223333* をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。

------
#### [ macOS and Linux ]

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     for /f %i in ('aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
     ```
   + Windows PowerShell：

     ```
     $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text
     ```

------

1. Ruby の gem をリポジトリに公開するには、次のコマンドを使用して CodeArtifact リポジトリのエンドポイントを取得し、`RUBYGEMS_HOST` 環境変数に保存します。`gem` CLI はこの環境変数を使用して、gem が公開される場所を決定します。
**注記**  
または、`RUBYGEMS_HOST` 環境変数を使用する代わりに、`gem push` コマンドを使用するときにリポジトリエンドポイントに `--host` オプションを指定することもできます。
   + *my\$1domain* を CodeArtifact ドメイン名に置き換えます。
   + *111122223333* をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + *my\$1repo* を CodeArtifact リポジトリ名で置き換えます。

------
#### [ macOS and Linux ]

   ```
   export RUBYGEMS_HOST=`aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text | sed 's:/*$::'`
   ```

------
#### [ Windows ]

   次のコマンドは、リポジトリエンドポイントを取得し、末尾の `/` をトリミングして、環境変数に保存します。
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     for /f %i in ('aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text') do set RUBYGEMS_HOST=%i
                                     
     set RUBYGEMS_HOST=%RUBYGEMS_HOST:~0,-1%
     ```
   + Windows PowerShell：

     ```
     $env:RUBYGEMS_HOST = (aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text).TrimEnd("/")
     ```

------

   次の URL は、リポジトリエンドポイントの例です。

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
   ```
**注記**  
デュアルスタックエンドポイントを使用するには、`codeartifact.region.on.aws` エンドポイントを使用してください。

1. Ruby の gem をリポジトリに公開するには、`~/.gem/credentials` ファイルを編集して認証トークンを含めることで、RubyGems で CodeArtifact を認証する必要があります。`~/.gem/` ディレクトリまたは `~/.gem/credentials` ファイルが存在しない場合は、ディレクトリとファイルを作成します。

------
#### [ macOS and Linux ]

   ```
   echo ":codeartifact_api_key: Bearer $CODEARTIFACT_AUTH_TOKEN" >> ~/.gem/credentials
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     echo :codeartifact_api_key: Bearer %CODEARTIFACT_AUTH_TOKEN% >> %USERPROFILE%/.gem/credentials
     ```
   + Windows PowerShell：

     ```
     echo ":codeartifact_api_key: Bearer $env:CODEARTIFACT_AUTH_TOKEN" | Add-Content ~/.gem/credentials
     ```

------

1. `gem` を使用してリポジトリから Ruby gem をインストールするには、リポジトリエンドポイント情報と認証トークンを `.gemrc` ファイルに追加する必要があります。グローバルファイル (`~/.gemrc`) またはプロジェクト `.gemrc` ファイルに追加できます。`.gemrc` に追加する必要がある CodeArtifact 情報は、リポジトリエンドポイントと認証トークンの組み合わせです。形式は次のとおりです。

   ```
   https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
   ```
   + 認証トークンには、前のステップで設定した `CODEARTIFACT_AUTH_TOKEN` 環境変数を使用できます。
   + リポジトリエンドポイントを取得するには、前もって設定した `RUBYGEMS_HOST` 環境変数の値を読み取るか、次の `get-repository-endpoint` コマンドを使用し、必要に応じて値を置き換えます。

     ```
     aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text
     ```

   エンドポイントを取得したら、テキストエディタを使用して適切な位置に `aws:${CODEARTIFACT_AUTH_TOKEN}@` を追加します。リポジトリエンドポイントと認証トークンの文字列を作成したら、次のように `echo` コマンドを使用して `.gemrc` ファイルの `:sources:` セクションに追加します。
**警告**  
CodeArtifact は、`gem sources -add` コマンドを使用したソースとしてのリポジトリの追加をサポートしていません。ソースはファイルに直接追加する必要があります。

------
#### [ macOS and Linux ]

   ```
   echo ":sources:
       - https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" > ~/.gemrc
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     echo ":sources:
         - https://aws:%CODEARTIFACT_AUTH_TOKEN%@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" > "%USERPROFILE%\.gemrc"
     ```
   + Windows PowerShell：

     ```
     echo ":sources:
         - https://aws:$env:CODEARTIFACT_AUTH_TOKEN@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" | Add-Content ~/.gemrc
     ```

------

1. Bundler を使用するには、次の `bundle config` コマンドを実行し、リポジトリエンドポイント URL と認証トークンを使用して Bundler を設定する必要があります。

------
#### [ macOS and Linux ]

   ```
   bundle config $RUBYGEMS_HOST aws:$CODEARTIFACT_AUTH_TOKEN 
   ```

------
#### [ Windows ]
   + Windows (デフォルトのコマンドシェルを使用):

     ```
     bundle config %RUBYGEMS_HOST% aws:%CODEARTIFACT_AUTH_TOKEN%
     ```
   + Windows PowerShell：

     ```
     bundle config $Env:RUBYGEMS_HOST aws:$Env:CODEARTIFACT_AUTH_TOKEN
     ```

------

CodeArtifact リポジトリで設定した RubyGems (`gem`) と Bundler (`bundle`) を使用して Ruby の gem を公開し、そこから gem を使用できます。

## CodeArtifact からの Ruby gem のインストール
<a name="install-ruby-gems"></a>

`gem` または `bundle` CLI ツールを使用して CodeArtifact リポジトリから Ruby の gem をインストールするには、次の手順に従います。

### `gem` で Ruby gem をインストールする
<a name="install-ruby-gems-gem"></a>

RubyGems (`gem`) CLI を使用すると、CodeArtifact リポジトリから特定のバージョンの Ruby gem をすばやくインストールできます。

**`gem` を使用して CodeArtifact リポジトリから Ruby gem をインストールする方法**

1. まだ `gem` CLI を設定していない場合は、「[CodeArtifact で RubyGems (`gem`) と Bundler (`bundle`) を設定する](#configure-ruby-gem)」の手順に従って、CodeArtifact リポジトリを使用するように適切な認証情報を使用して設定します。
**注記**  
認可トークンの有効期限は 12 時間です。トークンの作成後 12 時間が経過した場合は、新しいトークンを作成する必要があります。

1. 次のコマンドを使用して、CodeArtifact から Ruby gem をインストールします。

   ```
   gem install my_ruby_gem --version 1.0.0
   ```

### `bundle` で Ruby gem をインストールする
<a name="install-ruby-gems-bundle"></a>

Bundler (`bundle`) CLI を使用して、`Gemfile` で設定された Ruby gem をインストールできます。

**`bundle` を使用して CodeArtifact リポジトリから Ruby gem をインストールする方法**

1. まだ `bundle` CLI を設定していない場合は、「[CodeArtifact で RubyGems (`gem`) と Bundler (`bundle`) を設定する](#configure-ruby-gem)」の手順に従って、CodeArtifact リポジトリを使用するように適切な認証情報を使用して設定します。
**注記**  
認可トークンの有効期限は 12 時間です。トークンの作成後 12 時間が経過した場合は、新しいトークンを作成する必要があります。

1. CodeArtifact リポジトリエンドポイント URL を `source` として `Gemfile` に追加し、CodeArtifact リポジトリとそのアップストリームから設定済みの Ruby gem をインストールします。

   ```
   source "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/"
                   
   gem 'my_ruby_gem'
   ```

1. 次のコマンドを使用して、`Gemfile` で指定された Ruby gem をインストールします。

   ```
   bundle install
   ```

## CodeArtifact への Ruby gem の公開
<a name="publish-ruby-gems-gem"></a>

`gem` CLI を使用して Ruby の gem を CodeArtifact リポジトリに公開するには、次の手順に従います。

1. まだ `gem` CLI を設定していない場合は、「[CodeArtifact で RubyGems (`gem`) と Bundler (`bundle`) を設定する](#configure-ruby-gem)」の手順に従って、CodeArtifact リポジトリを使用するように適切な認証情報を使用して設定します。
**注記**  
認可トークンの有効期限は 12 時間です。トークンの作成後 12 時間が経過した場合は、新しいトークンを作成する必要があります。

1. 次のコマンドを使用して、Ruby の gem を CodeArtifact リポジトリに公開します。`RUBYGEMS_HOST` 環境変数を設定していない場合は、`--host` オプションで CodeArtifact リポジトリエンドポイントを指定する必要があります。

   ```
   gem push --key codeartifact_api_key my_ruby_gem-0.0.1.gem
   ```

# RubyGems コマンドのサポート
<a name="ruby-command-support"></a>

CodeArtifact は、`gem install` コマンドと `gem push` コマンドをサポートしています。CodeArtifact は、次の `gem` コマンドをサポートしていません。
+ `gem fetch`
+ `gem info --remote`
+ `gem list --remote`
+ `gem mirror`
+ `gem outdated`
+ `gem owner`
+ `gem query`
+ `gem search`
+ `gem signin`
+ `gem signout`
+ `gem sources --add`
+ `gem sources --update`
+ `gem specification --remote`
+ `gem update`
+ `gem yank`

# Bundler の互換性
<a name="bundler-compatibility"></a>

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

## Bundler の互換性
<a name="ruby-bundler-support"></a>

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

### Bundler バージョンのサポート
<a name="ruby-bundler-version-support"></a>

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 オペレーションのサポート
<a name="ruby-bundler-operations-support"></a>

CodeArtifact による RubyGems のサポートに Bundler Compact Index API は含まれません (`/versions` API はサポートされていません)。CodeArtifact は Dependencies API のみをサポートします。

また、CodeArtifact は各種仕様 API (`specs.4.8.gz`) をサポートしていません。