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

パス名パラメータの未チェック・ディレクトリトラバーサル

本日もセキュリティ関係のネタを少々。ディレクトリ・トラバーサルという攻撃です。 Contents1 ディレクトリ・トラバーサルとは?2 被害3 対策4 参考リンク ディレクトリ・トラバーサルとは? g …

no image

Azureの復習

今年からAzureの案件にはいっていろいろとインフラ周りを整理しておりますので、復習も兼ねて少しまとめておこうかと思います。 とりあえず出てくる重要な概念やサービスを五月雨に・・・ Contents1 …

no image

HTTPヘッダ・インジェクション+オープンリダイレクタ

Contents1 HTTPヘッダ・インジェクションとは?1.1 被害(ほぼクロスサイト・スクリプティング攻撃による脅威と同じ脅威)1.2 対策2 オープンリダイレクタとは?2.1 対策 HTTPヘッ …

no image

OSI参照モデル イーサネットとMACアドレス

OSI参照モデルのレイヤー1とレイヤー2で必要不可欠な規格がイーサネットです。 有線ネットワークであればほぼこの規格を採用していると思って間違いないでしょう。 MACアドレスでコンピューターを識別する …

no image

webサーバーのログの見方

サーバー監視の基礎となるWebサーバーのログ(主にApache)の見方について少し書いてみようと思います。Apacheで解説しますが、nginxでもほぼおなじです。 Contents1 モジュール読み …

アーカイブ