CodeArtifact で RubyGems と Bundler を設定して使用する - CodeArtifact

CodeArtifact で RubyGems と Bundler を設定して使用する

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

CodeArtifact で RubyGems (gem) と Bundler (bundle) を設定する

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

コンソールの手順を使用して RubyGems と Bundler を設定する

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

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

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

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

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

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

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

RubyGems と Bundler を手動で設定する

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

  1. コマンドラインで以下のコマンドを使用して、CodeArtifact 認可トークンを取得し、認可トークンを環境変数に保存します。

    • my_domain を CodeArtifact ドメイン名に置き換えます。

    • 111122223333 をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、--domain-owner を含める必要はありません。詳細については、「クロスアカウントドメイン」を参照してください。

    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
  2. Ruby の gem をリポジトリに公開するには、次のコマンドを使用して CodeArtifact リポジトリのエンドポイントを取得し、RUBYGEMS_HOST 環境変数に保存します。gem CLI はこの環境変数を使用して、gem が公開される場所を決定します。

    注記

    または、RUBYGEMS_HOST 環境変数を使用する代わりに、gem push コマンドを使用するときにリポジトリエンドポイントに --host オプションを指定することもできます。

    • my_domain を CodeArtifact ドメイン名に置き換えます。

    • 111122223333 をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、--domain-owner を含める必要はありません。詳細については、「クロスアカウントドメイン」を参照してください。

    • my_repo を 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 エンドポイントを使用してください。

  3. 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
  4. 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
  5. 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 のインストール

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

gem で Ruby gem をインストールする

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

gem を使用して CodeArtifact リポジトリから Ruby gem をインストールする方法
  1. まだ gem CLI を設定していない場合は、「CodeArtifact で RubyGems (gem) と Bundler (bundle) を設定する」の手順に従って、CodeArtifact リポジトリを使用するように適切な認証情報を使用して設定します。

    注記

    認可トークンの有効期限は 12 時間です。トークンの作成後 12 時間が経過した場合は、新しいトークンを作成する必要があります。

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

    gem install my_ruby_gem --version 1.0.0

bundle で Ruby gem をインストールする

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

bundle を使用して CodeArtifact リポジトリから Ruby gem をインストールする方法
  1. まだ bundle CLI を設定していない場合は、「CodeArtifact で RubyGems (gem) と Bundler (bundle) を設定する」の手順に従って、CodeArtifact リポジトリを使用するように適切な認証情報を使用して設定します。

    注記

    認可トークンの有効期限は 12 時間です。トークンの作成後 12 時間が経過した場合は、新しいトークンを作成する必要があります。

  2. 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'
  3. 次のコマンドを使用して、Gemfile で指定された Ruby gem をインストールします。

    bundle install

CodeArtifact への Ruby gem の公開

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

  1. まだ gem CLI を設定していない場合は、「CodeArtifact で RubyGems (gem) と Bundler (bundle) を設定する」の手順に従って、CodeArtifact リポジトリを使用するように適切な認証情報を使用して設定します。

    注記

    認可トークンの有効期限は 12 時間です。トークンの作成後 12 時間が経過した場合は、新しいトークンを作成する必要があります。

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

    gem push --key codeartifact_api_key my_ruby_gem-0.0.1.gem