AWS CodeDeployとは
CodeDeployはAWSのマネージドサービスで、EC2とオンプレミスのサーバーやLambdaに対してソースコードやビルドした成果物をデプロイすることができます。
EC2とオンプレミスサーバーへのデプロイにはインプレースデプロイとBlue/Greenデプロイの2種類を選択できます。
配布物の元はS3とGitHubから選択できますが拡張子がzip、tar、tar.gzじゃないといけないため必然的にS3になるかと思います。
これらのデプロイのルールを決めるのがappspec.ymlになります。どっちの種類であってもappspeck.ymlは必要になります。
appspec.ymlで決めることができるのは下記になります。
- デプロイするファイルを選択でき、どこに配置するか決めることができる。
- デプロイの前後など細かいステップに対して任意のコマンドを実行できる。
デプロイするファイルの選択と配置先
まずS3にアップしているsample.zipファイルの中身を下記とします。sample.jarはすでにビルド済みのファイルで、start.shはこれを起動するコマンドを記述しているとします。
sample.zip ├── appspec.yml ├── sample.jar └── start.sh
appspec.ymlの中身は下記です。
上から順番に説明すると
- version:これはappspec.ymlのバージョンです。
- os:デプロイ先のOS
- files:デプロイするファイルの選択と配置先を決めます。
- hooks:デプロイの各タイミングでコマンドを実行できる
version: 0.0 os: linux files: - source: sample.jar destination: /var/app hooks: ApplicationStart: - location: start.sh
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の他にも設定項目が多く使い慣れるまでには自分でいろいろ触って慣れるしかありません。
しかし、一度設定してうまく動くようになればそのあとのメンテナンスコストが下がるので是非試してみてください。
合わせて読みたい
おすすめ書籍
AWSをこれから使う初心者の方から現在使っている中級者の方までおすすめできる書籍です。内容はVPC、セキュリティグループ、IAMなどの基本的なことからWEBサービスを作るのに欠かせない、EC2、RDS、Route53などの扱い方が丁寧に説明されています。
中級者向けにはWEBサーバのオートスケール、Cloud Watchを使ったモニタリング方法、セキュリティ等について解説されています。手元において困ったときに読むのにちょうどいい一冊になると思います。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す