AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!のハンズオンをやってみた

2020.09.19

CI/CD入門ハンズオン

AWS DevOps Engineer Professionalの勉強のためにCodeシリーズを触ろうと思ったら、ほどよいハンズオンを見つけたのでやってみました。

  • AWS Codeシリーズをまとめて学習できるハンズオン
  • git pushからのS3とEC2上にファイルが自動的に配置されるCI/CDを体験
  • 動画見ながら手を動かしても2時間で終わりました

ハンズオン動画・資料

AWS Hands-on for Beginners AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!

Agenda
1. 今回のハンズオンので構築する構成の紹介 + ハンズオンで登場するサービスの紹介
2. S3 をデプロイ先とした、CI/CD 環境を構築する【事前準備 + CodeCommit編】
3. S3 をデプロイ先とした、CI/CD 環境を構築する【CodePipeline 編】
4. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【事前準備編】
5. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeBuild 編】
6. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeDeploy 編】
7. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodePipeline 編】
8. 削除手順の紹介、本シリーズのまとめ、Next Step のご案内

学べること

S3とEC2にWEBサイトを作り、手元(Cloud9)でWEBサイトのソースファイルを編集してgit pushすると後は自動的にS3のファイルを更新と、EC2上のファイルを更新しWEBサイトが更新されるといった流れを手を動かして学べました。


▲画像はハンズオンのアンケート回答後にダウンロードできる資料より

登場する主なサービス

  • AWS CodeCommit
  • AWS CodeBuild
  • AWS CodeDeploy
  • AWS CodePipeline

ハンズオンの流れ

ハンズオン動画を見て説明聞きながら進めていきます。手を動かしても2時間で終わりました。 動画を見ながらマネジメントコンソールを操作するのでモニターが2枚あると進めやすいと思います。 ハンズオン内で作成するファイルを事前にダウンロードできる安心設計です。ダウンロードしたファイルを使えばつまづくこともないでしょう、動画内の解説も丁寧です。 ちなみに複雑な設定はしなかったためindex.htmlと、S3バケットポリシー(sample-bucketpolicy.json)をダウンロードしたファイルのまま使いましたが、他のファイルはハンズオン動画内の説明から公式ドキュメントを参照し必要なコードのコピペと軽微な変更だけで済んだので利用しませんでした。

手を動かした内容まとめ

  1. ハンズオンの概要説明
  2. CodeCommitにリポジトリ作成と、ファイルの編集環境としてCloud9を準備
  3. CodePipelineの設定と、git pushからのS3にファイルが置かれることを確認
  4. CodeDeployのデプロイ先WEBサーバ用EC2インスタンスを準備
  5. CoudeBuildの設定
  6. CodeDeployの設定と、CodeBuildからのCodeDeployを手動テスト
  7. CodePipelineの設定し、git pushからのCodeBuild → CodeDeployを楽しむ
  8. 作ったリソースのお片付け

メモ書き

ハンズオンを進めた際のメモと、エラーの切り分け時のメモを残します。

02. S3 をデプロイ先とした、CI/CD 環境を構築する【事前準備 + CodeCommit編】
  • 動画内の説明で登場したリンク先

Setup steps for HTTPS connections to AWS CodeCommit repositories on Linux, macOS, or Unix with the AWS CLI credential helper - AWS CodeCommit

04. S3 をデプロイ先とした、CI/CD 環境を構築する【CodePipeline 編】
  • 動画内の説明で登場したリンク先

Install the CodeDeploy agent for Amazon Linux or RHEL - AWS CodeDeploy

05. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeBuild 編】
  • 動画内の説明で登場したリンク先

Build specification reference for CodeBuild - AWS CodeBuild

06. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeDeploy 編】

初回のCodeBuildからのCodeDeployのデプロイに失敗しました。エラーメッセージからappspec.yml内の記述したaws deploy push...コマンドの入力間違いかと思い切り分けしました。

エラーメッセージ

[Container] 2020/09/19 02:32:17 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: aws deploy push --application-name cicd-handson-app --s3-location s3://ohmura-cicd-handson-artifact/artivact.zip --source src. Reason: exit status 255
CodeBuildのビルドログ

赤い文字が上記エラーメッセージ

aws deploy push...の記述ミスでありませんでした。 切り分けのためCloud9のターミナルにaws deploy push...のコマンドをコピペで実行。

/home/ec2-user/environment/cicd-handson/src/appspec.yml was not found

appspec.ymlがない...だと...?

原因はappspec.ymlファイル名をタイポしてました。正しいスペルに修正。事前にダウンロードしたファイルの中からappspce.ymlを素直に使えばこのようなトラブルには合わないです...

$ ll /home/ec2-user/environment/cicd-handson/src/
total 8
-rw-r--r-- 1 ec2-user ec2-user  84 Sep 19 02:25 appspce.yml # 今回のエラー原因
-rw-r--r-- 1 ec2-user ec2-user 156 Sep 19 01:20 index.html

おわりに

久しくCodeシリーズを触っていなかったのでAWS DOPの試験勉強もかねて手を動かしてみました。テキパキ進めたら2時間もかからないと思います。手軽に試せて良かったです。

その他 AWS Hands-on for Beginnersのご紹介

今回のCI/CDハンズオン以外にもAWSハンズオン資料が公開されておりますのでぜひご覧ください。

実際に手を動かして学ぶ!AWS Hands-on for Beginners のご紹介 | Amazon Web Services ブログ
ハンズオン資料 | AWS クラウドサービス活用資料集

以上、コンサル部の大村@網走でした。