[ワークショップ] AWS上での継続的インテグレーションとデリバリー #DOP310 #reinvent

2023.06.30

アノテーション テクニカルサポートの川崎です。

本記事は AWS re:Invent 2022 のセッションレポートとなります。

「CI/CD on AWS ワークショップ」のコンテンツが 日本語化されていましたので、早速トライしてみました!

概要

このワークショップでは、AWS上でInfrastructure as Codeを使用してエンドツーエンドのCI/CDパイプラインを作成する方法について学びます。継続的インテグレーション、継続的デプロイ、継続的デリバリーの基本的な概念を復習します。その後、TypeScriptを使用してWebアプリケーションを作成し、Dockerを使用してコンテナイメージを構築します。作成したアプリケーションと同じ言語を使用して、AWS Cloud Development Kit (CDK)を使用して、テスト環境と本番環境の両方でCI/CDパイプラインのコードとアプリケーションインフラを構築します。ビルドの準備をしましょう!参加にはラップトップが必要です。

セッション資料

Continuous integration and delivery on AWS

セッション情報

DOP310

ワークショップ

ワークショップ(日本語版)の URL はこちらになります。

CI/CD on AWS Workshop

本ワークショップでは、素晴らしいことに、 各モジュールの先頭に、「早送り」のコマンドが用意されていました!

ワークショップのラボは順番に行われるもので、各ラボは前のラボに基づいて構築されています。以下を行うと、Cloud9 から実行する場合にワークショップのこの時点まで早送りできます。次のコマンドをコピーして、Cloud9 のターミナルウィンドウに貼り付け、ワークショップのこの時点までの全てのコマンドのスクリプトをダウンロードして実行します。

そこで、本ブログでは、Lab1 〜 Lab4 をスキップし、Lab5、Lab6 を実施してみます。

イントロダクション

本ワークショップは、盛りだくさんの内容で、下記のようなプラクティスを使用します。 各項目のトピックは、リンク先をご覧ください。

Lab6では、「Blue/Green デプロイ」についても取り上げます。

その他のトピックについても、リンク先をご覧ください。

環境設定

Lab を実施する前に、下記の内容を実行します。

  • 自分の AWS アカウントを設定する (ご自身でワークショップを実行する場合)

本ブログでは「AWS 主催のワークショップイベントに参加していない場合」「ご自身でワークショップを実行する場合」 の内容についてお伝えしていきます。

リンク先の手順に従い、Cloud9 のインスタンスにアタッチされている EBS ボリュームのサイズを増やします。

(スキップする)Lab1 〜 Lab4 の内容は以下の通りです。

Lab 1: アプリケーション開発

アプリケーションの作成

アプリケーションコンテナイメージのビルド

Lab 2: ソース管理

ローカル Git リポジトリの作成

AWS CDK を使用した AWS CodeCommit リポジトリの作成

AWS CodeCommit にソースコードをプッシュする

CodeCommit でプルリクエストを作成および管理する

Lab 3: 継続的インテグレーション

AWS CodeBuild によるビルドとテスト

テストレポート

Amazon Elastic Container Registry (ECR)

Docker コンテナをビルドして Amazon ECR にプッシュする

Lab 4: 継続的デプロイ

テスト環境の作成

Amazon ECS への継続的デプロイ


それでは、Lab5 から開始していきます。

Lab 5: 継続的デリバリー

本番環境の作成

本番環境を定義する

bin/app-cdk.ts を開き、 前のラボで定義したインフラストラクチャのコードを再利用します。 本番インスタンスを作成します。

本番スタックをデプロイする

継続的デリバリービルド

アプリケーションのパイプラインスタックの初期化を更新する
パイプラインスタックをデプロイする
変更をチェックインする
AWS CodePipeline コンソールで変更を確認する
デプロイを手動で承認する

Lab 6: Blue/Green デプロイ

本番環境と CodePipeline の更新

パイプラインスタックを更新する
アプリケーションのパイプラインスタックの初期化を更新する
パイプラインスタックをデプロイする
本番アプリケーションスタックを更新する
本番スタックをデプロイする

Blue/Green デプロイ用の CodeDeploy のセットアップ

CodeDeploy アプリケーションとデプロイグループを作成する
アプリケーションのパイプラインスタックの初期化を更新する
パイプラインスタックをデプロイする
taskdef.json と appspec.yaml ファイルを追加する
Blue/Green デプロイを開始するようにアプリケーションコードを変更する
変更をチェックインする
AWS CodePipeline コンソールで変更を確認する

本番デプロイは、Lab 5 で行なった手動ステップの承認後に開始されます。

本番環境の変更を確認する

所感

ワークショップの「早送り」のコマンドは、目からウロコでした。

おかげで、継続的デリバリーと、Blue/Green デプロイの箇所だけ、 ハンズオンを実施することができました。

この仕組みは、ワークショップの受講者にとってメリットが大きいので、 他のワークショップにも広げていただけると、ありがたいです。