AWS ECS と GitHub Actions を使った CI/CD サンプル

DevOps

概要

このリポジトリは、Docker でコンテナ化したシンプルな Node.js(JavaScript)ウェブアプリケーションを、AWS ECS(Fargate)へ継続的にデプロイするためのサンプル構成を示します。GitHub Actions のワークフローを用いて、コードのコミットから自動的にイメージをビルドし、コンテナレジストリにプッシュ、ECS のタスク定義を更新してサービスをローリングデプロイする一連の流れを構築します。実務での導入前に動作や設定イメージを掴むためのテンプレートとして有用で、AWS リソース(ECR、ECS、適切な IAM ポリシー等)との連携方法が学べます(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 4
  • メインの言語: JavaScript

主な特徴

  • GitHub Actions を利用した CI/CD ワークフローのサンプル(ビルド→プッシュ→デプロイ)。
  • Docker コンテナ化されたシンプルな Node.js アプリケーション(学習・テンプレート向け)。
  • AWS ECS(Fargate)用のタスク定義サンプル(ecs-task-def.json)を同梱。
  • 軽量かつ実践的で、ECR や IAM 設定と組み合わせることで即試験可能。

技術的なポイント

本リポジトリは実務でよく使われるパターンをシンプルにまとめているのが特徴です。まず、アプリケーションは Dockerfile(app ディレクトリ内に想定)でコンテナ化され、GitHub Actions ワークフローがトリガーされることで以下のステップが実行される構成を想定しています:ソースのチェックアウト、Node.js のビルドとテスト(必要に応じて)、Docker イメージのビルド、ECR(Elastic Container Registry)へのイメージのプッシュ、そして ECS のタスク定義(ecs-task-def.json)を更新して Fargate サービスをデプロイ。ワークフロー内で AWS 認証情報(AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY)や ECR リポジトリ名、クラスター/サービス名を GitHub Secrets で安全に管理する点も重要です。

ecs-task-def.json ファイルは Fargate 向けにリソース(CPU / メモリ)やコンテナ定義、ポート設定、環境変数のテンプレートを提供します。実運用ではここにログドライバ(awslogs)の設定やヘルスチェック、シークレット(SSM / Secrets Manager)の参照を追加して堅牢化します。デプロイ戦略は基本的にサービスの新しいタスク定義登録→サービス更新によるローリングデプロイで、CloudWatch メトリクスや ALB のヘルスチェックスコアで安全に置き換えられます。

セキュリティ面では最小権限の IAM ロール設計(ECR への push、ECS タスク定義の登録・サービス更新が行える権限)や、イメージスキャン、脆弱性管理をワークフローに取り込むことが推奨されます。さらに、ワークフローを複数ブランチやタグ運用に対応させることで、ステージング/プロダクション環境へのデプロイを分離できます。本リポジトリは入門から中規模環境への拡張まで、設計の出発点として使える構成例を示しています(約700〜900字)。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir(GitHub Actions のワークフローファイルが入る想定。ビルド、テスト、デプロイのステップを定義)
    • workflows/*.yml を配置して、push や pull_request、release をトリガーに設定可能
  • README.md: file(リポジトリの説明とセットアップ手順の要約)
  • app: dir(Node.js のソースコードと Dockerfile を格納するディレクトリ。簡易的なウェブアプリが含まれる)
    • package.json、サーバ起動スクリプト、静的ファイル等が配置される想定
  • ecs-task-def.json: file(ECS Fargate 用のタスク定義テンプレート。コンテナ名、イメージ、ポート、リソース制限などを記述)

各ファイルは最小限のテンプレートとして提供されており、環境に合わせて ECR リポジトリ、クラスタ名、サービス名、ログ設定、環境変数(API キーや DB 接続文字列)などを編集して使用します。

まとめ

学習・テンプレート用途に最適な、ECS+GitHub Actions のシンプルな CI/CD 実装例です(約50字)。

リポジトリ情報:

READMEの抜粋:

AWS-ECS-GitHub-Actions-CI-CD

A containerized web application using Docker and AWS ECS (Fargate). …