AWS CodeDeployのappspec.ymlの超基本的な書き方




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

AWS CodeDeployとは

CodeDeployはAWSのマネージドサービスで、EC2とオンプレミスのサーバーやLambdaに対してソースコードやビルドした成果物をデプロイすることができます。

EC2とオンプレミスサーバーへのデプロイにはインプレースデプロイとBlue/Greenデプロイの2種類を選択できます。

配布物の元はS3とGitHubから選択できますが拡張子がzip、tar、tar.gzじゃないといけないため必然的にS3になるかと思います。

これらのデプロイのルールを決めるのがappspec.ymlになります。どっちの種類であってもappspeck.ymlは必要になります。

appspec.ymlで決めることができるのは下記になります。

  1. デプロイするファイルを選択でき、どこに配置するか決めることができる。
  2. デプロイの前後など細かいステップに対して任意のコマンドを実行できる。

デプロイするファイルの選択と配置先

まずS3にアップしているsample.zipファイルの中身を下記とします。sample.jarはすでにビルド済みのファイルで、start.shはこれを起動するコマンドを記述しているとします。

appspec.ymlの中身は下記です。

上から順番に説明すると

  • version:これはappspec.ymlのバージョンです。
  • os:デプロイ先のOS
  • files:デプロイするファイルの選択と配置先を決めます。
  • hooks:デプロイの各タイミングでコマンドを実行できる

filesについて

filesのsourceはsample.zipの中を指定していて、destinationはデプロイ先のサーバー上のパスを指定します。

なので、上記appspec.ymlの場合だと、S3にあるsample.jarをサーバーの/var/appディレクトリに配置することになります。

overwriteはすでにファイルがあった場合でも新しく上書きしてくれる設定です。

hooksについて

まずhooksで扱えるタイミングですが、かなり多くあり複雑です。下記は公式ドキュメントに記載されているものです。

hooksで指定できるイベント種類は全部で13個あり、デプロイの種類とインスタンスの状態によって使えるイベントが変わってきます。

今回は超シンプルにデプロイしたアプリケーションを起動するだけなのでApplicationStartイベント時にjarを起動するスクリプトを実行する設定としています。

locationで指定するパスはsample.zipの中に対してなのでstart.shとなります。

まとめ

AWS CodeDeployは便利な反面、appspeck.ymlの他にも設定項目が多く使い慣れるまでには自分でいろいろ触って慣れるしかありません。

しかし、一度設定してうまく動くようになればそのあとのメンテナンスコストが下がるので是非試してみてください。

合わせて読みたい







コメントを残す

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