質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

7334閲覧

【AWS】ECSクラスターを生成するも、コンテナインスタンスが追加されない

shota-imoto

総合スコア37

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/08/05 11:58

下記の動画教材を元にECSクラスターを作成しました。
Udemy教材
Youtube動画

いずれの教材でもクラスター作成後、自動的にEC2が紐付けられると述べられていますが、実際に作成してみるとうまくいきません
クラスター一覧画面
クラスター詳細 ECSインスタンスタブ

そこで下記3点、わかる範囲で教えていただけると嬉しいです。
・設定に誤りはないか
・確認すべきポリシーその他設定はあるか
・クラスターに手動でAutoScalingグループもしくはEC2インスタンスを追加する方法

設定

インスタンスの設定

  • EC2 Linux + ネットワーキング
  • クラスター名:任意
  • リストプロビジョニングモデル:オンデマンドインスタンス
  • EC2:インスタンスタイプ:t2micro
  • インスタンス:2
  • EC2 AMI id:Amazon Linux 2 AMI
  • Root EBS Volume Size(GiB)
  • キーペア:[既存のものを使用]

ネットワーキング(ネットワーク構成は後述)

  • VPC:[既存のものを使用]
  • サブネット:[既存のものを使用]
  • Auto assign public IP:Use subnet setting
  • セキュリティグループ:新しいセキュリティグループの作成
  • セキュリティグループのインバウンドルール:CIDRブロック=>0.0.0.0/0 ポート番号=>80
  • コンテナインスタンスIAMロール:ecInstanceRole(ポリシー:AmazonEC2ContainerServiceforEC2Role)
  • CloudWatch Container Insights:unchecked

クラスター生成作業時のIAMユーザのポリシー

  • AdministratorAccess
  • AmazonECS_FullAccess
  • IAMUserChangePassword

使用したネットワーク構成

VPC

  • CIDRブロック:192.168.0.0/16
  • ルーティングテーブル:192.168.0.0/16→local, 0.0.0.0/0→[インターネットゲートウェイ](全サブネット共通)

サブネット1

  • CIDRブロック:192.168.10.0/24
  • アベイラビリティーゾーン:ap-northeast-1a(apne1-az4)

サブネット2

  • CIDRブロック:192.168.20.0/24
  • アベイラビリティーゾーン:ap-northeast-1c(apne1-az1)

インターネットゲートウェイ=>VPCアタッチ済み

設定は十分見直したと思うので、手動設定の方法を継続して調べるつもりです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

サブネットで追加の設定をするとうまくうごきました。

設定変更=>確認の手順

・サブネットの管理画面から、サブネット1.2を選択して、
アクション>自動割り当てIP設定の変更>「IPv4 の自動割り当て」にチェック>保存

上記設定をしたあとに、クラスターを質問文と同様の手順で作成。
EC2起動後、クラスターの管理画面を開くとインスタンスの登録が確認できる。

イメージ説明

原因は未確定ですが、おそらくクラスターがEC2を探すときにプライベートIPではなく、パブリックIPを使用する仕様なのではないでしょうか。

その他 補足
手動設定するとなるとCloudFormationの知識が必要になるようです。
実運用上は必須の知見となりそうです。

投稿2020/08/05 21:42

編集2020/08/05 21:42
shota-imoto

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2020/08/06 02:24

やや補足をすると AWSのマネージドサービスがEC2インスタンスを探すときは基本的にパブリックIPを使って探すケースが多いため、パブリックサブネットに置いているにも関わらずパブリックIPが存在しないとそのインスタンスを見つけることができなくなります。 EC2インスタンスとサービスを連携させる際「そのインスタンスとサービスの間で通信できるか」という観点が必要です。 これはAWSを使っている中で意外とハマりやすいポイントです。 プライベートサブネット内にあるインスタンスとマネージドサービスの間で通信をしたい場合であれば、NAT Gatewayを経由するか、またはVPCエンドポイントを作成してそこを経由して通信するのが一般的ですが、パブリックサブネットでもIPを割り当てていない場合は同様にして何かしらの経路を作ってやる必要があります。 ECSの場合はこちらが参考になります。 https://dev.classmethod.jp/articles/privatesubnet_ecs/ まあでもNAT Gatewayを作るのもVPCエンドポイントを作るのもタダではなく意外と料金がかかるので、そんなことをするくらいならパブリックサブネット内にあるインスタンスにはIPが割り当てられるようにしておいて、セキュリティグループでアクセスコントロールする、で十分かとは思います。
shota-imoto

2020/08/06 12:17

情報ありがとうございます。 そもそも基本的なルーティングやIP設定はECSなどの各サービスの説明にあえて書かれていないだろうから、見落としそうですね。。。注意します。 コンテナ導入前はセキュリティ向上のため、privateサブネット内のEC2にDBサーバをおいていました。 NATバカ高い印象なので避けたいし、DBは別サーバ立てた上で、セキュリティグループでアクセス元を絞ることで代わりにしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問