AWS ECS (Elastic Container Service)の作成

概要

以前、案件でECSを構築する機会があったので、まとめていきます。
AWS Cloud Watch AgentをECSに導入する導入する手順となります。

検証環境

  • AWS

ECS作成

  • Dockerfileの内容をリポジトリにpush
    ①aws-cliが入っているOSに接続する
    ②Dockerfileをカレントディレクトリに配置する
    ③以下のコマンドを実行する
$ aws ecr get-login-password --region 対象リージョン | docker login --username AWS --password-stdin アカウントID.dkr.ecr.リージョン.amazonaws.com
$ docker build -t cloudwatch-agent .
$ docker tag cloudwatch-agent:latest リポジトリのURI:latest
$ docker push リポジトリのARN:latest
  • ECSクラスタを作成する
    ①AWSのコンソールからECSで検索して、[クラスター]からクラスターの作成を行う
  • タスク定義の作成
    ①AWSのコンソールからECSで検索して、[タスク定義]から新しいタスク定義の作成を行う
    ②以下の内容で作成する(赤字は可変です)

##タスク定義の設定
 ・タスク定義ファミリー:cloudwatchagent-test ※好きな名前で可
##インフラストラクチャの要件
 ・起動タイプ:AWS Fargate
 ・OS、アーキテクチャ、ネットワークモード:Linux/x86_64
 ・ネットワークモード:awsvpc (変更不可)
 ・タスクサイズ CPU:1vCPU メモリ:3GB
 ・タスクロール:-
 ・タスク実行ロール:ECSの変更が行えるロール
##コンテナ1
 ・コンテナ詳細:名前:cloudwatch-agent
         イメージURI:プッシュしたリポジトリのURI
         必須コンテナ:いいえ
 ・プライベートレジストリ認証:オフ
 ・ポートマッピング:-
 ・読み込み専用ルートファイルシステム:チェック無し
 ・リソース割り当て制限ー(条件付き):CPU:1
                    GPU;1
                    メモリのハード制限:3
                    メモリのソフト制限:1

  • サービスの作成
    ①対象のクラスターを選択して、サービスの作成を行う(赤字は可変)

##サービスの詳細
 ・タスク定義ファミリー:作成したタスク
 ・サービス名:好きな名前

##環境
 ・コンピューティングオプション:キャパシティープロバイダー戦略
 ・キャパシティプロバイダー戦略:カスタム使用(アドバンス) ※変更不可
 ・キャパシティプロバイダー:FARGATE ベース:0 ウェイト1
 ・プラットフォームのバージョン:LATEST
 
##デプロイの設定
 ・スケジューリング戦略:レプリカ
 ・必要なタスク:1

##ネットワーキング
 ・VPC:利用するVPC
 ・サブネット:利用するサブネットを全て✓
 ・セキュリティグループ:利用するセキュリティグループ
 ・パブリックIP:オンになっています:チェック

以上!!
サービスが正常に起動したことを確認してください

備考

ECSの作成はリポジトリ+タスク+クラスター+サービスと色々と別れているため、
今回の手順は作成する順番を念頭に置きました。
利用するVPCとかIAMの権限とかも構築する環境によって千差万別なので、
そこは考えてもらう必要があると思います。