

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CodeArtifact를 Ruby와 함께 사용
<a name="using-ruby"></a>

다음 항목에서는 RubyGems 및 Bundler 도구를 CodeArtifact와 함께 사용하여 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을 게시하고 사용할 수 있습니다.

## 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. 아직 구성하지 않았다면 [CodeArtifact로 RubyGems(`gem`) 및 Bundler(`bundle`) 구성](#configure-ruby-gem)의 단계에 따라 적절한 자격 증명과 함께 CodeArtifact 리포지토리를 사용하도록 `gem` CLI를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 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. 아직 구성하지 않았다면 [CodeArtifact로 RubyGems(`gem`) 및 Bundler(`bundle`) 구성](#configure-ruby-gem)의 단계에 따라 적절한 자격 증명과 함께 CodeArtifact 리포지토리를 사용하도록 `bundle` CLI를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 12시간 동안 유효합니다. 토큰이 생성된 후 12시간이 경과한 경우 새 토큰을 생성해야 합니다.

1. CodeArtifact 리포지토리 엔드포인트 URL을 `Gemfile`에 `source`로 추가하여 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. 아직 구성하지 않았다면 [CodeArtifact로 RubyGems(`gem`) 및 Bundler(`bundle`) 구성](#configure-ruby-gem)의 단계에 따라 적절한 자격 증명과 함께 CodeArtifact 리포지토리를 사용하도록 `gem` CLI를 구성합니다.
**참고**  
생성된 권한 부여 토큰은 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 버전에서는 Bundler가 전체 인덱스 `specs.4.8.gz`를 쿼리하기로 결정하기 전에 Gemfile에 정의할 수 있는 종속성이 500개로 제한됩니다. CodeArtifact는 전체 인덱스를 지원하지 않으므로 2.4.11보다 낮은 Bundler 버전을 사용할 경우 500개 이상의 종속성을 지정하면 CodeArtifact에서 작동하지 않습니다.

CodeArtifact를 사용하여 Gemfile에서 500개 이상의 종속성을 정의하려면 Bundler를 버전 2.4.11 이상으로 업데이트합니다.

### Bundler 작업 지원
<a name="ruby-bundler-operations-support"></a>

RubyGems에 대한 CodeArtifact의 지원에는 Bundler Compact Index API가 포함되지 않습니다(`/versions` API는 지원되지 않음). CodeArtifact는 종속성 API만 지원합니다.

또한 CodeArtifact는 `specs.4.8.gz`와 같은 다양한 사양의 API를 지원하지 않습니다.