

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

# 透過 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：//[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\_domain}} 取代為您的 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 （使用預設命令 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`環境變數中。CLI `gem` 使用此環境變數來判斷 Gem 套件的發佈位置。
**注意**  
或者，您可以使用 `gem push`命令為儲存庫端點提供 `--host`選項，而不是使用 `RUBYGEMS_HOST`環境變數。
   + 將 {{my\_domain}} 取代為您的 CodeArtifact 網域名稱。
   + 將 {{111122223333}} 取代為網域擁有者 AWS 的帳戶 ID。如果您在擁有的網域中存取儲存庫，則不需要包含 `--domain-owner`。如需詳細資訊，請參閱[跨帳戶網域](domain-overview.md#domain-overview-cross-account)。
   + 將 {{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 （使用預設命令 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}}
   ```