catch-img

Code3兄弟?4兄弟?いえ、きっと……

こんにちは、ラーニングサービス本部 テクニカルトレーニング第1部の三浦です。
Amazon Web Services(AWS)の認定インストラクターをしています。

 

さて、AWSの開発系ツールのサービス群、「CodeCommit」、「CodeDeploy」、「CodePipeline」は、しばしば「Code3兄弟」と呼ばれることがあります。これに2016年「CodeBuild」というサービスも加わり、「Code4兄弟」?と言われることも。

インフラ・運用系のエンジニア出身のわたくし、開発系ツールにはあんまりご縁がないかなぁと、実は割と遠巻きに眺めていたのですが、「AWS認定デベロッパー - アソシエイト」資格を取得したかったこともあり(2018年10月に無事取得)、ツールの学習がてら「Cloud9」とともに使い始めてみました。そうしたら、あら、これは便利♡ ということで、この2018年はこれらのツールにもっぱらお世話になっています。

私のように、「開発系ツールかぁ」と敬遠している方もいらっしゃるかもしれません。そこで本日は、Code兄弟思ったより気軽に、そして便利に使えますよ、という記事を書いてみました。

 

インフラエンジニアにもCode兄弟&Cloud9はとってもお役立ち

私はAWS認定トレーニングのうち、「AWS Technical Essentials 1」「AWS Technical Essentials 2」という基礎コース(※)に加えて、「Systems Operations on AWS」という運用担当者向けの中級コースを担当しています。

後者のコースでは、AWS CLI(Command Line Interface)を使用した各種の管理作業や、AWS CloudFormationのJSONのテンプレートを使用したAWSリソースの展開手法などを学習します。

そこで、CLIやJSONテンプレートのサンプルのコードを作成して、デモンストレーションを行う準備をするわけなのですが、

教室のPCで書いていたコードを忘れて帰ってしまったり……
家でデバッグしたコードをS3にアップロードし忘れて来てしまったり……
業務用PCにだけ作業途中のコードがあり、別の場所で作業の続きをできなかったり……

(忘れてばっかり!)

 

そんな私を助けてくれたのが、Cloud9とCodeCommit、そしてCodePipelineとCodeBuildです。「Infrastructure as Code」と言われる昨今、インフラエンジニアにとっても、これらの開発ツールは非常に役立ちます。

 

※2021年4月より、両コースは「AWS Cloud Practitioner Essentials」と「AWS Practical Startup Workshop 」にそれぞれ変更となりました。

 

やりたかったことと解決策

<やりたかったこと>

  1. どこからでもコードを編集したい
  2. 更新したコードを手軽にアップロードしたい
  3. テスト用と受講者公開用を分けて公開・管理したい
  4. 失敗したとき手軽にロールバックしたい

<解決策>

 (1) Cloud9

さまざまな言語に対応した統合開発環境です。

ブラウザからインターネットに接続できて、AWSのマネジメントコンソールにサインインできれば、あとはいつでも、どこからでも、前回の作業状態の続きから再開できます。使い始めたら驚異的に便利でした。東京リージョンではまだサービスリリースされていないので、ダッシュボードはシンガポールリージョンを利用しています。本体(EC2)は東京リージョンです。

 

(2) CodeCommit

AWS上にgitレポジトリを作成・管理できます。

Cloud9上で更新したコードは、gitコマンドを使って差分をレポジトリにアップロードできます。いつ・何を更新したのかの履歴を確認でき、バージョン管理がとても楽になりました。

 

(3) CodePipeline & CodeBuild

CodePipelineを使えば、継続的なデリバリーを自動化できます。

CodeCommitの更新と連動してCodePipelineが動作し、CodeBuildやCodeDeployを順次起動していくことができます。

 

CodeBuildは、CodeCommitなどのレポジトリに配置されたコードを、設定ファイル(buildspec.yml)で指定されたビルドコマンドで、実行可能プログラムにビルドし、テストしてくれるツールです。

今回やりたいことはjsonやシェルスクリプトなどのテキストファイルをS3に配置するだけなので、CodeBuildのbuildspec.ymlには、各言語用のビルドコマンドを指定する代わりにAWS CLIコマンドで 'aws s3 sync' を指定し、CodeCommitのレポジトリのファイル群をS3へ同期しています。

また、今回はEC2やLambdaへのデプロイは必要ないので、CodeDeployは出番なしです。

 

(4) S3(Versioning)

堅牢性の高いインターネットストレージ、AWSでも代表格のサービスですね。

S3バケットは2つ用意しています。1つはテスト用、もう1つは本番用(受講者への公開用)です。本番用はバージョニング設定をしておき、もし最新のコードで予期せぬ問題が出たら、旧バージョンへロールバックできるようにしておきます。(幸いにも、まだロールバックが必要な事態には遭遇していません。)

前項でS3へsyncするビルドは実は2パターン用意していて、1回目はテスト用のバケットへ同期し、テスト用バケットで内容を確認後、問題なければCodePipelineを次のビルドへ進めます。2回目のビルドは、テスト用バケットから本番用バケットへの同期を行います。

(2)~(4)の解決のために、参考にしたのは、以下のブログです。

https://aws.amazon.com/jp/blogs/news/continuous-delivery-of-nested-aws-cloudformation-stacks-using-aws-codepipeline/

上記の手順を参考に環境を構築し、当初はローカルPCのgitからCodeCommitにpushしていたのですが、Cloud9を使用することでますます快適になりました!

 

まとめると

全体の構成はこんな感じです。

299_1

 

 

 

Cloud9で編集して、git add/commit/push

299_2

 

 

CodeCommitが更新されます

299_3

 

 

それをトリガに、CodePiplineが動き出し…

299_4

 

 

 

CodeBuildがテスト用のS3バケットにソース一式を同期します。

 

299_5

 

CodePipelineからSNS経由でメール通知がきて…

299_6


「確認」すると、次のBuildが流れ、テスト用バケットから本番用のバケットへsyncします。

299_7

 

299_8

 

 

 

これで、最新のデータがS3に同期され、Webで表示したり、CloudFormationから読み込んだりできるようになりました!コードを編集したら、あとはgit pushするだけ。とても簡単です。

 

Code何兄弟?

さて、こうして今年はCode○兄弟を使い始めたわけですが……利用するにつけ、これ、「CodePipeline」さん…………兄弟の一員っていうより、兄弟たちのお尻を叩いて宿題をしっかりやらせて回る、

「お母さん」

じゃないですかね?という気持ちでいっぱいになります。CodePipelineがくるくる回りだすとなんだか強いシンパシーを感じてしまうのです (本日の執筆担当者は二男児の母)。というわけで、「ウル〇ラ兄弟」、もとい、「Code 4兄弟」は、

「Code 3兄弟 と Codeの母」

が最もしっくりきています。小さく周辺に普及活動を進めてまいりたい所存です。

 

以下蛇足。

(ウル〇ラファンにとってクリスマスといったら、実のところ「ウ〇トラの母」より「ウルト〇の父」なんですね。アドベントカレンダーとしては、記事の落としどころが悩ましい。)

あっ!Codeシリーズには、CodeCommit、CodeDeploy、CodePipeline、CodeBuildに加えて実はもう一つ、〇ルトラの星、ではなく……

CodeStar

というサービスがあるのでした!クリスマスツリーのてっぺんに星を飾るのは、家長の役割だそうです。もうおわかりですね。CodeStarこそ「Codeの父」。

 

皆様、よいクリスマスを!

>> Trainocate Advent Calendar 2018 に戻る​​​​​​

三浦 美緒 (みうら みお) 

トレノケート株式会社 講師。AWS Authorized Instructor Champion / AWS認定インストラクター(AAI) / AWS認定ソリューションアーキテクト - プロフェッショナル / AWS認定DevOpsエンジニア - プロフェッショナル / AWS認定ソリューションアーキテクト - アソシエイト / LPIC レベル1、2 他。 LinuxなどのOSS関連研修の実施経験を積み、近年はAWS認定インストラクターとして活躍。2018年、三浦が担当したAWS認定研修の受講者延べ人数は1,000人超。共著書『Amazon Web Services エンタープライズ基盤設計の基本』(日経BP社)。

無料ダウンロード

オススメコンテンツ

オススメ記事

プロジェクトマネジメント PMP AWS ビジネススキル Microsoft PMBOKⓇ 田中淳子 IT資格 人材育成 山下光洋 AMA Azure コミュニケーション 人材開発用語集 PMBOK®ガイド入門 クラウド ITスキル 新入社員 横山哲也 人材育成応援ラジオ PMP試験問題に挑戦 re:Invent セキュリティ DX Cisco PMBOKⓇガイド 第6版 試験体験記 イベント・セミナー PMBOK®ガイド第6版の変更点 人材開発 AI(人工知能) CCIE CCNA テレワーク ネットワーク リモートワーク 研修 GCP PMP(R)試験問題 第6版対応 PMP合格体験記 Windows Server AWS_Q&A Active Directory DX人材育成 IT人材 IT資格解説 アセスメント キャリア デジタルビジネス ヒューマンスキル リーダーシップ 人気コースランキング 大喜利 部下の育成 Conversations PMの心得 グローバル人材 新入社員研修といえば IoT OJT reinvent2022 リスキリング AI人材 CCNP Security Windows PowerShell クリエイティビティ プログラミング 人材トレンド 試験対策問題 PMP試験対策一問一答 コーチング プロジェクト プロトタイプビルダー 生成AI 1on1 AWS_DiscoveryDay AWSトレーニングイベント GCP無料セミナー Google Cloud Google Cloud Platform G検定 ITインフラ oVice アワード クリティカルシンキング サンプル問題 ステークホルダー ダイバーシティ ディープラーニング ワーケーション 自律 試験Tips Linux PMI Power Platform Python Teams Web会議 cybozudays