■ はじめに
https://dk521123.hatenablog.com/entry/2020/01/23/231827
の続き。 AWS Code シリーズ の CodeDeploy を扱いそうなので 予習しておく
目次
【1】CodeDeploy とは? 【2】特徴 【3】対象サービス - デプロイ対象先 1)使用上の注意 【4】デプロイ方式 1)AllAtOnce 2)HalfAtATime 3)OneAtATime 【5】AppSpecファイル(appspec.yml) 【6】サンプル 例1:AWS Lambda のデプロイ向けの AppSpec ファイル
【1】CodeDeploy とは?
* アプリケーションの自動デププロイを管理するためのサービス
公式サイト
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/welcome.html
【2】特徴
* 指定した複数台のサーバに対して、同じデプロイが実行できる * AppSpecファイル(詳細は後述)により、 デプロイ前後に自分で作成したスクリプト処理を実行可能
【3】対象サービス - デプロイ対象先
1)EC2 2)Lambda 3)Amazon ECS (DockerコンテナをEC2上で管理できるサービス) 4)オンプレミスサーバ
1)使用上の注意
* CodeDeploy エージェント を インストールしておく必要がある
【4】デプロイ方式
* デプロイ方式は、以下の通り。 ~~~~~~~ 1)AllAtOnce 2)HalfAtATime 3)OneAtATime ~~~~~~~
1)AllAtOnce
* 全サーバを同時にデプロイ + メリット:リリース時間が短くなる + デメリット:システム全体でダウンタイムが発生
2)HalfAtATime
* 半分のサーバをデプロイ + メリット:ダウンタイムを発生しづらくリリース時間が比較的短くなる + デメリット:高負荷の処理が発生しない時間にリリースするなどの考慮が必要
3)OneAtATime
* 1つづつサーバをデプロイ + メリット:システムをダウンする可能性を低くより安全にリリースできる + デメリット:リリース時間が長くなる
【5】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
【6】サンプル
* appspec.yml のサンプルを書いてみた。
例1:AWS Lambda のデプロイ向けの AppSpec ファイル
# 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