【AWS】CodeDeploy ~ 入門編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/01/23/231827

の続き。
AWS Code シリーズ の CodeDeploy を扱いそうなので
予習しておく

■ CodeDeploy とは?

* アプリケーションの自動デププロイを管理するためのサービス

公式サイト
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/welcome.html
特徴

* 指定した複数台のサーバに対して、同じデプロイが実行できる
* AppSpecファイル(詳細は後述)により、
 デプロイ前後に自分で作成したスクリプト処理を実行可能

デプロイ対象先

* EC2
* オンプレミスサーバ
* Lambda
* Amazon ECS (DockerコンテナをEC2上で管理できるサービス)

■ AppSpecファイル(appspec.yml)

* AppSpec file 
 => application specification file
 => アプリケーション仕様ファイル

* デプロイの詳細を定義したファイル(ファイル形式は、YAMLとJSON)
 => CodeBuild でいう「buildspec.yml」的な?
  (buildspec.yml については以下の関連記事を参照のこと)

https://dk521123.hatenablog.com/entry/2020/01/21/221122

* デプロイ対象先によって、構造が変わるっぽい
(以下の公式サイトを参照)

https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-structure.html

公式サイト

https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file.html

サンプル :appspec.yml

例:AWS Lambda のデプロイ向けの AppSpec ファイル
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-example.html#appspec-file-example-lambda

# AppSpec file のバージョン(固定)
version: 0.0

# デプロイする Lambda 関数に関する情報を指定
Resources:
  - myLambdaFunction:
      Type: AWS::Lambda::Function
      Properties:
        # name – 必須。これはデプロイする Lambda 関数の名前
        Name: "myLambdaFunction"
        # alias – 必須。これは Lambda 関数のエイリアスの名前
        Alias: "myLambdaFunctionAlias"
        # currentversion – 必須。
        # トラフィックが現在指している Lambda 関数のバージョン
        CurrentVersion: "1"
        # targetversion – 必須。
        # トラフィックの移行先の Lambda 関数のバージョン
        TargetVersion: "2"

# デプロイを検証するために
# 特定のデプロイライフサイクルイベントで実行する Lambda 関数を指定
Hooks:
  # BeforeAllowTraffic –
  # トラフィックがデプロイされた Lambda 関数のバージョンに
  #  移行する前にタスクを実行
  - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift"
  # AfterAllowTraffic –
  # トラフィックがデプロイされた Lambda 関数のバージョンに
  #  移行した後でタスクを実行
  - AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift"

参考文献

https://dev.classmethod.jp/articles/cm-advent-calendar-2015-aws-re-entering-codedeploy/

関連記事

CodePipeline ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/23/231827
CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/21/221122
AWS CloudFormation ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/26/224812