😸

ECSを使ったシステム構成を整理してみた

2022/01/09に公開

AWSに入門するため、色々とAWSを使ってみた。
ある程度、基礎的な要素や構成は理解できた感じがするので、今までに得た情報を整理してみた。

AWSに関する基礎知識

ECSとは直接関係ないが、AWS全体で必要となる基礎知識を確認しておく。

ネットワーク

  • リージョンは、AWS上での提供地域を指す
  • アベイラビリティゾーンは、各リージョン内の独立した場所を指す
  • VPCは、AWSアカウント内のプライベートなネットワーク

https://practical-aws.dev/p/basic-network/

コンピューティング

  • ECSは、コンテナ環境を提供する
  • ELBは、異なるレイヤーのロードバランサを提供する
  • CloudWatch Logsは、ログ管理サービス

https://practical-aws.dev/p/basic-computing/

セキュリティ

  • IAMは、アクセス制御サービス
  • Parameter Storeは、設定データ管理サービス

https://practical-aws.dev/p/basic-security/

ECSを使ったシステム構成

ECSを使ったシステム構成を、パターンとしてまとめられそうな単位で整理してみた。

ECSとALBを使った基礎的なシステム構成

  • 最も基礎的なインターネットからリクエストを受けるアプリケーション
    • インターネットからのアクセスはALBを経由してリクエストを受ける
    • Route53と連携し、ドメインやSSL証明書の管理が行える
    • 複数AZとすることで可用性を高める

https://practical-aws.dev/p/container-ecs-alb-basic/

ECS Service Discoveryを使ったService間連携

  • マイクロサービスを採用した場合など、VPC内で連携しあうアプリケーション
    • ECS Service Discoveryを使い、DNS名を元にECS Service間で通信が行える

https://practical-aws.dev/p/ecs-service-discovery/

GitHub ActionsとECS CLIを使ったECSデプロイパイプラインの構築

  • GitHub ActionsでCI/CDパイプラインを整える
    • OpenID Connectを使い、GithubActionsとIAMを連携できる
    • AWS CLIを使い、AWSの各リソースを参照・更新できる
    • ECS CLIを使い、ECS Serviceをコード化・デプロイできる

https://practical-aws.dev/p/ecs-deploy-gh-actions/

ECSとEventBridgeを使ったスケジュール処理

  • cronのようなスケジュール指定のバッチ処理
    • EventBridgeを使い、スケジュール指定のイベント発行ができる
    • EventBridgeのイベントで、ECS Taskを実行できる

https://practical-aws.dev/p/container-ecs-event-bridge-scheduled/

Parameter Storeを使ったECSシークレット管理

  • アプリケーションに設定するシークレットの管理
    • Parameter Storeでシークレットを管理できる
    • Parameter StoreからECS Service・Taskへ、環境変数として値を渡せる

https://practical-aws.dev/p/container-ecs-parameter-store/

まとめ

1つ1つ目的を分けて整理したので、より理解が進んで良かった。
AppRunnerを使えば気にしなくて良くなる部分も多々あると思うが、現時点ではECSを理解しておく必要がまだまだありそうな雰囲気。

次は、AI・MLまわりとか、Serverlessまわりも色々と使ってみたいところ。

Discussion