AWS CodePipelineを利用してWEBコンテンツ更新を行ってみる

はじめに

本記事では、下記AWSドキュメントで紹介されているチュートリアルを実際に実施してみます。

チュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリの場合)

CodePipelineを利用してgit pushによるWEBコンテンツの更新を行う、という内容ですが
そもそもGitを使ったことがない人には若干ハードルが高いように見えるので、
上記ドキュメントよりは少し詳細に手順を眺めていきます。

概要

チュートリアルの内容としては概ね図の通りです。

CodeCommit=AWSマネージドのGitリポジトリです。
ローカルで更新したファイルをCodeCommitにアップ(git push)すると、AWS側で更新を検知しCodeDeployAgentがWEBコンテンツの更新を行います。
その一連の流れをCodePipelineが制御しています。

実作業

Gitクライアントインストール

下記リンクから、Windows用のGitクライアントをインストールする為のファイルをダウンロードします。
私は全てデフォルト設定でインストールを行いました。

git for windows

IAMユーザの設定

CodeCommitを利用する為のGitユーザ名・パスワードはIAMユーザから生成します。
適当なIAMユーザを作成し、認証情報の[生成]を選択すると、ユーザ名・パスワードが表示されるのでメモしましょう。

また、対象のユーザに下記のIAMポリシーをアタッチしましょう。

CodeCommitリポジトリの作成

下記の通り、リポジトリを作成します。

以下の通り設定しました。

CodeCommitリポジトリにサンプルコードを追加

リンクからサンプルファイルをダウンロードします。
ダウンロードし、解凍したフォルダを C:\Temp\my-demo-repo として配置します。

ローカルのコマンドプロンプトを起動し、以下のように実行します。

マネジメントコンソールに移り、先ほど作成したMyDemoRepoリポジトリの[URLのクローン]を選択します。
プルダウンで表示された[HTTPSのクローン]を選択すると本リポジトリのURLがクリップボードにコピーされます。

コマンドプロンプトに戻り、先ほどコピーしたURLを利用して下記コマンドを実行しましょう。
リモートリポジトリとしてMyDemoRepoを登録するコマンドです。

また、次のコマンドを打つ前に予習ですが、Gitには以下3つのステージがあります。

  • 作業ディレクトリ
  • ステージング・エリア
  • Gitディレクトリ

ステージが設定されている意味については今回は触れませんが、
ローカルで変更したファイルを実際にリポジトリに反映させる為には、
add, commit, push の操作で各ステージを通過する必要があります。

  • 作業ディレクトリ -(add)-> ステージング・エリア -(commit)-> Gitディレクトリ -(push)-> リポジトリ

その為、以下のようにコマンドを実行します。

push実行時、ユーザ名とパスワードを求められます。先ほどIAMのコンソールで表示されたものを入力しましょう。
pushしたことで、CodeCommitにファイルがアップされたことが分かります。

EC2インスタンス作成・CodeDeployエージェントのインストール

WEBコンテンツを載せるEC2インスタンスを作成します。
私はAmazon Linux 2を選択しました。

下記のユーザーデータを入力し、作成と同時にCodeDeployエージェントがインストールされるようにします。

Nameタグも設定します。
チュートリアルに従い MyCodePipelineDemo としました。

セキュリティグループは、自信のグローバルIPからのHTTP接続を許可しましょう。
必要に応じてSSHも許可します。

インスタンスの作成が完了し、CodeDeployAgentが起動していることが確認できました。

CodeDeployアプリケーションの作成

CodeDeployの[アプリケーション]と[デプロイグループ]を作成します。
まずはアプリケーションから。

次にデプロイグループを作成します。

WEBコンテンツをデプロイするEC2インスタンスをタグで指定します。

その他、以下パラメータを指定してデプロイグループの作成を完了します。

CodePipelineでパイプラインを作成する

ここまでで、

  • ローカルでファイルを更新するGitクライアント
  • 更新されたファイルをUPするGitリポジトリ(CodeCommit)
  • リポジトリにUPされたファイルをWEBコンテンツ領域に配置するCodeDeployエージェント

など、一連の流れに必要な要素が揃ったので、それらをつなぎ合わせるパイプラインを作成します。

以下、画像の通りに設定ください。

最後に設定の確認画面になるので[パイプラインを作成する]。

パイプラインの作成と同時に、サンプルコンテンツのデプロイが実行されます。
数分するとデプロイが完了し、EC2インスタンスのグローバルIPにブラウザでアクセスすると以下のように表示されます。

パイプラインを利用しWEBコンテンツを修正する

ローカルでファイルを修正し、パイプラインを通じて実際のWEBコンテンツに反映させてみましょう。

ファイルの内容はチュートリアルのステップ6の項番3を参照ください。

編集が完了したらcommit, push(リポジトリ=CodeCommitへのアップ)を行います。

pushを行うと、変更をAWS側で検知して、ローカルで更新した内容がデプロイされます。
改めてWEBブラウザでEC2インスタンスのグローバルIPにアクセスすると、以下のような内容が表示されるはずです。

本記事の内容はここまでですが、ファイルの変更履歴やデプロイの流れがAWSマネジメントコンソール上から確認できるので、是非ご覧ください!

投稿者プロフィール

sato
2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Time limit is exhausted. Please reload CAPTCHA.