aws

【D-9】CI/CD(静的Webサイト)

静的Webサイト(S3 + CloudFront)の CI/CD を構築し、GitHub にプッシュした変更が自動で S3 にデプロイされるようにします。

[ 学習フェーズ ]

1. なぜ CI/CD が必要なのか?

  • 手動デプロイの手間を削減
    • S3 に手動でファイルをアップロードすると、ミスや工数が増える。
    • GitHub にプッシュするだけでデプロイされる仕組みを作ることで、運用を自動化できる。
  • 本番環境への反映を高速化
    • CodePipeline を使うことで、開発 → テスト → 本番適用 の流れを確立できる。

2. CI/CD の構成

  • GitHub:静的Webサイトのソースコードを管理(HTML, CSS, JavaScript)
  • CodePipeline:GitHub の変更を検知し、自動で S3 にデプロイ
  • S3:静的Webサイトのホスティング

[ 実践フェーズ ]

  1. 以下の教材を参考に、静的Webサイトの準備をしてください。
    【D-2】 静的Webサイト

2. 構築した静的Webサイトに対して、GitHub + CodePipeline を使ったCI/CDを作成してください。
①ソースステージ(GitHub)
  - GitHub を選択(認証を許可)
- リポジトリとブランチを指定(例: main)
②デプロイステージ(S3)
  - デプロイプロバイダーを「Amazon S3」 に設定
- 対象の S3 バケットを選択
③パイプラインの作成

3. CI/CDの確認
  - GitHubへのpushをトリガーにCI/CDができるか確認する

CI/CDの際に、CloudFront のキャッシュクリアも自動で行ってみましょう。

CloudFront はキャッシュを利用してコンテンツを高速に配信するため、CI/CDでデプロイした直後でも、変更が反映されないことがあります
キャッシュは CloudFront の管理画面から手動で削除することも可能 ですが、毎回手作業で削除するのは非常に手間がかかります。

そこで、デプロイ完了後に自動でキャッシュを削除(Invalidation)し、新しいコンテンツを即時反映できるように設定 しましょう。
この処理を CI/CD に組み込むことで、GitHub に変更をプッシュするだけで、デプロイとキャッシュクリアが自動で実行されるようになります。

CloudFront のキャッシュを削除するには、aws cloudfront create-invalidation コマンドを使用します。
CodePipeline にはキャッシュクリアの機能がないため、CodeBuild を利用してキャッシュをクリア します。

既存のCodePipelineにCodeBuildを追加してみましょう。

また、IAM Roleの設定やbuildspec.ymlの作成も必要です。調べながら構築してみましょう。

+α②

CodePipeline の起動や失敗、デプロイ完了時に通知できるようにしましょう。

パターン①:SNSを使ってメール通知

パターン②:SNS + AWS Chatbotを使ってSlack通知