こんにちは
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
前回Cloud9で作ったDjangoアプリをコンテナイメージに変換し、それをECRにpushしました。
今回はこの続きで、ECRからイメージをpullしてコンテナアプリとしてDjangoで作ったWebアプリをデプロイしていきたいと思います。
前回の記事は以下となります。
全体の流れは以下を参照ください
環境イメージ
構築
Fargate(ECS)用のアクセスキー/シークレットアクセスキーを作成する
IAMユーザを作成してアクセスキーとシークレットアクセスキーを取得します。
作成手順はCloud9で環境を作ったときと同じです。今回はqiita-ecsユーザを作成しました。
具体的な手順は以下を参照ください。
ECS環境を構築する
タスク作成
ESCのタスクを以下のパラメータで作成します。
- タスク定義:qiita-ecs-task
- 起動タイプ:Fargate
- タスク実行ロール:新しいロールの作成
- コンテナ1
- 名前:django
- イメージURI:ECRで確認したURI
- コンテナポート:80
- 環境変数
- AWS_ACCESS_KEY_ID:IAMで生成したもの
- AWS_SECRET_ACCESS_KEY:IAMで生成したもの
作成されたことを確認します。タスク実行ロールを押下します。
S3にファイルをアップロードするための権限を追加します。今回は雑にS3FullAccessを追加しました。
クラスターを作成
以下のパラメータでクラスターを作成します。
-クラスター名:qiita-ecs-cluster
作成したクラスタを押下します。
タスクをクラスタに紐づけしていきます。
タスクタブを開いて新しいタスクの実行を押下します。
以下のパラメータで作成しました。
- デプロイ設定:サービス
- ファミリー:作成したタスク名(リビジョンは1になると思います。私は何度も作り直しているので7になってます。)
- サービス名:qiita-ecs-django-service
- セキュリティグループ:新しいセキュリティグループ
- セキュリティグループ名:qiita-ecs-django-sg
- インバウンドルール:カスタムTCP-8080-0.0.0.0/0
タスクが作成されたら、タスク欄のリンクを押下します。
パブリックIPを控えます。
テスト
http://先ほど控えたIPアドレス:8080を任意のWebブラウザに打ち込み、アクセスします。
アクセス出来たら適当なファイルを選択しアップロードしていきます。
S3にアクセスしてアップロードが出来ていることを確認します。
メール通知が飛んできていることも確認しましょう。