LoginSignup
0

More than 3 years have passed since last update.

PHP Slim 環境構築(15) ECS(手動で設定するFargate編)

Posted at

PHP Slim 環境構築(15) ECS(手動で設定するFargate編)

Introduction

前回は、コンテナをECS(EC2インスタンス)で動作させてみました。
今回は、EC2インスタンスからFargateに変更して同様に構築します。

この一連のシリーズは、自分への備忘録が第一目的のため、相当不親切です。
申し訳ございません。
しかし、もはや、Slimと関係ないですね。

AWS

ECR

前回と同じです。
このリポジトリのURIは、<<AWS-ACCOUNT-ID>>.dkr.ecr.ap-northeast-1.amazonaws.com/hoge-repo になります。

ビルド

これも前回と同じです。すでにビルド済みのイメージがECRに登録されているものとします。

IAM(ロールの作成)

前回作成したhoge-ecs-userと同様です。
これは、一応新規で作ることにします。なお、前回も書きましたが、これでは権限が強すぎですね。

パラメータ
ロール名 fuga-ecs-user
AWSサービス Elastic Container Service Task
ポリシー AmazonRDSFullAccess, AmazonDynamoDBFullAccess, AmazonS3FullAccess

EC2(ターゲットグループ)

ロードバランサの設定前に、そのターゲットグループを設定しておきます。
EC2インスタンスを使ったECSと異なり、ターゲットの種類はIPになります。

パラメータ
名前 fuga-target
ターゲットの種類 インスタンス
ポート 3128
ヘルスチェック http /favicon.ico

EC2(セキュリティグループ)

前回と同じく、以下の二種類のアクセスに対するセキュリティグループを定義します。

  • ロードバランサへのアクセス

外部からのhttp(s)のアクセスです。

パラメータ
名前 fuga-http-sg
インバウンド 80(0.0.0.0/0), 443(0.0.0.0/0)
  • Dockerコンテナへのアクセス

Fargateへのアクセスです。ロードバランスのIPアドレスレンジを指定します。
なお、EC2では動的ポートマッピングを使用していたので可能性のあるポートの範囲を指定していましたが、今回はNginxのポートをそのまま指定します。

パラメータ
名前 fuga-instance-sg
インバウンド 3128(ロードバランサのVPC)

AWS Certificate Manager

SSLを使う場合は、こちらで証明書を発行します。今回も説明は割愛します。

EC2(ロードバランサ)

ALBの設定を行います。これはEC2もFargateも変わりません。

パラメータ
名前 fuga-alb
スキーム インターネット向け
リスナー 80, 443(証明書が必要です)
AZ ap-northeast-1a, 1c, 1d全部
セキュリティグループ fuga-http-sg
ターゲットグループ fuga-target

ECS(クラスター)

これはEC2インスタンス用のクラスターよりも、かなり単純になります。

パラメータ
クラスターテンプレート ネットワーキング
クラスター名 fuga-cluster

ECS(タスク定義)

ECSで生成されたインスタンスにDockerコンテナを載せるためのタスク定義を行います。
EC2インスタンス用と違うのはネットワークモードと、タスクメモリとタスクCPUが指定しなければいけない、ポートマッピングがコンテナ側のみ(ネットワークモードの違い)ぐらいです。

パラメータ
起動タイプ FARGATE
タスク定義名 fuga-task
タスクロール fuga-ecs-user
ネットワークモード awsvpc
タスク実行ロール ecsTaskExecuteRole(自動生成される)
タスクメモリ 0.5GB (本当はちゃんと設定する。とりあえず最低値)
タスクCPU 0.25vCPU (本当はちゃんと設定する。とりあえず最低値)
コンテナ名 fuga-container
イメージ <<AWS-ACCOUNT-ID>>.dkr.ecr.ap-northeast-1.amazonaws.com/hoge-repo:latest
メモリ制限 設定なし
ポートマッピング コンテナ(3128) (ホスト側のポート指定はなし)

ECS(サービス追加)

タスクを元にECSにサービスを追加します。

パブリックIPをDISABLEDにすると、ECRからイメージが読み込めませんでした。
VPCエンドポイントを指定したりするなどが必要かもしれませんので、今後調査したいところです。

パラメータ
起動タイプ FARGATE
タスク定義 fuga-task
クラスタ fuga-cluster
サービス名 fuga-service
サービスタイプ REPLICA
タスクの数 1
デプロイ ローリングアップデート
ロードバランサー fuga-alb
セキュリティグループ fuga-instance-sg
パブリックIPの自動割り当て ENABLED
プロダクションリスナーポート 80
ロードバランス用のコンテナターゲット fuga-target
AutoScaling 無効

次はCI/CD周りです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0