04. Code Deploy

01. Code Deploy

01) 기본 개념

(01) 개념

  • Code Deploy 는 소스코드 자체를 혹은 빌드 된 아티팩트들을 배포하는데 사용하는 도구 이다.
  • 배포 위치는, EC2, ECS, EKS 등에 배포가 가능하며, 단순 웹 호스팅 서비스 내에도 배포가 가능하다.

(02) 설정 방법

  1. [IAM] 관련 기본 설정이 필요하다
    • 사용자가 CodeDeploy 를 수행할 수 있는 권한이 있는지 [User]
    • 내가 배포할 서비스가 S3 나 여러 작업들의 대한 권한이 있는지 [Rule] -> [AWS Service]

(03) 기본 적인 설정 방식

  1. [배포 버전 1, 2, 3] 중 버전을 선택한다.
  2. 배포 방식을 선택 한다. ( 롤링 업데이트, 블루 그린 , 카나리 배포등 )
  3. 배포 위치를 선택한다. (EC2, EKS , ECS 등)

(04) 부가적인 확장 기능

Event Bridge를 활용해서, 빌드가 끝나면 동작을 시키거나, 결과를 SNS, Lambda 로 전달할 수 있다.

02) 배포 메커니즘

(01) 배포 단계

(02) AppSpec [앱 배포 Yaml ]

AppSpec File example – AWS CodeDeploy (amazon.com)

Hooks:
  - BeforeInstall: "BeforeInstallHookFunctionName"
  - AfterInstall: "AfterInstallHookFunctionName"
  - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName"
  - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName"
  - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"

배포를 수행하면서 필요한 사안의 대해서 위의 기준으로 작성한다.

[샘플 코드]

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"

(03) Hooks

배포 과정, 중간 중간에 추가적인 작업들을 수행하도록 도와주는 방식을 수행할 수 있다.

42 thoughts on “04. Code Deploy”

Leave a Comment