skillup

技術ブログ

サーバー・ネットワーク

ECSについて

投稿日:

AWSでwebアプリを立ち上げる場合、基本的にはEC2+RDS(小規模な場合は使わないケースもあるかも・・)+アルファの構成が多いと思うのですが、Dockerでコンテナイメージをもっていれば、コンテナを直接起動させることができます。

AWSですとAmazon Elastic Container Service (通称ECS)というサービスがそれに該当します。

ある方とインフラの話をしていた時に、ある程度セキュリティレベルを高くしたいので、サーバー自体に入らせない仕組みが必要・・みたいなことをおっしゃっててその仕組みの1つですね。

よく考えるとherokuで運用していたアプリがありましたが、サーバーにログインして何かしたことはないですね・・DBにつないで、ということはあったのですが、これもマイグレーションなどで行うのが正しい方法かと思われます。

注意点としてはDockerfileだけをプッシュしますのでdocker-composeの設定を反映させるにはしっかりと内容を理解しているor後述するecs-cliを使う必要があります。

ECSについて

概念やイメージがわかりにくいものが多かったですね。(今でも正直あんまりわかっていませんが・・汗)

大きく分けるとタスク、サービス、コンテナの3つのグループがあるのですが、ざっくり下記のような認識をしています。

タスク・・ECSの最小単位。

サービス・・タスク群の上位グループ。フロント単位、バックのAPI単位など

クラスター・・インスタンスのグループ

Amazon EC2 Container Service(ECS)の概念整理

AWS ECS 10分チュートリアルでふんわりFargate入門

Amazon ECS(EC2)を試す小さなサンプルメモ

実際の登録

基本的には

  1. ECRでコンテナを登録する(AWS専用のDockerHubみたいなものです。)
  2. タスクの定義でコンテナの登録
  3. クラスター作成
  4. タスクの実行

というのが一番簡単です。

Amazon ECS入門 〜公式のDockerイメージを使って10分で構築してみる〜

またウィザードにそって行けばそのままECSの環境が作れるものもあります。

https://console.aws.amazon.com/ecs/home?region=us-east-1#/firstRun

ecs-cli

自分がやりたかったのはRedmineというRails製のアプリのDockerコンテナを立ち上げることなんですが、画面からポチポチやってもどうしても立ち上がらなかったです。PHPのアプリとかはすぐにできたんですが、このアプリRailsなんでPortが3000なんですよね・・

これを3000→80にマッピングさせているはずなんですが、どうやっても落ちてしまい、色々試行錯誤してみましたが、解決せず・・・半ば諦めかけた時にコマンドラインのecs-cliを使ったらすぐに解決しました・・・・

これ使うとdocker-composeそのまま使えます。

理解していないとキツイですね・・・

https://github.com/umanari145/node_aws_etc

ローカルで使用したdocker-compose.ymlを使ってECS上でコンテナを起動する

ちなみに単純にコンテナを使ってサービスを動かしたいだけだったらEC2にログインして、dockerをインストールして、 docker-compose up -d を使うのが一番早いです。

AWS EC2インスタンスにdockerとdocker-composeをインストールして簡単なWEBサービスを立ち上げる方法

-サーバー・ネットワーク
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

dockerコマンドについて再考(ttyや/bin/bashなど)

Contents1 ttyオプションに関して2 docker execコマンドに関して2.1 ログインしないパターン2.2 shellに関して ttyオプションに関して dockerでnodeを起動さ …

no image

クロスサイトスクリプティング(XSS)

これまた非常によく聞く攻撃方法ですね。 Contents1 クロスサイトスクリプティングとは?2 被害3 対策 クロスサイトスクリプティングとは? 動的なページの表示生成の際に悪意のあるスクリプトを埋 …

no image

mod_rewriteでの注意点

久々にhtaccessでのmod_rewriteをやりまして少しハマった(忘れていたのでポイントを) このネタではタグつけて結構書いてますね・・ http://skill-up-engineering …

no image

Apacheでのリバースプロキシ

jenkinsの復習をしていたんですが、持ってたVPSサーバーにjenkins環境を構築、jenkinsのURLをサブドメインにし、アクセスした時に別ポートに飛ばす仕様にしました。 前提条件として下記 …

no image

SSH鍵認証に関して

SSHの鍵認証についてやり方自体は流れ作業でできていましたが、根本的なところが理解していないので復習。 まずは通常の流れを。 1 クライアント(自分のPC)で公開鍵・秘密鍵を作成。[crayon-64 …

アーカイブ