Elastic Beanstalk Ruby プラットフォームを使用する - AWS Elastic Beanstalk

Elastic Beanstalk Ruby プラットフォームを使用する

AWS Elastic Beanstalk Ruby プラットフォームは、Puma アプリケーションサーバーの下にある nginx プロキシサーバーの背後で実行できる Ruby ウェブアプリケーションの一連の環境設定です。各プラットフォームブランチは Ruby のバージョンに対応しています。

RubyGems を使用すると、デプロイの間にパッケージをインストールするために出典バンドルに Gemfile ファイルを含めることができます。

アプリケーションは、Passenger など、別のアプリケーションサーバーで実行される場合があります。Procfile を使用して別のアプリケーションサーバーをスタートし、Gemfile を使用してインストールできます。詳細については、「[Procfile] でアプリケーションプロセスを設定します」を参照してください。

注記

Amazon Linux AMI Ruby プラットフォームブランチ (Amazon Linux 2 以前) を使用している場合、Elastic Beanstalk では Puma と Passenger の 2 つのブランチが提供されることに注意してください。アプリケーションに Passenger アプリケーションサーバーが必要な場合は、適切な Passanger プラットフォームブランチを使用できます。追加の設定は必要ありません。

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

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

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

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

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

Ruby 環境の設定

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

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

  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

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

  4. [ソフトウェア] 設定カテゴリで、[編集] を選択します。

ログオプション

[ログオプション] セクションには、2 つの設定があります。

  • [Instance profile] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。

  • Enable log file rotation to Amazon S3 (Amazon S3 へのログファイルのローテーションの有効化) – アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

静的ファイル

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

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「静的ファイルの提供」を参照してください。

デフォルトでは、Ruby 環境のプロキシサーバーは次のように静的ファイルを供するように設定されています。

  • publicフォルダ内のファイルは、/publicパスとドメインルート (/パス)から供されます。

  • public/assetsサブフォルダ内のファイルは、/assetsパスです。

以下の例では、デフォルトの設定作業のしくみを示しています。

  • たとえば、アプリケーションの出典に public という名前のフォルダの logo.png というファイルが含まれている場合、プロキシサーバーは subdomain.elasticbeanstalk.com/public/logo.pngsubdomain.elasticbeanstalk.com/logo.png からそれをユーザーに提供します。

  • たとえば、アプリケーションの出典に public のフォルダ内のassets という名前のフォルダに logo.png というファイルが含まれている場合、プロキシサーバーは subdomain.elasticbeanstalk.com/assets/logo.png でそれをユーザーに提供します。

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

注記

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

環境プロパティ

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

Ruby プラットフォームでは、環境設定用に次のプロパティを定義します。

  • [BUNDLE_WITHOUT]Gemfile から依存関係をインストールするときに無視するグループの、コロン区切りのリストです。

  • BUNDLER_DEPLOYMENT_MODEtrue (デフォルト) に設定すると、Bundler を使用してデプロイ・モードで依存関係がインストールされます。開発モードで bundle install を実行するには、 false に設定します。

    注記

    この環境プロパティは、Amazon Linux AMI Ruby プラットフォームブランチ (Amazon Linux 2 以前) では定義されていません。

  • [RAILS_SKIP_ASSET_COMPILATION] – デプロイの間に、rake assets:precompile の実行をスキップするには true に設定します。

  • [RAILS_SKIP_MIGRATIONS] – デプロイの間に、rake db:migrate の実行をスキップするには true に設定します。

  • [RACK_ENV] – Rack の環境ステージを指定します。たとえば、developmentproduction、または test などです。

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

endpoint = ENV['API_ENDPOINT']

詳細については、「環境プロパティとその他のソフトウェアの設定」を参照してください。

Ruby 設定の名前空間

設定ファイルを使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、Elastic Beanstalk サービスまたは使用できるプラットフォームで定義し、名前空間に整理できます。

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

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

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

例 .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 詳細については、「設定オプション」を参照してください。