S3をデプロイ先としたCI/CD環境の構築


 はじめに

今回やった内容はAWSのハンズオンセミナーのCodeCommit、CodePipeLineを用いAmazon S3バケットへのデプロイを行うパイプラインを構築します。
途中Cloud9が起動せず1時間ぐらい悪戦苦闘しました。そこも交えてアウトプットしていこうと思います。
またS3の静的Webホスティングについてはこちら

よろしくお願いします(。・ω・)ノ゙

 今回使用したAWSサービス

CodeCommit
・ソースコードを管理するGitリポジトリサービス
・サートバーティ製のツールも利用可能
・プルリクエスト機能もある
・フルマネージド型のリソース管理サービス

CodePipeLine
フルマネージド型の継続的デリバリーサービス
・Codecommit/CodeBuild/CodeDeployの流れをパイプラインとして定義することでソースコードがコミットされたらデプロイまで自動化
・素早く確実性のあるアプリケーションとインフラストラクチャのアップデートのためのパイプラインのリソースを自動化

AWS Cloud9
・アプリケーションの開発などをクラウド環境で利用できるサービス
・IDE(統合開発環境)としての機能が充実しておりGitHubなどの他のツールとの連携もスムーズ
・ブラウザ上で動くのでPCに依存することなく開発環境を準備することができるのが利点。無料
・今回初期起動せず原因探しに時間を費やした。

今回作る構成図

 CodeCommit

まずマネジメントコンソールからCodeCommitを開きリポジトリを作成していく。

Cloud9で環境構築

マネジメントコンソールからCloud9を開きCloud9の環境を作っていく過程でエラーがあり悪戦苦闘したのも書いていきたいと思います。

本来であればこのままName、EC2インスタンスのタイプやプラットフォームも今回は学習用なのでデフォルトで進めていくのだが、何故かCloud9環境に接続できなかった。

調べた限りのCloud9環境に接続できない主な原因として
 ・VPCのルーティングミス
 ・ネットワークACL
 ・セキュリティグループ辺りの設定ミス

Cloud9はVPCに接続する際デフォルトVPC(変更可)に対して接続されるようになっておりそこからCloudFormastionのテンプレートを使用しEC2インスタンスがデプロイされるようになっている。
CloudFormastionのスタックを見る限りロールバックは起きてないのでデプロイは上手く行ってる。
なので上記のネットワークの設定ミスが多いと思います。

僕の場合はインターネットゲートウェイがブラックホールになっており削除されたインターネットゲートウェイを利用しようとしていたのが原因で接続出来なかった。
接続出来ると以下のようなターミナル画面が出てくる

AWS CodeCommitの認証ヘルパーを使って接続していく

ターミナルで以下のコマンドを叩き接続する

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true

そしてターミナル上でGitユーザーとメールアドレスを作成する。

git conhig --global user.name "○○○○"
git conhig --global user.email "○○○○@hogehoge.jp"

先ほど作ったCodeCommitからリポジトリをクローンする。

cdコマンドでmasterリポジトリに移動しgitコマンドを打つことでCodeCommitのリポジトリにファイルが作成される!

CodePipeLine

CodePipeLineでパイプラインの設定をしていく。
マネジメントコンソールからCodePipeLineを開き作成をクリックし名前を設定しソースステージを追加するという画面では、

1:ソースプロバイダーにCodeCommitを指定
2:リポジトリ名にそれぞれ設定した名前を指定
3:ブランチはmasterしかないのでそれを指定

をそれぞれ設定する

次へをクリックしていくとビルドステージに設定する画面が出てくるのだが今回はCodeCommitにpushされたソースをそのままS3にデプロイするように設定するので今回は省きます。

スキップするとデプロイステージがでてくるのですが今回はそのままS3にデプロイするのでプロバイダーにS3を設定する。

レビューの画面が出てくるので下にスクロールしパイプラインを作成するをクリックする

ここまで用意が終わると下のようにCloud9でHTMLファイルのソースを書き換えプッシュすることでCodePipeLineが検知してその変更をS3バケットに反映させることができるようになる!!!

おわりに

エラーで躓きそうになりましたが、楽しくできました!!
また今度はEC2上にCI/CD環境の構築をしていこうと思います!!!!

(。・ω・)ノ゙バイバイ