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

ansible host指定,変数の外だし,ユーザー追加

Ansibleにてhostユーザーやユーザーの追加などす。 Contents1 ホストの指定2 ユーザーの追加2.1 変数を別ファイルに2.2 パスワードのハッシュ化2.3 パスワードなしでsudo2 …

no image

ログ抽出コマンド特集 その2 シェルスクリプトの算術計算、配列とループ

前回の続きですが、ログを収集し、分布(80%台が~%、70%台が~%)を出したいとします。 Contents1 ロジック2 ソース3 気づいたこと4 参考リンク ロジック ロジックは以下のような流れに …

no image

AWSのSNSについて

AWSについてここ2年ぐらい触っていますが、以前の現場ではリーダーの方が色々やられたおかげで根本的なところが理解できておらず、家でアカウントを作ってコツコツとやってます。 今回はSNSについて。 基本 …

no image

セッションハイジャック

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

no image

Let’s Encryptによるhttps化

以前下記の記事で、herokuでLet’s Encryptを使おうとしたのですが、結局使うことがありませんでした。 herokuでのLet’s Encrypt設定 どこかで使おうか・・と考 …

アーカイブ