omuronの備忘録

個人的な備忘録

AWS H4B「AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!」受講メモ

pages.awscloud.com

AWS Hands-on for Beginners「AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!」が、初心者向けでわかりやすかったので、そのときの作業メモです。

作業内容

CodeCommit

リポジトリ test-repository 作成。

IAM Role

EC2 用 S3 Full Access ロール S3FullAccess4EC2 作成。

EC2

デプロイしたい Amazon Linux2 インスタンスを適当に作成して S3FullAccess4EC2 Role 紐付け。
デプロイ時に名前がわかるように Name タグに test-ec2 とつける。

CodeDeploy Agent

CodeDeploy を利用したいのでエージェントを ssh 接続してインストール。

sudo yum install ruby
wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto

S3

アーティファクト保存用バケット test-bucket-artifact 作成。

CodeBuild

dev-build-test 作成して、以下の設定を行う。

  • Source
    • AWS CodeCommit
    • test-repository
    • Branch
      • develop
  • Environment
    • Amazon Linux2
    • Standard
      • 最新版
  • Artifact

IAM Role

作成された codebuild-dev-build-test-service-roleAWSCodeDeployDeployerAccess をアタッチ。

buildspec.yml

以下の内容で作成。

version: 0.2
phases:
  build:
    commands:
      - aws deploy push --application-name dev-app-test --s3-location s3://test-bucket-artifact/dev-artifact.zip --source .
artifacts:
  files:
    - '**/*'
  base-directory: .

CodeDeploy

次項の Role を事前に作成して dev-app-test という名前の EC2 向けアプリケーションの作成。
appspec.yml を作成して、 test-repository にコミット。
/tmp にデプロイして確認する。
root ユーザーではなく、ec2-user に chown する。

version: 0.0
os: linux
files:
  - source: /
    destination: /tmp
permissions:
  - object: /
    pattern: "**"
    owner: ec2-user
    group: ec2-user

IAM Role

AWS サービス - CodeDeploy - CodeDeploy から AWSCodeDeployRole を紐付けたロール codedeploy-dev-test-app-service-role 作成。

Deploy group

  • dev-web
  • Role
    • codedeploy-dev-test-app-service-role
  • Enviroment
    • EC2
      • Name : test-ec2
  • Agent install
    • None
  • Load balancer
    • Off

Deploy

  • アプリケーション からラジオボタンで選択して アプリケーションをデプロイする
    • デプロイグループ
      • dev-web
    • リビジョンの場所
      • s3://test-bucket-artifact/dev-artifact.zip

CodePipeliine

dev-pipeline を作成して、以下の設定を行う。

  • Source
    • AWS CodeCommit
    • test-repository
    • develop
  • Build stage
    • AWS CodeBuild
    • Project name
      • dev-build-test
  • Deploy provider
    • AWS CodeDeploy
      • dev-app-test
      • dev-web

パイプラインの動作確認

develop ブランチを test-repository に push するとパイプラインが動作して、リポジトリ配下の内容すべてが /tmp にデプロイされる。

所感

CodeDeploy はエージェントいれたり事前準備も多いため、 CodeBuild だけですますことが多い状況でした。
そのため、CodePipeline も利用せずにいたのですが、CodeCommit からフックしようとすると CodePipeline が必須という仕様。
GitHub とか BitBucket 利用なら WebHook できるのに、CodeCommit を使う場合は CodePipeline 経由の必要があるため、ついでに CodeDeploy も試してみましたが、思ったよりも簡単に EC2 にデプロイできることが確認できました。