

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過 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`) 將 Gem 發佈至 AWS CodeArtifact 或取用 Gem，您必須先使用 CodeArtifact 儲存庫資訊來設定 Gem 套件，包括存取它的登入資料。請依照下列其中一個程序的步驟，使用 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 授權字符，並將其存放在 環境變數中。
   + 以您的 CodeArtifact 網域名稱取代 *my\$1domain*。
   + 以網域擁有者 AWS 的帳戶 ID 取代 *111122223333*。如果您要存取您擁有之網域中的儲存庫，則不需要包含 `--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 （使用預設命令 shell)：

     ```
     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 的發佈位置。
**注意**  
或者，您可以使用 `gem push`命令為儲存庫端點提供 `--host`選項，而不是使用 `RUBYGEMS_HOST`環境變數。
   + 將 *my\$1domain* 取代為您的 CodeArtifact 網域名稱。
   + 以網域擁有者 AWS 的帳戶 ID 取代 *111122223333*。如果您要存取您擁有之網域中的儲存庫，則不需要包含 `--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 （使用預設命令 shell)：

     ```
     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 （使用預設命令 shell)：

     ```
     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`檔案。您必須新增至 的 CodeArtifact 資訊`.gemrc`是儲存庫端點和身分驗證字符的組合。其格式如下：

   ```
   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 （使用預設命令 shell)：

     ```
     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 （使用預設命令 shell)：

     ```
     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`或 CLI 工具從 CodeArtifact `bundle` 儲存庫安裝 Ruby Gem。

### 使用 安裝 Ruby Gem 套件 `gem`
<a name="install-ruby-gems-gem"></a>

您可以使用 RubyGems (`gem`) CLI，從 CodeArtifact 儲存庫快速安裝特定版本的 Ruby Gem。

**使用 從 CodeArtifact 儲存庫安裝 Ruby Gem `gem`**

1. 如果您尚未執行，請依照中的步驟[使用 CodeArtifact 設定 RubyGems (`gem`) 和 Bundler (`bundle`)](#configure-ruby-gem)設定 `gem` CLI，以使用具有適當登入資料的 CodeArtifact 儲存庫。
**注意**  
產生的授權字符有效期為 12 小時。如果自建立權杖後已經過 12 小時，您將需要建立新的權杖。

1. 使用以下命令從 CodeArtifact 安裝 Ruby Gem：

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

### 使用 安裝 Ruby Gem 套件 `bundle`
<a name="install-ruby-gems-bundle"></a>

您可以使用 Bundler (`bundle`) CLI 安裝在 中設定的 Ruby Gem`Gemfile`。

**使用 從 CodeArtifact 儲存庫安裝 Ruby Gem `bundle`**

1. 如果您尚未執行，請依照 中的步驟[使用 CodeArtifact 設定 RubyGems (`gem`) 和 Bundler (`bundle`)](#configure-ruby-gem)設定 `bundle` CLI，以使用具有適當登入資料的 CodeArtifact 儲存庫。
**注意**  
產生的授權字符有效期為 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. 使用下列命令來安裝 Ruby Gem 套件，如 中所指定`Gemfile`：

   ```
   bundle install
   ```

## 將 Ruby Gem 套件發佈至 CodeArtifact
<a name="publish-ruby-gems-gem"></a>

使用下列程序，使用 CLI 將 Ruby Gem 套件發佈至 CodeArtifact `gem` 儲存庫。

1. 如果您尚未執行，請依照中的步驟[使用 CodeArtifact 設定 RubyGems (`gem`) 和 Bundler (`bundle`)](#configure-ruby-gem)設定 `gem` CLI，以使用具有適當登入資料的 CodeArtifact 儲存庫。
**注意**  
產生的授權字符有效期為 12 小時。如果自建立權杖後已經過 12 小時，您將需要建立新的權杖。

1. 使用下列命令將 Ruby Gem 套件發佈至 CodeArtifact 儲存庫。請注意，如果您未設定`RUBYGEMS_HOST`環境變數，則必須在 `--host`選項中提供 CodeArtifact 儲存庫端點。

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