1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CodeDeployについてまとめてみた

Posted at

はじめに

AWS CodeDeployについて理解を深めるためにまとめてみました。

AWS CodeDeployとは

名称未設定.drawio.png

アプリケーションを構成するファイル群のデプロイを自動化するサービス
以下の特徴があります。

  • フルマネージドでソフトウェアのデプロイを自動化
  • Amazon EC2、AWS Lambda、オンプレミス サーバー、コンテナへの自動的なデプロイメント
  • アプリケーションの複雑なアップデートの実施
  • アプリケーションのデプロイ中のダウンタイムを回避
  • エラーを検知すると自動的にロールバックを実行

主要コンポーネント

  • アプリケーション

    • デプロイするアプリケーションを一意に識別する名前
  • コンピューティングプラットフォーム

    • アプリケーションがデプロイされるプラットフォーム

      • EC2/オンプレミス
      • AWS Lambda
      • Amazon ECS
  • デプロイグループ

    • デプロイ環境の定義
    • Auto Scalingグループ
    • タグのグループ
      • EC2インスタンス
      • オンプレミスインスタンス
    • ECSサービス
  • デプロイタイプ

    • EC2の場合In-PlaceもしくはBlue/Green
    • Lambda、ECSの場合はBlue/Green

In-Place Deploy(インプレイスデプロイ)
既存のインフラストラクチャやリソース上に新しいバージョンのアプリケーションを直接デプロイする方法

Blue/Green Deploy(ブルー/グリーンデプロイ)
新しいバージョンのアプリケーションを既存の環境(Blue)とは別の環境(Green)にデプロイし、切り替えることでデプロイメントを行う方法

  • デプロイ設定

    • どのようにデプロイするかを定義したもの
    • デプロイする割合やデプロイ成功、失敗の条件が異なる
    • 独自のデプロイ設定を作成することも可能
  • リビジョン

    • EC2

      • ソースコード、Webページ、スクリプト等と AppSpec ファイルをまとめたアーカイブ
    • Lambda

      • Lambda デプロイ用の AppSpec ファイル
    • ECS

      • ECS デプロイ用の AppSpec ファイル

AppSpecファイル(Application Specification File)
AWS CodeDeployを使用してアプリケーションをデプロイする際に使用される設定ファイル

記入例.yaml
version: 0.0
Resources:
  - TargetService:
      Type: AWS::ECS::Service
      Properties:
        TaskDefinition: "arn:aws:ecs:us-east-1:111222333444:task-definition/my-task-definition-family-name:1"
        LoadBalancerInfo:
          ContainerName: "SampleApplicationName"
          ContainerPort: 80
# Optional properties
        PlatformVersion: "LATEST"
        NetworkConfiguration:
          AwsvpcConfiguration:
            Subnets: ["subnet-1234abcd","subnet-5678abcd"]
            SecurityGroups: ["sg-12345678"]
            AssignPublicIp: "ENABLED"
        CapacityProviderStrategy:
          - Base: 1
            CapacityProvider: "FARGATE_SPOT"
            Weight: 2
          - Base: 0
            CapacityProvider: "FARGATE"
            Weight: 1
Hooks:
  - BeforeInstall: "LambdaFunctionToValidateBeforeInstall"
  - AfterInstall: "LambdaFunctionToValidateAfterInstall"
  - AfterAllowTestTraffic: "LambdaFunctionToValidateAfterTestTrafficStarts"
  - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeAllowingProductionTraffic"
  - AfterAllowTraffic: "LambdaFunctionToValidateAfterAllowingProductionTraffic"

AppSpecファイル例 より引用

  • ターゲットリビジョン

    • リポジトリにアップロードした直近のリビジョン
    • デプロイグループへデプロイする対象
    • 自動デプロイで取得されるリビジョン

ターゲットリビジョン
デプロイ対象となるアプリケーションの特定のバージョンを指す。

  • サービスロール

    • CodeDaployに付与するIAMロール
    • CodeDaployからAWSリソースを操作するために必要
    • 管理ポリシー
      • AWSCodeDeployRole
      • AWSCodeDeployRoleForLambda
      • AWSCodeDeployRoleForLambdaLimited
      • AWSCodeDeployRoleForECS
      • AWSCodeDeployRoleForECSLimited
  • IAMインスタンスプロファイル

    • EC2インスタンスに付与するIAM ロール
    • S3から配布物を取得できるようにする

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?