概要
以前、案件でECSを構築する機会があったので、まとめていきます。
AWS Cloud Watch AgentをECSに導入する導入する手順となります。
検証環境
- AWS
ECS作成
- Dockerfileの作成
①以下のURLのDockerfileをコピーしておく。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/ContainerInsights-build-docker-image.html - ECR(リポジトリ)の作成
①AWSのコンソールからECRで検索して、リポジトリを作成しておきます。

- 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の権限とかも構築する環境によって千差万別なので、
そこは考えてもらう必要があると思います。
