프로젝트에서 SAM 템플릿(sam-app/template.yaml)을 열고 HelloWorldFunction 속성 섹션에 다음 줄을 추가합니다.
AutoPublishAlias: live
DeploymentPreference:
Type: Canary10Percent5Minutes
배포 기본 설정 유형
이 워크샵에서는 Canary10Percent5Minutes 전략을 사용합니다. 즉, 트래픽이 2단계로 이동됩니다. 첫 번째 증분에서는 트래픽의 10%만 새 Lambda 버전으로 이동되고 5분 후에 나머지 90%가 이동됩니다. CodeDeploy에서 선택할 수 있는 다른 배포 전략이 있습니다.
Canary10Percent30Minutes
Canary10Percent5Minutes
Canary10Percent10Minutes
Canary10Percent15Minutes
Linear10PercentEvery10Minutes
Linear10PercentEvery1Minute
Linear10PercentEvery2Minutes
Linear10PercentEvery3Minutes
AllAtOnce
Linear 전략은 트래픽이 각 증분(increment) 사이에 동일한 수의 시간 간격으로 동일한 증분으로 이동됨을 의미합니다.
SAM 템플릿 유효성 검사
터미널에서 다음 명령을 실행합니다.
sam validate
그리고 해당사항 반영을 위해 push 합니다.
git add .
git commit -m "Canary deployments with SAM"
git push
Canary 상태 모니터링
배포 중에 코드를 모니터링하는 경우 Canary 배포가 훨씬 더 성공적일수 있습니다. 지정된 CloudWatch 지표가 경보 임계값을 위반한 경우 배포를 자동으로 롤백하도록 CodeDeploy를 구성할 수 있습니다. 모니터링할 일반적인 지표는 예를 들어 Lambda 호출 오류 또는 호출 기간(지연 시간)입니다.
HelloWorldFunction 정의 다음에 리소스 섹션의 template.yaml 파일에 다음 알람 정의를 추가합니다.
CanaryErrorsAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: Lambda function canary errors
ComparisonOperator: GreaterThanThreshold
EvaluationPeriods: 2
MetricName: Errors
Namespace: AWS/Lambda
Period: 60
Statistic: Sum
Threshold: 0
Dimensions:
- Name: Resource
Value: !Sub "${HelloWorldFunction}:live"
- Name: FunctionName
Value: !Ref HelloWorldFunction
- Name: ExecutedVersion
Value: !GetAtt HelloWorldFunction.Version.Version
그런 다음 HelloWorldFunction 정의의 DeploymentPreference 섹션에 다음 줄을 추가합니다.
Alarms:
- !Ref CanaryErrorsAlarm
그럼 잘되는지 확인해 봅니다.
콘솔 CodeDeploy에서 해당 과정을 상세하기 볼수 있습니다.
기다리면 100% 완료된것을 볼 수 있습니다.
'CLOUD > AWS' 카테고리의 다른 글
AWS Lambda 란? (기능, 장점, 단점) (0) | 2021.08.30 |
---|---|
Canary 배포 - Rollbacks (0) | 2021.08.24 |
Canary 배포 개요(SAM) (0) | 2021.08.24 |
AWS codecommit 리포지토리 연결 및 에러 (0) | 2021.08.24 |
Pipeline 만들기(SAM) (0) | 2021.08.23 |
댓글