window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() Amazon ECSでRailsアプリをデプロイする - The Codest
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2021-11-17
ソフトウェア開発

Amazon ECSでRailsアプリをデプロイする

The Codest

マルチン・ドリワ

Software Engineer

このチュートリアルでは、Amazon Elastic Container Service(ECS)を使ってサンプルのRailsアプリをデプロイする方法を紹介したいと思います。

を実行して作成しよう。 rails new sample-rails-app次に、基本的なコントローラアクションを生成する。 レール G コントローラ ようこそインデックス を設定し、ルートパスへのルートを`root to: welcome#index "として設定します。

我々の目標は、このウェルカムページがECSを使って展開されるのを見ることだ。

Amazon Elastic Container Registry(ECR)でリポジトリを作成する

アマゾンECR はコンテナ・レジストリだ。このレジストリを使用して、アプリのイメージを保存し、ECS上で実行できるようにする。

あなたのところへ AWS パネル探す 弾性コンテナ
レジストリ
をクリックしてください。 スタート.下の画面が表示されます:

リポジトリとAmazon Elastic Container Registry

プライベートリポジトリを作成し sample-rails-app.

リポジトリはあるが、空だ。このリポジトリにアプリの画像を入れたいのです。これが次のステップだ。

# Gemfile.lock以降にGemfileが変更された場合にエラーを投げる

RUN bundle config --global frozen 1

作業ディレクトリ /app

COPYゲムファイル Gemfile.lock ./

バンドルインストールの実行

COPY .

CMD ["rails", "server", "-b", "0.0.0.0"] .

そしてイメージを構築し、ECRのリポジトリにプッシュしよう。

その前に、`rails assets:precompile`でアセットをプリコンパイルしましょう。

作成したリポジトリにアクセスします。画面上部に プッシュコマンドを見る ボタンをクリックしてください。

私の場合(Linux)、以下のAWSの指示で実行している:

aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 212516879399.dkr.ecr.eu-central-1.amazonaws.com

docker build -t sample-rails-app .

docker tag sample-rails-app:latest 212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

docker push 212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

ユーザーにこの操作が許可されていることを確認してください。私のユーザーには、AmazonElasticContainerRegistryPowerUserポリシーを追加しました:

{
    "バージョン":"2012-10-17",
    "ステートメント":[
        {
            "Sid":"VisualEditor0"、
            "Effect":許可
            "アクション":[
                "ecr:GetRegistryPolicy"、
                "ecr:DescribeRegistry"、
                "ecr:GetAuthorizationToken"、
                "ecr:DeleteRegistryPolicy"、
                "ecr:PutRegistryPolicy"、
                "ecr:PutReplicationConfiguration"
            ],
            "リソース":"*"
        },
        {
            "Sid":"VisualEditor1"、
            "効果":許可
            "アクション":"ecr:*"、
            "リソース":"arn:aws:ecr:*:212516879399:repository/*"
        }
    ]
}

Dockerイメージは準備できた。

アプリケーション・ロードバランサーの作成

外部からアプリケーション・ロード・バランサーにだけ接続できるようにしたい。ECSクラスタ内で稼働しているコンテナにはトラフィックを渡します。

こちらへ EC2サービス -> ロードバランシング -> ロードバランサークリック ロードバランサーの作成選択 アプリケーションロードバランサー をクリックし 作成 ボタンをクリックする。

その名前を サンプル-レール-アプリ-アルブデフォルトのVPCを使用し、そのすべてのサブネットを選択します。

残されたのは セキュリティ・グループ そして リスナーとルーティング セクションを参照されたい。

セキュリティ・グループ

ロードバランサ用に新しいセキュリティグループを作成します。これはファイアウォールのように動作します。インバウンドとアウトバウンドのトラフィックのルールを設定します。インバウンドのhttpトラフィック(TCPポート80)を受け入れ、アウトバウンドのトラフィックをすべて許可します。 

これを行うには、"新しいセキュリティ・グループを作成する" リンク

セクション "基本詳細"、名前と説明を設定し、デフォルトのVPCを残す。

私の場合 - 名前: "サンプル-レール-アプリ-アルブ-SG", description:"http://www."

インバウンドルールをTypeで追加する: HTTP とソース: どこでもIPv4.アウトバウンドルールはそのままにしておく。

クリック セキュリティグループの作成そして、アプリケーションロードバランサーを作成したタブに戻り、セキュリティグループを更新して、先ほど作成したものを追加し、デフォルトのものを削除します。

リスナーとルーティング

このセクションでは、ロードバランサにトラフィックを渡す先を定義します。残す リスナー プロトコル そして ポート をクリックします。ターゲット・グループを作る" リンク

名前を"サンプル-レール-アプリ-アルブ-TG".唯一の変更はポート番号です。これはRailsアプリ用のものなので、ポート3000に渡します。次のステップ (登録ターゲット) で、ターゲット・グループを作成する。

アプリケーションロードバランサーを作成したタブに戻り、ターゲットグループをリフレッシュして、先ほど作成したものを選択する。

アプリケーション・ロード・バランサーの準備ができたので、次はECSを使ってみよう。

ECSクラスタの作成

クラスタ、タスク、タスクの定義、サービスなど、怖い用語がたくさん出てくる。もっと簡単に説明すると、クラスターはサーバー(EC2インスタンス)のグループだと考えてほしい。各インスタンスでタスクを実行するが、これはコンテナ群が一緒に実行されているに過ぎない。タスクの定義は、どのコンテナが特定のグループに入っていて、どのリソース(メモリ、CPU)を与えたいかを記述する。サービスはこれらのタスクを監視し、クラスタ内で常に適切な数の健全なタスクが実行されていることを確認する。

これを念頭に置いて、クラスターを作成しよう。

ECSのページで クラスター リンクと クラスタの作成 ボタンをクリックする。を選択する。EC2 + Linuxネットワーキング「ワン・アンド・クリック 次のステップ. 

クラスタ名を"サンプル-レール-アプリ-クラスタ".EC2のインスタンスタイプを選択する。私はFree Tierプランで利用できるt2-microを選んだ。インスタンス数は1のままにしておく。 

ネットワーク・セクションで、デフォルトのVPCを使用し、そのすべてのサブネットを選択する。createをクリックして少し待つと、新しいECS Clusterが作成された。

タスクの定義

をクリックしてください。 タスクの定義 リンクの後 新しいタスク定義の作成 ボタンをクリックします。を選択する。 EC2 オプションをクリックして 次のステップ.これから実行するアプリは非常にシンプルなので、ここで必要なのはいくつかのオプションだけだ。 

セット タスクの定義 という名前を "サンプルレールアプリ"に直行する。 コンテナの定義 セクションをクリックし容器の追加".コンテナの名前を"サンプルレールアプリ"のフォーマットで画像の場所を設定する。リポジトリ-url/image:tag".新しいブラウザのタブで、ECRにアクセスして画像URIをコピーする。私の場合は"212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest".

メモリ制限を推奨の300-500MiBに設定する。さて、一番厄介なのはポートマッピングです。

我々のアプリは、ポート3000のコンテナ内で実行される。そのため、コンテナ・ポートには3000を指定する。ホスト・ポートには0を入力する。これは基本的にランダムなポートを選択することを意味する。幸いなことに、アプリケーション・ロード・バランサーはこのポート・マッピングを知っており、トラフィックを正しく誘導することができる。この1つのインスタンスで複数のタスクを実行することもできる。 

環境変数を追加する RAILS_ENV に設定する。 生産.

をクリックする。 追加 をクリックしてコンテナ定義を追加し 作成 をクリックして、タスク定義のセットアップを終了します。

サービス

クラスタ、ロードバランサー、タスク定義ができた。あとは、これらのタスクをクラスター内でどうにか実行しなければならない。これがサービスの仕事だ。新しく作成したクラスタに行き サービス タブをクリックし 作成 ボタンをクリックする。 

起動タイプをEC2に設定し、名前を"サンプル-レール-アプリ-サービス".タスク数を1に設定し 次のステップ.このページで、Application Load Balancer のラジオボタンを選択し、既存の IAM ロールを選択します。Container to load balance "セクションで、正しいコンテナ "sample-rails-app:0:3000 "を入力し、"Add to load balancer "をクリックします。

プロダクション・リスナー・ポート」には、80:HTTPを選択する。サンプル-レール-アプリ-アルブ-TG「をクリックする。 次のステップ.去る オートスケーリング をクリックします。 次のステップ そして クリエイト・サービス.

ECSセキュリティ・グループの更新

作成したクラスタのページで タスク タブには、1つのタスクが実行されているはずです。サービスが開始した。EC2のサービスページに行き、ロードバランサーをクリックして、アプリケーションロードバランサーの詳細を見る。そこにDNS名があるはずだ。それをコピーしてブラウザで開く。アプリが表示されるはずだ。残念ながら、"504 ゲートウェイのタイムアウト「エラー。 

問題はクラスタのセキュリティグループにあります。そのインバウンドルールがロードバランサーからのトラフィックを許可していない。これを修正するには、EC2パネルに戻って セキュリティ・グループ のリンクをクリックします。クラスタ作成プロセスで作成された新しいグループがあります。グループ名は"EC2ContainerService-sample-rails-app-cluster".それをクリックし、インバウンドルールを編集します。VPCからのトラフィックを許可したいので、Amazon VPCパネルに行き、VPCのIPv4 CIDRを確認します。ルールタイプを"すべての交通"とソースに IPv4 CIDR を指定します。このルールを保存して、バランサーのDNS名をロードしてみてください。 

願わくば、私と同じように見てほしい。

続きを読む

GraphQL Ruby。パフォーマンスについては?

レールおよびその他の輸送手段

TMUX、Vim、Fzf + RipgrepによるRails開発

関連記事

ソフトウェア開発

将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察

The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...

ザ・コデスト
ソフトウェア開発

ラトビアを拠点とするソフトウェア開発企業トップ10社

ラトビアのトップソフトウェア開発企業とその革新的なソリューションについて、最新記事でご紹介します。ラトビアの技術リーダーたちがあなたのビジネスをどのように向上させるかをご覧ください。

thecodest
エンタープライズ&スケールアップ・ソリューション

Javaソフトウェア開発の要点:アウトソーシングを成功させるためのガイド

outsourcingのJavaソフトウェア開発を成功させるために不可欠なこのガイドを読んで、The Codestで効率性を高め、専門知識にアクセスし、プロジェクトを成功に導きましょう。

thecodest
ソフトウェア開発

ポーランドにおけるアウトソーシングの究極ガイド

ポーランドのoutsourcingの急増は、経済、教育、技術の進歩がITの成長とビジネス・フレンドリーな環境を促進していることによる。

ザ・コデスト
エンタープライズ&スケールアップ・ソリューション

IT監査ツール&テクニック完全ガイド

IT監査は、安全かつ効率的で、コンプライアンスに準拠したシステムを保証します。その重要性については、記事全文をお読みください。

The Codest
ヤクブ・ヤクボヴィッチ CTO & 共同創設者

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese