今回の記事では、ECSの設定からバッチ実行までおこないます。
▼前回の記事はこちら
AWS ECS(fargate)+ECR コンテナでバッチをつくる① ※CodeBuildの設定からECRの設定まで
構成図
①ECSの設定1
今回はバッチ作成ですので下記3つの設定が必要です。
ここでは、クラスター/タスク定義の設定を行います。
・クラスター
・タスク定義(実行するコンテナの設定・複数コンテナ指定可)
・タスクのスケジューリング
※サービスは使用しません。
サービスは常時起動のコンテナ用と認識しております。
例えば、指定数のコンテナを常時起動し、エラーなどで
コンテナが終了した場合に自動で指定数までコンテナを立ち上げるなど。
1. クラスターの作成
2. タスク定義の作成
イメージにはECRのImage URIを設定する。(※前回記事の一番下参照)
タスクメモリとCPUには、コンテナ実行に必要な分割り当てる。
※このあたりは、一度コンテナを実行してみて、
ECR > メトリクス > CPU利用率、メモリ利用率を見ながら調整するのかなぁ。
コンテナを複数設定することができます。
②エンドポイントの設定
今回はプライベートサブネットでコンテナを実行します。
そのため、ECRへの経路が必要となりますが、2つの方法があります。
・インターネット経由でECRにアクセスする。 ※一度外に出る
⇒NAT(パブリックサブネットに)とインターネットゲートウェイが必要となります。
・プライベートリンクでECRにアクセスする。 ※インターネットに出ないのでセキュア
⇒エンドポイントが必要となります。
今回はプライベートリンクでECRにアクセスします。
気になるコスト面でもエンドポイントの方が安いです。
コンテナはイメージファイルのサイズが大きいので、データ転送の料金がかさみます。。
↓↓↓
エンドポイントの設定は3つ必要となります。
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/vpc-endpoints.html
・com.amazonaws.region.ecr.dkr (ECRアクセス用)
・com.amazonaws.region.s3 (S3アクセス用)
※ECRがイメージファイルの保存にS3を使っているから、S3のエンドポイントが必要
・com.amazonaws.region.logs (CloudWatchアクセス用)
1. エンドポイント(com.amazonaws.region.ecr.dkr)の設定
必要なサービスを選択し、プライベートサブネットと紐づけをします。
2. エンドポイント(com.amazonaws.region.s3)の設定
3. エンドポイント(com.amazonaws.region.logs)の設定
③ECSの設定2
最後に、タスクのスケジューリングを設定しコンテナを実行します。
登録したタスク定義を選択する。
プライベートサブネットを選択する。
パブリックIPはいらないので、DISABLEDで。
スケジュールが登録されました!
スケジュール起動発生!
CloueWatch確認!
⇒コンテナが実行され、メッセージが表示されました!!
細かい説明は置いておいて、ざっと流しました。
イメージはつかめましたでしょうか。
長々とありがとうございました!(^^)