kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

AWS CodeDeployを使う

deployの自動化は重要ということで、aws codedeployに活躍してもらうことにしました

今回のdeployはec2へのdeploy

github -> codedeploy -> ec2インスタンス

codedeploy

AWS CodeDeploy は、Amazon EC2AWS Fargate、AWS Lambda、オンプレミスで実行されるサーバーなど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化する、フルマネージド型のサービスです。

awsのdeployサービスです。

設定の流れ

  • ec2にリリース用のタグ設定
  • codedeployのアプリケーション作成
  • codedeployのデプロイグループ作成
  • codedeployのデプロイ画面よりデプロイグループを利用して、どのソースからdeployをするか設定し実行

準備

ec2のリリースしたいインスタンスにタグを付与

タグに該当するインスタンスへdeployが行われるため、判断できればなんでもいい。

f:id:kazu22002:20210719071438p:plain

aws consoleでcodedeploy のデプロイグループ作成

codedeployのアプリケーションとデプロイグループ作成

このデプロイグループでどのインスタンスにリリースを行うか設定ができる

f:id:kazu22002:20210719071514p:plain

新規でアプリケーション作成

f:id:kazu22002:20210719071613p:plain

f:id:kazu22002:20210719071642p:plain

デプロイグループ作成

f:id:kazu22002:20210719071928p:plain

名称、サービスロールを設定し、環境設定でリリースするインスタンスのタグを設定

f:id:kazu22002:20210719072128p:plain

エージェントの設定。更新にしておくほうがいいと思うが、最初は1回だけでやってみる。

f:id:kazu22002:20210719072207p:plain

f:id:kazu22002:20210719072230p:plain

エージェントの導入

ec2側にエージェントが入っている必要があり、エラーが出る場合は手動でいれたほうがいい。

docs.aws.amazon.com

コードにappspec.ymlを追加

version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/app

sourceに元のファイル, destinationにサーバーの配置場所を書きます。

deployの作成

デプロイタグよりデプロイ作成

f:id:kazu22002:20210719072721p:plain

deployするコードを指定する

Githubのコードでリリースする場合、最初にGithubに接続からGithubにサインインすることで、アプリケーション設定とトークン発行が行われる

f:id:kazu22002:20210719072710p:plain

リポジトリ名はアカウント名から必要 例)kazu22002/TestApp

コミットIDはgithubリポジトリから確認して入力

f:id:kazu22002:20210719073340p:plain

「デプロイの作成」で実行される

デプロイの履歴で実行されていることが確認できれば、とりあえず実行まで完了

まとめ

とりあえず実行までやってみました。実際のアプリケーションではもっと工夫が必要になりますが、コードをサーバーにリリースする。という部分がサービス任せになり、自動化への準備ができた感じです。

自動化する場合は、githubへコードが上がったことをトリガーにリリースが作成する仕組みが必要になります。

この辺りはcodepipelineやcircleciなど色々ありますね。

個人的には、まだ画面から設定を作りますが、awsコマンドで作るのは便利ですね。あまり多用していないため書き方がわかっていないだけですが、コマンドだと画面構成が変わっても使えるから後々わかりやすいかもしれないですね。

次は実際のアプリの場合にやったことを書いてみます。

参考

docs.aws.amazon.com

過去のcodedeploy記事

kazu22002.hatenablog.com

kazu22002.hatenablog.com