

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

# Elastic Beanstalk Ruby プラットフォームを使用する
<a name="create_deploy_Ruby.container"></a>

このトピックでは、Elastic Beanstalk で Ruby アプリケーションを設定、ビルド、実行する方法について説明します。

AWS Elastic Beanstalk は、Ruby プログラミング言語のさまざまなバージョンで多数のプラットフォームブランチをサポートしています。完全なリストについては、「AWS Elastic Beanstalk プラットフォーム」ドキュメントの「[Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.ruby)」を参照してください。

Ruby ウェブアプリケーションは、Puma アプリケーションサーバーの NGINX プロキシサーバーの背後で実行できます。RubyGems を使用すると、デプロイの間にパッケージをインストールするためにソースバンドルに [`Gemfile`](ruby-platform-gemfile.md) を含めることができます。

**アプリケーションサーバーの設定**  
Elastic Beanstalk は、環境を作成するときに選択した Ruby プラットフォームブランチに基づいて Puma アプリケーションサーバーをインストールします。Ruby プラットフォームのバージョンに付属するコンポーネントの詳細については、「*AWS Elastic Beanstalk プラットフォーム*」ガイドの「[サポートされているプラットフォーム](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.ruby)」を参照してください。

独自に用意された Puma サーバーでアプリケーションを設定できます。これにより、Ruby プラットフォームブランチにあらかじめインストールされているバージョン以外のバージョンの Puma を使用するオプションが提供されます。Passenger などの別のアプリケーションサーバーを使用するようにアプリケーションを設定することもできます。そのためには、デプロイで `Gemfile` をインクルードしてカスタマイズする必要があります。また、アプリケーションサーバーを起動するように `Procfile` を設定する必要もあります。詳細については、「*[Procfile でアプリケーションプロセスを設定する](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ruby-platform-procfile.html)*」を参照してください*。*

**その他の設定オプション**  
Elastic Beanstalk には、Elastic Beanstalk 環境内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行されるソフトウェアをカスタマイズするために使用できる[設定オプション](command-options.md)が用意されています。アプリケーションに必要な環境変数を設定し、Amazon S3 に対してログのローテーションを有効にしたら、アプリケーションの出典で静的ファイルが含まれるフォルダを、プロキシサーバーによって提供されるパスにマッピングできます。プラットフォームでは、Rails および Rack の検出と使用を容易にすることに関連していくつかの一般的な環境可変数を事前に定義します。

設定オプションは[実行中の環境の設定を変更するために](environment-configuration-methods-after.md) Elastic Beanstalk コンソールで利用できます。環境を終了したときにその設定が失われないようにするため、[保存済み設定](environment-configuration-savedconfig.md)を使用して設定を保存し、それを後で他の環境に適用することができます。

ソースコードの設定を保存する場合、[設定ファイル](ebextensions.md)を含めることができます。設定ファイルの設定は、環境を作成するたびに、またはアプリケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイの間にパッケージをインストールしたり、スクリプトを実行したり、他のインスタンスのカスタマイズオペレーションを実行することもできます。

Elastic Beanstalk コンソールで適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「[設定オプション](command-options.md)」を参照してください。

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、「[Elastic Beanstalk Linux プラットフォームの拡張](platforms-linux-extend.md)」を参照してください。

## Ruby 環境の設定
<a name="create-deploy_Ruby.container.CON"></a>

Elastic Beanstalk コンソールを使用して、Amazon S3 へのログローテーションを有効にし、アプリケーションが環境から読むことができる変数を設定することができます。

**お客様の環境のソフトウェア構成設定にアクセスするには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. **[更新、モニタリング、ログ]** の設定カテゴリで、**[編集]** を選択します。

### ログオプション
<a name="create_deploy_Ruby.container.console.logoptions"></a>

[**ログオプション**] セクションには、2 つの設定があります。
+ [**Instance profile**] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。
+ **[Enable log file rotation to Amazon S3]** (Amazon S3 へのログファイルのローテーションの有効化) - アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

### 静的ファイル
<a name="create_deploy_Ruby.container.console.staticfiles"></a>

パフォーマンスを向上させるために、**[Static files]** (静的ファイル) セクションを使用して、ウェブアプリケーション内のディレクトリセットから静的ファイル (HTML、イメージなど) を配信するようにプロキシサーバーを設定することができます。ディレクトリごとに、仮想パスをディレクトリマッピングに設定します。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接　　処理します。

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「[静的ファイルの提供](environment-cfg-staticfiles.md)」を参照してください。

デフォルトでは、Ruby 環境のプロキシサーバーは次のように静的ファイルを供するように設定されています。
+ `public`フォルダ内のファイルは、`/public`パスとドメインルート (`/`パス)から供されます。
+ `public/assets`サブフォルダ内のファイルは、`/assets`パスです。

以下の例では、デフォルトの設定作業のしくみを示しています。
+ たとえば、アプリケーションの出典に `public` という名前のフォルダの `logo.png` というファイルが含まれている場合、プロキシサーバーは `subdomain.elasticbeanstalk.com/public/logo.png`と`subdomain.elasticbeanstalk.com/logo.png` からそれをユーザーに提供します。
+ たとえば、アプリケーションの出典に `public` のフォルダ内の`assets` という名前のフォルダに `logo.png` というファイルが含まれている場合、プロキシサーバーは `subdomain.elasticbeanstalk.com/assets/logo.png` でそれをユーザーに提供します。

静的ファイルに追加のマッピングを設定することができます。詳細については、このトピックで後述する「[Ruby 設定の名前空間](#ruby-namespaces)」を参照してください。

**注記**  
より前のプラットフォームバージョン用*Ruby 2.7 AL2 バージョン 3.3.7*のデフォルトの Elastic Beanstalk nginx プロキシサーバー設定は、ドメインルートからの静的ファイルの提供を support していません (`subdomain.elasticbeanstalk.com/`)。このプラットフォーム版は2021年10月21日にリリースされました。詳細については、「」を参照してください。[新しいプラットフォームのバージョン-Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2021-10-21-linux.html#release-2021-10-21-linux.platforms.ruby)の*AWS Elastic Beanstalk リリースノート*。

### 環境プロパティ
<a name="create_deploy_Ruby.env.console.ruby.envprops"></a>

**環境プロパティ** セクションでは、アプリケーションを実行している Amazon EC2 インスタンスの環境設定を指定できます。環境プロパティは、キーバリューのペアでアプリケーションに渡されます。

Ruby プラットフォームでは、環境設定用に次のプロパティを定義します。
+  **[BUNDLE\$1WITHOUT]** – [Gemfile](http://bundler.io/v1.15/man/gemfile.5.html) から[依存関係をインストール](http://bundler.io/bundle_install.html)するときに無視するグループの、コロン区切りのリストです。
+ **BUNDLER\$1DEPLOYMENT\$1MODE** – `true` (デフォルト) に設定すると、Bundler を使用して[デプロイ・モード](https://bundler.io/man/bundle-install.1.html#DEPLOYMENT-MODE)で依存関係がインストールされます。開発モードで `bundle install` を実行するには、 `false` に設定します。
**注記**  
この環境プロパティは、Amazon Linux AMI Ruby プラットフォームブランチ (Amazon Linux 2 以前) では定義されていません。
+  [**RAILS\$1SKIP\$1ASSET\$1COMPILATION**] – デプロイの間に、[http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets](http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets) の実行をスキップするには `true` に設定します。
+  [**RAILS\$1SKIP\$1MIGRATIONS**] – デプロイの間に、[http://guides.rubyonrails.org/active_record_migrations.html#running-migrations](http://guides.rubyonrails.org/active_record_migrations.html#running-migrations) の実行をスキップするには `true` に設定します。
+  [**RACK\$1ENV**] – Rack の環境ステージを指定します。例えば、`development`、`production`、または `test` です。

Elastic Beanstalk で実行される Ruby 環境内では、`ENV` オブジェクトを使用して環境変数にアクセスできます。たとえば、次のコードを使用して可変数に `API_ENDPOINT` という名前のプロパティを読み取ることができます。

```
endpoint = ENV['API_ENDPOINT']
```

詳細については、「[環境変数とその他のソフトウェアの設定](environments-cfg-softwaresettings.md)」を参照してください。

## Ruby 設定の名前空間
<a name="ruby-namespaces"></a>

[設定ファイル](ebextensions.md)を使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、[プラットフォーム固有](command-options-specific.md)のものでも、Elastic Beanstalk サービス全体の[すべてのプラットフォーム](command-options-general.md)に適用できるものでもかまいません。設定オプションは、名前空間として整理されています。

`aws:elasticbeanstalk:environment:proxy:staticfiles` 名前空間を使用して、静的ファイルを配信する環境プロキシを設定できます。アプリケーションディレクトリへの仮想パスのマッピングを定義します。

Ruby プラットフォームでは、プラットフォーム固有の名前空間を定義しません。代わりに、一般的な Rails および Rack オプションの環境プロパティを定義します。

次の設定ファイルは、`staticimages` という名前のディレクトリをパス `/images` にマップして、プラットフォーム定義の各環境プロパティを設定し、`LOGGING` という名前の追加の環境プロパティを設定する静的ファイルオプションを指定します。

**Example .ebextensions/ruby-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /images: staticimages
  aws:elasticbeanstalk:application:environment:
    BUNDLE_WITHOUT: test
    BUNDLER_DEPLOYMENT_MODE: true
    RACK_ENV: development
    RAILS_SKIP_ASSET_COMPILATION: true
    RAILS_SKIP_MIGRATIONS: true
    LOGGING: debug
```

**注記**  
`BUNDLER_DEPLOYMENT_MODE` 環境プロパティと `aws:elasticbeanstalk:environment:proxy:staticfiles` 名前空間は、Amazon Linux AMI Ruby プラットフォームブランチ (Amazon Linux 2 以前) では定義されていません。

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または を使用して、設定オプションを指定することもできます AWS CLI詳細については「[設定オプション](command-options.md)」を参照してください。