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

nginx上でのcakePHP

cakePHP上をCentOS,nginx上で公開するときのメモなどを。 cakeのversionは2.5です。 /var/www/html/sampleapp直下にプログラムを配置するものとします。 …

no image

Apacheでのリバースプロキシ

jenkinsの復習をしていたんですが、持ってたVPSサーバーにjenkins環境を構築、jenkinsのURLをサブドメインにし、アクセスした時に別ポートに飛ばす仕様にしました。 前提条件として下記 …

no image

Firebaseでのミニアプリデプロイ

KVS的なDBを使うかもしれず、firebaseの復習をしております。以前、firebaseのサンプルなどちょこちょこ動かしましたが、firebaseに登録をしただけでデプロイまではしておりませんでし …

no image

VPSのCentOS上にVirtualBox+Vagrantをインストール

普段使っているPCにVirtualBox+Vagrantをいれることはあったんですが、VPS上のCentOSに仮想環境を入れたいとの要件があり、試してみました。 結論からすると結局できなかったんですが …

no image

セッションハイジャック

今回はセッションハイジャックについて。WEB系では必須といえるでしょう。 Contents1 セッションハイジャックとは?2 被害3 対策4 Cookieについて4.1 Domain4.2 Path4 …

アーカイブ