" />

スポンサーリンク

AWS

AWS ECSを使った本番構成は?

投稿日:

概要

この記事では、
・本番環境
・ステージング環境
・開発環境
の3つの環境を使うプロジェクトを、AWSに構築する際の設計を紹介します。

詳しくは、下記書籍に記述されています。

アカウントは環境ごとに分ける

AWSのアカウントは、環境ごとに分けます。

本番環境用AWSアカウント
ステージング環境用AWSアカウント
開発環境用AWSアカウント
共有リソース用AWSアカウント

この4つのアカウントを用意します。

特に本番環境は別アカウントにするのが安全です。
1つのアカウントでVPCを分ければいいのでは?という案もありますが、
完全にアカウントを分けておくのが安全とのことです。

また、Gitリポジトリなどの共有リソース用のアカウントも作成します。

Gitリポジトリは1つ、環境ごとにブランチを作成する

CodeCommitやGithubのGitリポジトリは1つにします。
環境ごとにブランチを作成します。

本番環境用ブランチproduction
ステージング環境用ブランチstaging
開発環境用ブランチdevelop

このようなブランチのリポジトリを共有リソース用のアカウントのCodeCommmit(or Github)に作成します。

Gitリポジトリを環境ごとに分けてしまうと、
マージ作業が大変になってしまいます。

CodePipeline-CodeDeployは?

それぞれの環境で、
CodePipline(CodeBuild->CodeDeploy->ECS)を用意します。

開発環境のPipelineは開発用に自由に使えるものです。
開発ブランチにPushされると、CodeBuildが起動し、テスト・ビルドを実行します。
ビルドはリソース共有用アカウントに用意した開発環境用ECRにPushされ、Code DeployがECSにデプロイします。

ステージング環境のPipelineも基本的には同様です。
ステージングブランチにPushされると、CodeBuildが起動し、テスト・ビルドを実行します。
ビルドはリソース共有用アカウントに用意したステージング・本番環境用ECRにPushされ、Code DeployがECSにデプロイします。

本番環境もPipelineを構築します。
ですが、本番環境ではCodeBuildではテスト・ビルドをするのではなくて、
ステージング環境で作成されたテスト済みイメージをステージング・本番環境用ECRからPullするだけとします。

ECRにおけるイメージのメンテナンス

ECRはS3上に構築されるため、イレブンナインの耐久性がある。
ただし、S3よりも料金が高いため、過去バージョンについては、
ライフサイクルポリシーを用いて料金を低減させること。

Bastion設計

各AWSアカウント上に構築されたコンテナやRDSには、踏み台ホスト(Bastion)からアクセスするのが一般的です。

踏み台ホストは、privateサブネットに配置します。
また、pemファイルを用いたSSH接続させるのではなく、
セッションマネージャーを用いて接続させます。

IAMに対してセッションマネージャー接続を許可することで、
セキュリティマネージメントをIAMに寄せることができるからです。

スポンサーリンク

-AWS

Copyright© ノリックジオグラフィック for Webエンジニア , 2022 All Rights Reserved Powered by AFFINGER5.