skillup

技術ブログ

サーバー・ネットワーク

CodeDeployに関して

投稿日:2022年4月3日 更新日:

近年のプロジェクトではアプリのデプロイに関して、サーバーに入ってgitコマンドを打つようなケースは減ってきており、何らかのデプロイツールを使ってやることが一般的。

CIツールを使ってデプロイ(git仕様)

一番簡便な方法としてはCIツールからSSHでサーバーにログインして、CIツールからgitコマンドを入力させるもの。

CIにSSHキーを登録すればすぐにできるため、非常に簡便。

CIツールを使ったオートデプロイに関して

が、以下のようなデメリットもあり。

  • そもそもサーバーにgitが入っていないとNG。近年ではサーバーレスになっていることも多く、そもそもgitをインストールしないといけない
  • サーバー構成が複数になっていた場合、コマンドが複雑になる、完全な同時タイミングのデプロイは難しい?

一般的にはストレージサービスに成果物をzipで固めて、配置しておき、それをデプロイするといったようなケースが一般的かと思います。

CodeDeployを使ったデプロイ

AWSのデプロイ自動化ツールのようで、EC2のような一般的なサーバーのみならず、lambdaなどもあり。

メリットに関して。

  • デプロイ前、後のコマンドを記載し、実行させることができる
  • 複数のサーバー群に対してのデプロイを一気に行うことができる
  • デプロイ履歴をログに残しておくことができる
  • ロールバック機能などもある

成果物自体はS3などにあげておき、ここから取り出すというケースが一般的。

イメージとしては、以下のような感じ

  • CodeDeployからEC2に命令を送る
  • EC2がS3に成果物を取りに行く
    (CodeDeployが取りに行かせていると言ったほうが正確かも)
  • 実際に成果物をデプロイし、デプロイ前後のコマンドを実行

実際の構築作業

大まかな流れに関して

  1. CodeDeployでアプリケーションとデプロイグループの作成(タスク作成)
  2. CodeDeployのIAMロールを作成し、付与
  3. EC2からS3にアクセスできるように、ポリシーを追加し、EC2にIAMロールを付与
  4. EC2がCodeDeployを実行できるように(CodeDeployからの指令を受け取れるように)、CodeDeployエージェントをインストール
  5. ソース側にデプロイ時の手続きについて作成(appspec.ymlとシェルスクリプト)。
    appspec.yml・・パーミッションやデプロイ先
    シェルスクリプト・・php artisanなどのアプリのインストールコマンド
  6. CIツール起動時にCodeDeployを叩く

ちなみに上のような流れに関しての具体的なAWSの設定方法やインストールコマンドは以下の教材の6章に非常に丁寧に書かれてます。(全てスクショが入っているので非常にわかりやすい・・・CIツールから直でデプロイする手段についても記載あり。)

ここまでのクオリティの教材はすごい・・・・(アフィリ&ステマではありません)

Laravel × CircleCI × AWSで学ぶCI/CD

-サーバー・ネットワーク
-,

執筆者:


comment

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

関連記事

no image

SSLの設定に関して

実務でサーバーにSSLの設定をすることがあったので書いておきます。 Contents1 SSLとは?1.1 ファイルの設定方法2 設定方法全般に関して2.1 秘密鍵2.2 サーバー証明書と中間証明書の …

no image

nginxによる一般的なwebサーバーの構築

今回は一般的なwebサーバーでよく利用するnginxの基本機能を紹介します。 サーバー・インフラ徹底攻略の3章になります。 Contents1 バーチャルホストを利用する1.1 IPアドレスベースのバ …

no image

docker-composeに関して

dockerで環境構築する場合は基本的に下記のような流れをとると思います。 それぞれの出来合いのイメージをpull イメージに様々なライブラリをインストール それらをコンテナとして起動&連携 …

no image

nginxの設定&php-fpmインストール

本日、久しぶりにPHPのWebアプリを別サーバーに移行したのですが、nginxの設定でかなり手間取りましたのでちょっと記録しておきます。 Contents1 nginxの設定1.1 インストール1.2 …

no image

dockerでの環境構築 〜コンテナ作成し、実作業ができるまで(mac編)

今や環境構築の保存や移行などが比較的自由にできるようにはなってきていると思います。 自分の場合は未だにvagrantのイメージフォルダを移行してやっていますが(汗)。 参考リンク vagrantで仮想 …

アーカイブ