UpdatePolicy
속성
UpdatePolicy
속성을 사용하여 AWS CloudFormation에서 다음 리소스의 업데이트를 처리하는 방식을 지정합니다.
리소스 업데이트 정책
-
AWS::AppStream::Fleet
리소스의 경우 CloudFormation은 최신 AppStream 2.0 에이전트 소프트웨어로 Image Builder를 업데이트할 수 있습니다. 자세한 내용은 AppStream 2.0 버전 관리를 참조하세요. -
AWS::AutoScaling::AutoScalingGroup
리소스의 경우 CloudFormation은 예약된 작업이 auto scaling과 연결되어 있는지와 변경 유형에 따라 세 가지 업데이트 정책 중 하나를 호출합니다.-
다음 중 하나 이상을 완료하면
AutoScalingReplacingUpdate
및AutoScalingRollingUpdate
정책만 적용됩니다.-
Auto Scaling 그룹의
AWS::AutoScaling::LaunchConfiguration
을 변경합니다. -
auto scaling의
VPCZoneIdentifier
속성을 변경합니다. -
auto scaling의
LaunchTemplate
속성을 변경합니다. -
현재
LaunchConfiguration
과 일치하지 않는 인스턴스가 포함된 Auto Scaling 그룹을 업데이트합니다.
AutoScalingReplacingUpdate
및AutoScalingRollingUpdate
정책이 둘 다 지정된 경우WillReplace
속성을true
로 설정하면AutoScalingReplacingUpdate
가 우선 적용됩니다. -
-
예약된 작업이 연결되어 있는 Auto Scaling 그룹을 포함하는 스택을 업데이트하는 경우
AutoScalingScheduledAction
정책이 적용됩니다.
-
-
AWS::ElastiCache::ReplicationGroup
리소스의 경우 CloudFormation에서 전체 리소스를 대체하는 대신 샤드를 추가 또는 제거함으로써 복제 그룹의 샤드를 수정할 수 있습니다. 자세한 내용은 UseOnlineResharding 정책 단원을 참조하십시오. -
AWS::OpenSearchService::Domain
및 레거시AWS::Elasticsearch::Domain
리소스의 경우 CloudFormation은 전체 리소스를 대체하지 않고도 OpenSearch Service 도메인을 OpenSearch 또는 Elasticsearch의 새 버전으로 업그레이드할 수 있습니다. 자세한 내용은 EnableVersionUpgrade 정책 단원을 참조하십시오. -
AWS::Lambda::Alias
리소스의 경우, CloudFormation에서 별칭 버전이 변경될 때 CodeDeploy 배포 작업을 수행합니다. 자세한 내용은 CodeDeployLambdaAlias 업데이트 정책 단원을 참조하십시오.
AppStream 2.0 업데이트 정책
업데이트 정책에 대한 AppStream 2.0 구성입니다.
명령문
JSON
{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "
Boolean
" }, "StartAfterUpdate": { "Type": "Boolean
" } } }
YAML
UpdatePolicy: StopBeforeUpdate: Type:
Boolean
StartAfterUpdate: Type:Boolean
StopBeforeUpdate
-
업데이트 전에 지정된 플릿을 중지합니다.
필수 항목 여부: 아니요
StartAfterUpdate
-
업데이트 후 지정된 플릿을 시작합니다.
필수 항목 여부: 아니요
AutoScalingReplacingUpdate 정책
AWS CloudFormation에서 auto scaling에 대한 대체 업데이트를 처리하는 방법을 지정하려면 AutoScalingReplacingUpdate
정책을 사용합니다. 이 정책을 사용하면 AWS CloudFormation에서 auto scaling을 새 그룹으로 바꿀지 아니면 auto scaling의 인스턴스만 바꿀지 지정할 수 있습니다.
중요
업데이트를 시도하기 전에 이전 및 새 Auto Scaling 그룹에 대한 Amazon EC2 용량이 충분한지 확인하십시오.
명령문
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" :
Boolean
} }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace:
Boolean
속성
WillReplace
-
Auto Scaling 그룹 및 이 그룹이 포함된 인스턴스를 업데이트 중 바꿀지 여부를 지정합니다. 이를 바꾸는 동안 CloudFormation에서 새 그룹 생성이 완료될 때까지 이전 그룹을 보존합니다. 업데이트에 실패하는 경우, CloudFormation에서 이전 Auto Scaling 그룹으로 롤백하고 새 Auto Scaling 그룹을 삭제할 수 있습니다.
CloudFormation은 새 그룹을 생성하는 동안 어떠한 인스턴스도 분리 또는 연결하지 않습니다. 새 Auto Scaling 그룹이 생성된 후 CloudFormation은 정리 프로세스 중 이전 Auto Scaling 그룹을 삭제합니다.
WillReplace
파라미터를 설정하는 경우 일치하는CreationPolicy
를 지정합니다. 최소 인스턴스 수(MinSuccessfulInstancesPercent
속성으로 지정)가Timeout
기간(CreationPolicy
정책으로 지정됨) 이내에 성공 신호를 보내지 않으면 대체 업데이트는 실패하고 AWS CloudFormation은 이전 auto scaling으로 롤백합니다.유형: 부울
필수 항목 여부: 아니요
AutoScalingRollingUpdate 정책
CloudFormation에서 Auto Scaling 그룹에 대한 롤링 업데이트를 처리하는 방법을 지정하려면 AutoScalingRollingUpdate
정책을 사용합니다. 롤링 업데이트를 통해 AWS CloudFormation에서 auto scaling의 인스턴스를 배치별로 또는 한 번에 모두 업데이트할지 여부를 지정할 수 있습니다.
중요
롤링 업데이트 중 일부 Auto Scaling 프로세스에서는 CloudFormation에서 롤링 업데이트를 완료하기 전에 Auto Scaling 그룹을 변경할 수 있습니다. 이러한 변경으로 인해 롤링 업데이트에 실패할 수 있습니다. 롤링 업데이트 중 Auto Scaling에서 프로세스를 실행하지 못하도록 하려면 SuspendProcesses
속성을 사용합니다. 자세한 내용은 Auto Scaling 그룹 롤링 업데이트 수행을 위해 권장되는 몇 가지 모범 사례에는 무엇이 있습니까?
스택 업데이트 롤백 작업 도중 CloudFormation에서는 현재 스택 업데이트 작업 전에 템플릿에 지정된 UpdatePolicy
구성을 사용합니다. 예를 들어 스택 템플릿의 UpdatePolicy
에 있는 MaxBatchSize
를 1에서 10으로 업데이트했다고 가정합니다. 그런 다음 스택 업데이트를 수행하고, 업데이트가 실패하면 CloudFormation에서 업데이트 롤백 작업을 개시합니다. 이러한 경우 CloudFormation에서는 최대 배치 크기로 10이 아닌 1을 사용합니다. 따라서 롤링 업데이트를 시작할 가능성이 높은 AWS::AutoScaling::AutoScalingGroup
리소스를 업데이트하기 전에 이러한 업데이트와 별개로 스택 업데이트에서 UpdatePolicy
구성을 변경하는 것이 좋습니다.
명령문
JSON
"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" :
Integer
, "MinActiveInstancesPercent" :Integer
, "MinInstancesInService" :Integer
, "MinSuccessfulInstancesPercent" :Integer
, "PauseTime" :String
, "SuspendProcesses" : [List of processes
], "WaitOnResourceSignals" :Boolean
} }
YAML
UpdatePolicy: AutoScalingRollingUpdate: MaxBatchSize:
Integer
MinActiveInstancesPercent:Integer
MinInstancesInService:Integer
MinSuccessfulInstancesPercent:Integer
PauseTime:String
SuspendProcesses: -List of processes
WaitOnResourceSignals:Boolean
속성
MaxBatchSize
-
동시에 바꿀 수 있는 최대 인스턴스 수를 지정합니다.
기본값:
1
최대:
100
유형: 정수
필수 항목 여부: 아니요
MinActiveInstancesPercent
-
업데이트가 성공하려면 롤링 업데이트 중에 해당 그룹의 원하는 용량과 비교하여
InService
상태에 있어야 하는 Auto Scaling 그룹의 인스턴스 비율을 지정합니다. 0~100 범위의 값을 지정할 수 있습니다. CloudFormation은 이를 10분의 1퍼센트 단위로 반올림합니다. 예를 들어 최소InService
비율이 50인 5개의 인스턴스를 업데이트하는 경우 3개 이상의 인스턴스가InService
상태여야 합니다.인스턴스가 1시간이라는 정해진 시간 내에
InService
상태로 전환되지 않으면 CloudFormation은 인스턴스가 업데이트되지 않은 것으로 간주합니다.이 속성을 지정하는 경우
PauseTime
속성도 사용해야 합니다.MinActiveInstancesPercent
파라미터는 안정화만을 목적으로 인스턴스에만 적용됩니다. Auto Scaling 그룹의 인스턴스 수를 지정하려면AWS::AutoScaling::AutoScalingGroup
리소스에 대한MinSize
,MaxSize
,DesiredCapacity
속성을 참조하세요.UpdatePolicy
에서MinActiveInstancesPercent
를 설정하면AWS::AutoScaling::AutoScalingGroup
리소스의DesiredCapacity
속성이 해당 Auto Scaling 그룹에서 현재 원하는 용량보다 높으므로 시작된 인스턴스에도 영향을 미칩니다.기본값:
100
유형: 정수
필수 항목 여부: 아니요
MinInstancesInService
-
CloudFormation에서 이전 인스턴스를 업데이트하는 동안 Auto Scaling 그룹 내에서 작동해야 하는 최소 인스턴스 수를 지정합니다. 이 값은 Auto Scaling 그룹의
MaxSize
보다 작아야 합니다.기본값:
0
유형: 정수
필수 항목 여부: 아니요
MinSuccessfulInstancesPercent
-
Auto Scaling 롤링 업데이트에서 성공 신호를 보내야 하는 인스턴스의 비율을 지정합니다. 이 비율의 인스턴스가 성공 신호를 보내야 업데이트에 성공합니다.
0
~100
범위의 값을 지정할 수 있습니다. CloudFormation은 이를 10분의 1퍼센트 단위로 반올림합니다. 예를 들어 최소 성공 비율50
으로 인스턴스 다섯 개를 업데이트하는 경우 인스턴스 세 개에서 성공 신호를 보내야 성공입니다.PauseTime
속성에 지정된 시간 내에 인스턴스가 신호를 전송하지 않으면 CloudFormation은 해당 인스턴스가 업데이트되지 않았다고 가정합니다.이 속성을 지정하는 경우
WaitOnResourceSignals
및PauseTime
속성도 사용해야 합니다.MinSuccessfulInstancesPercent
파라미터는 신호 전송만을 목적으로 인스턴스에만 적용됩니다. Auto Scaling 그룹의 인스턴스 수를 지정하려면AWS::AutoScaling::AutoScalingGroup
리소스에 대한MinSize
,MaxSize
,DesiredCapacity
속성을 참조하세요.기본값:
100
유형: 정수
필수 항목 여부: 아니요
중요
MinSuccessfulInstancesPercent
속성이0
으로 설정되면 CloudFormation은 용량 인스턴스의 0%가InService
상태가 될 때까지 기다립니다.MinSuccessfulInstancesPercent
는 auto scaling 상태를Update Complete
로 간주하기 전에 즉시 반환되어 스택 템플릿에 정의된 후속 리소스로 이동합니다.다른 auto scaling이 CloudFormation 템플릿에 정의되어 있으면 동시에 업데이트됩니다. 모든 auto scaling이
InService
상태에서 한 번에 0%의 용량 인스턴스로 배포되면 0개의 인스턴스가 고객 트래픽을 처리하므로 가용성 문제가 발생합니다.CloudFormation은
MinSuccessfulInstancesPercent
가 0보다 큰 값으로 설정되어 auto scaling 업데이트가 완료된 것으로 간주하기 전에 합리적인 최소 인스턴스를 확인할 것을 권장합니다. PauseTime
-
인스턴스에 소프트웨어 애플리케이션을 시작할 시간을 주기 위해 인스턴스 배치를 변경한 후 CloudFormation이 일시 정지하는 시간입니다. 예를 들어 Auto Scaling 그룹에서 인스턴스 수를 확장하는 경우
PauseTime
을 지정해야 할 수 있습니다.WaitOnResourceSignals
속성을 사용하는 경우,PauseTime
은 Auto Scaling 그룹이 추가 또는 대체된 인스턴스로부터 필요한 수의 유효 신호를 받을 때까지 CloudFormation에서 기다리는 시간입니다. Auto Scaling 그룹이 필요한 수의 신호를 받기 전에PauseTime
이 초과되면 업데이트는 실패합니다. 최적의 결과를 얻으려면 애플리케이션의 시작 시간이 넉넉하도록 기간을 지정하십시오. 업데이트를 롤백해야 하는 경우PauseTime
이 짧으면 롤백에 실패할 수 있습니다.PauseTime
은 ISO8601 기간 형식입니다( PT
형식, 여기서#
H#
M#
S#
은 각각 시간, 분 및 초를 나타내는 숫자임). 최대PauseTime
은 1시간입니다(PT1H
).기본값:
WaitOnResourceSignals
속성이true
로 설정된 경우PT1H
(1시간)입니다.타입: 문자열
필수 항목 여부: 아니요
SuspendProcesses
-
스택 업데이트 중 일시 중지할 Auto Scaling 프로세스를 지정합니다. 프로세스를 일시 중지하면 Auto Scaling이 스택 업데이트를 방해하지 않습니다. 예를 들어, Amazon EC2 Auto Scaling에서 경고와 연결된 조정 정책을 시작하지 않도록 경보를 일시 중지할 수 있습니다. 유효한 값을 알아보려면 Amazon EC2 Auto Scaling API 참조의 SuspendProcesses 작업에 대한
ScalingProcesses.member.N
파라미터를 참조하세요.기본값: 지정되지 않음
유형: Auto Scaling 프로세스 목록
필수 항목 여부: 아니요
WaitOnResourceSignals
-
Auto Scaling 그룹에서 업데이트 중 새 인스턴스의 신호를 대기할지 여부를 지정합니다. 이 속성을 사용하면 인스턴스가 auto scaling에서 업데이트를 계속 진행하기 전에 애플리케이션 설치 및 구성을 완료하도록 합니다. AWS CloudFormation은 새 EC2 인스턴스가 그룹으로 시작된 후 auto scaling의 업데이트를 일시 중지합니다. 업데이트를 계속 진행하려면 AWS CloudFormation이 지정된
PauseTime
내에 각각의 새 인스턴스로부터 신호를 수신해야 합니다. Auto Scaling 그룹에 신호를 보내려면 cfn-signal 헬퍼 스크립트 또는SignalResource
API를 사용합니다.인스턴스가 성공 신호를 보내기 전에 Elastic Load Balancing 상태 확인을 대기하도록 하려면 cfn-init 헬퍼 스크립트를 사용하여 상태-확인 검증을 추가합니다. 예를 들어, Auto Scaling 롤링 업데이트
샘플 템플릿에서 verify_instance_health
명령을 참조하십시오.기본값:
true
유형: 부울
필수 항목 여부: 조건부.
MinSuccessfulInstancesPercent
속성을 지정하는 경우WaitOnResourceSignals
및PauseTime
속성도 사용해야 합니다.
AutoScalingScheduledAction 정책
AWS::AutoScaling::AutoScalingGroup
리소스에 예약된 작업이 연결되어 있는 경우 AWS CloudFormation에서 MinSize
, MaxSize
및 DesiredCapacity
속성 업데이트를 처리하는 방법을 지정하려면 AutoScalingScheduledAction
정책을 사용합니다.
Auto Scaling 그룹의 그룹 크기 속성은 예약된 작업을 통해 언제든지 변경할 수 있습니다. Auto Scaling 그룹 및 예약된 작업을 사용하여 스택을 업데이트할 때 예약된 작업이 적용되더라도 CloudFormation은 항상 Auto Scaling 그룹의 그룹 크기 속성 값을 템플릿의 AWS::AutoScaling::AutoScalingGroup
리소스에 정의된 값으로 설정합니다.
예약된 작업이 적용되는 경우 CloudFormation이 그룹 크기 속성 값을 변경하지 않도록 하려면 AutoScalingScheduledAction
업데이트 정책을 사용하고 IgnoreUnmodifiedGroupSizeProperties
를 true
로 설정하여 사용자가 템플릿에서 MinSize
, MaxSize
또는 DesiredCapacity
속성 값을 수정하지 않는 한 CloudFormation에서 이러한 값을 변경하지 않도록 합니다.
명령문
JSON
"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" :
Boolean
} }
YAML
UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties:
Boolean
속성
IgnoreUnmodifiedGroupSizeProperties
-
true
이면 AWS CloudFormation에서 스택 업데이트 중 현재 auto scaling과 템플릿의AWS::AutoScaling::AutoScalingGroup
리소스에 설명된 auto scaling 간의 그룹 크기 속성 차이를 무시합니다. 템플릿에서 그룹 크기 속성 값을 수정하면 AWS CloudFormation은 수정된 값을 사용하고 auto scaling을 업데이트합니다.기본값:
false
유형: 부울
필수 항목 여부: 아니요
UseOnlineResharding 정책
전체 AWS::ElastiCache::ReplicationGroup 리소스를 대체하는 대신 샤드를 추가 또는 제거함으로써 복제 그룹의 샤드를 수정하려면 UseOnlineResharding
업데이트 정책을 사용합니다.
UseOnlineResharding
이 true
로 설정된 경우 AWS::ElastiCache::ReplicationGroup
리소스의 NumNodeGroups
및 NodeGroupConfiguration
속성을 업데이트할 수 있고, CloudFormation에서는 중단 없이 이러한 속성을 업데이트합니다. UseOnlineResharding
이 false
로 설정되거나 지정되지 않은 경우 NumNodeGroups
및 NodeGroupConfiguration
속성을 업데이트하면 CloudFormation에서 전체 AWS::ElastiCache::ReplicationGroup
리소스를 교체합니다.
UseOnlineResharding
업데이트 정책에는 속성이 없습니다.
UseOnlineResharding
업데이트 정책을 true
로 설정할 때 고려해야 할 사항은 다음과 같습니다.
-
해당 스택 업데이트 작업의 유일한 업데이트로
NumNodeGroups
및NodeGroupConfiguration
속성에 대한 업데이트를 수행하는 것이 좋습니다.복제 그룹의 노드 그룹 구성 업데이트는 리소스 집약적 작업입니다. 스택 업데이트가 실패하는 경우 CloudFormation에서는 복제 그룹의 노드 그룹 구성에 대한 변경 사항을 롤백하지 않습니다. 하지만 CloudFormation에서 실패한 업데이트 작업의 일부분으로 변경된 나머지 속성을 롤백합니다.
-
노드 그룹을 업데이트하려면 모든 노드 그룹을 식별해야 합니다.
NodeGroupConfiguration
속성을 지정하는 경우 CloudFormation에서 중단 없이 노드 수를 업데이트하도록 각 노드 그룹 구성에 대한 NodeGroupId 또한 지정해야 합니다.복제 그룹 생성 시 각 노드 그룹에 대한 ID를 지정하지 않는 경우 ElastiCache에서 자동으로 각 노드 그룹에 대한 ID를 생성합니다. 중단 없이 복제 그룹을 업데이트하려면 ElastiCache 콘솔(https://console.aws.amazon.com/elasticache/
) 또는 DescribeReplicationGroups를 사용하여 복제 그룹의 모든 노드 그룹에 대한 ID를 검색합니다. 그런 다음 샤드 추가 또는 제거 시도 전에 스택 템플릿의 각 노드 그룹에 대한 ID를 지정합니다. 참고
스택 템플릿에 복제 그룹을 생성할 때 지정한 각 노드 그룹에 대한 ID를 포함시키는 것이 모범 사례입니다.
추가로 중단 없이 노드 수를 업데이트하려면 각
NodeGroupConfiguration
에 대한PrimaryAvailabilityZone
,ReplicaAvailabilityZones
및ReplicaCount
속성을 정확히 지정해야 합니다. 다시 한 번 ElastiCache 콘솔(https://console.aws.amazon.com/elasticache/) 또는 DescribeReplicationGroups를 사용하여 각 노드 그룹에 대한 실제 값을 검색하고 이를 스택 템플릿의 값과 비교할 수 있습니다. 별도의 스택 업데이트로, 또는 노드 그룹의 수를 변경하는 동일한 스택 업데이트의 일부분으로 노드 그룹의 속성 값을 업데이트할 수 있습니다. 중단 없이 노드 그룹의 수를 업데이트하기 위해
UseOnlineResharding
업데이트 정책을 사용할 때 ElastiCache에서는 지정된 수의 슬롯 사이에 키스페이스를 균등하게 분산합니다. 이는 나중에 업데이트할 수 없습니다. 따라서 이러한 방식으로 노드 그룹의 수를 업데이트한 이후 스택 템플릿에서 각NodeGroupConfiguration
의Slots
속성에 지정된 값을 제거해야 합니다. 더 이상 각 노드 그룹의 실제 값을 반영하지 않기 때문입니다. -
실제 노드 그룹 제거 결과는 다를 수 있습니다.
현재 노드 그룹의 수보다 작은
NumNodeGroups
값을 지정하는 경우 CloudFormation에서는 ElastiCache에 지정된 노드 수에 도달하는 데 필요한 만큼 노드 그룹을 제거하도록 지시합니다. 하지만 ElastiCache에서 항상 원하는 수의 노드 그룹을 제거할 수는 없습니다. ElastiCache에서 원하는 수의 노드 그룹을 제거할 수 없는 경우 CloudFormation에서는 스택 이벤트를 생성하여 이를 사용자에게 알립니다. ElastiCache에서 노드 그룹을 전혀 제거할 수 없는 경우 CloudFormation 리소스 업데이트는 실패합니다.
복제 그룹 수정에 대한 자세한 내용을 알아보려면 Amazon ElastiCache API 참조의 ModifyReplicationGroupShardConfiguration을 참조하세요.
명령문
JSON
"UpdatePolicy" : { "UseOnlineResharding" :
Boolean
}
YAML
UpdatePolicy: UseOnlineResharding:
Boolean
EnableVersionUpgrade 정책
전체 AWS::OpenSearchService::Domain 또는 AWS::Elasticsearch::Domain 리소스를 대체하지 않고 OpenSearch Service 도메인을 새 버전의 OpenSearch 또는 Elasticsearch로 업그레이드하려면 EnableVersionUpgrade
업데이트 정책을 사용합니다.
EnableVersionUpgrade
가 true
로 설정된 경우 AWS::OpenSearchService::Domain
리소스의 EngineVersion
속성이나 레거시 AWS::Elasticsearch::Domain
리소스의 ElasticsearchVersion
속성을 업데이트할 수 있으며 CloudFormation는 중단 없이 해당 속성을 업데이트합니다. EnableVersionUpgrade
가 false
로 설정되거나 지정되지 않은 경우 EngineVersion
속성 ElasticsearchVersion
속성을 업데이트하면 CloudFormation에서 전체 AWS::OpenSearchService::Domain
/AWS::Elasticsearch::Domain
리소스가 대체됩니다.
EnableVersionUpgrade
업데이트 정책에는 속성이 없습니다.
OpenSearch Service 도메인 업그레이드에 대한 자세한 내용을 알아보려면 Amazon OpenSearch Service 개발자 안내서의 UpgradeDomain을 참조하세요.
명령문
JSON
"UpdatePolicy" : { "EnableVersionUpgrade" :
Boolean
}
YAML
UpdatePolicy: EnableVersionUpgrade:
Boolean
CodeDeployLambdaAlias 업데이트 정책
AWS::Lambda::Alias
리소스 버전이 변경될 때 CodeDeploy 배포 작업을 수행하려면 CodeDeployLambdaAliasUpdate
업데이트 정책을 사용하십시오.
명령문
JSON
"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" :
String
, "ApplicationName" :String
, "BeforeAllowTrafficHook" :String
, "DeploymentGroupName" :String
} }
YAML
UpdatePolicy: CodeDeployLambdaAliasUpdate: AfterAllowTrafficHook:
String
ApplicationName:String
BeforeAllowTrafficHook:String
DeploymentGroupName:String
속성
AfterAllowTrafficHook
-
트래픽 라우팅이 완료된 후 실행시킬 Lambda 함수의 이름.
필수 항목 여부: 아니요
타입: 문자열
ApplicationName
-
CodeDeploy 애플리케이션의 이름.
필수 항목 여부: 예
타입: 문자열
BeforeAllowTrafficHook
-
트래픽 라우팅 시작 전에 실행시킬 Lambda 함수의 이름.
필수 항목 여부: 아니요
타입: 문자열
DeploymentGroupName
-
CodeDeploy 배포 그룹의 이름. 트래픽 전환 정책을 설정하는 장소입니다.
필수 항목 여부: 예
타입: 문자열
AWS::Lambda::Alias
리소스의 UpdatePolicy
속성을 지정하는 방법에 대한 예제는 Lambda 별칭 업데이트 정책 단원을 참조하십시오.
예제
다음 예제에서는 Auto Scaling 그룹에 업데이트 정책을 추가하는 방법과 메타데이터 업데이트 시 가용성 유지 관리 방법을 보여줍니다.
auto scaling에 UpdatePolicy
추가
다음 예에서는 업데이트 정책을 추가하는 방법을 보여 줍니다. 업데이트 중 Auto Scaling 그룹은 인스턴스를 두 개씩 한 배치로 업데이트하고 최소 한 개의 인스턴스는 계속 작동하도록 합니다. WaitOnResourceSignals
플래그가 설정되었으므로 Auto Scaling 그룹에서는 그룹에 추가된 새 인스턴스를 대기합니다. 새 인스턴스는 Auto Scaling 그룹이 인스턴스의 다음 배치를 업데이트하기 전에 해당 그룹에 신호를 보내야 합니다.
JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : [ "us-east-1a", "us-east-1b" ], "DesiredCapacity" : "1", "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : "true" }, "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "2", "WaitOnResourceSignals" : "true", "PauseTime" : "PT10M" } } }, "ScheduledAction" : { "Type" : "AWS::AutoScaling::ScheduledAction", "Properties" : { "AutoScalingGroupName" : { "Ref" : "ASG" }, "DesiredCapacity" : "2", "StartTime" : "2017-06-02T20 : 00 : 00Z" } }
YAML
ASG: Type: 'AWS::AutoScaling::AutoScalingGroup' Properties: AvailabilityZones: - us-east-1a - us-east-1b DesiredCapacity: '1' LaunchConfigurationName: Ref: LaunchConfig MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M ScheduledAction: Type: 'AWS::AutoScaling::ScheduledAction' Properties: AutoScalingGroupName: Ref: ASG DesiredCapacity: '2' StartTime: '2017-06-02T20 : 00 : 00Z'
AutoScalingReplacingUpdate 정책
다음 예에서는 연결된 Auto Scaling 그룹이 업데이트 중 대체되도록 강제하는 정책을 선언합니다. 업데이트에 성공하려면 (MinSuccessfulPercentParameter
파라미터로 지정된) 비율의 인스턴스가 Timeout
기간 내에 성공 신호를 보내야 합니다.
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : "true" } }, "CreationPolicy" : { "ResourceSignal" : { "Count" : { "Ref" : "ResourceSignalsOnCreate"}, "Timeout" : "PT10M" }, "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" } } }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: 'true' CreationPolicy: ResourceSignal: Count: !Ref 'ResourceSignalsOnCreate' Timeout: PT10M AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'
cfn-init 헬퍼 스크립트에 대한 메타데이터 업데이트 시 가용성 유지 관리
인스턴스에 소프트웨어 애플리케이션을 설치할 때 AWS::CloudFormation::Init
메타데이터 키와 cfn-init
헬퍼 스크립트를 사용하여 auto scaling의 인스턴스를 부트스트랩할 수 있습니다. CloudFormation은 패키지를 설치하고, 명령을 실행하고, 메타데이터에 설명된 기타 부트스트랩 작업을 수행합니다.
메타데이터만 업데이트하는 경우(예: 패키지를 다른 버전으로 업데이트하는 경우) cfn-hup
헬퍼 데몬을 사용하여 업데이트를 감지해 적용할 수 있습니다. 그러나 cfn-hup
데몬은 각 인스턴스에서 독립적으로 실행됩니다. 이 데몬이 모든 인스턴스에서 동시에 실행되면 업데이트 중 애플리케이션 또는 서비스를 사용하지 못할 수 있습니다. 가용성을 보장하기 위해 CloudFormation이 인스턴스를 한 번에 한 배치씩 업데이트하도록 롤링 업데이트를 강제 적용할 수 있습니다.
중요
롤링 업데이트를 강제 적용하려면 CloudFormation에서 새 인스턴스를 생성한 다음 이전 인스턴스를 삭제해야 합니다. 이전 인스턴스에 저장된 모든 정보는 손실됩니다.
롤링 업데이트를 강제 실행하려면 시작 구성 리소스의 논리적 ID를 변경한 다음 스택과 원본 로직 ID(예: 연결된 auto scaling)를 가리키는 참조를 업데이트합니다. CloudFormation은 auto scaling에 대한 롤링 업데이트를 트리거하여 모든 인스턴스를 대체합니다.
원본 템플릿
"LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
업데이트된 논리적 ID
"LaunchConfigUpdateRubygemsPkg": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
Lambda 별칭 업데이트 정책
다음은 UpdatePolicy
리소스의 AWS::Lambda::Alias
속성을 지정하는 방법에 대한 예제입니다. 정책으로 전달되는 애플리케이션 및 배포 그룹이 배포와 관련된 모든 세부 정보를 정의합니다.
JSON
"Alias": { "Type": "AWS::Lambda::Alias", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "FunctionVersion": { "Fn::GetAtt": [ "FunctionVersionTwo", "Version" ] }, "Name": "MyAlias" }, "UpdatePolicy": { "CodeDeployLambdaAliasUpdate": { "ApplicationName": { "Ref": "CodeDeployApplication" }, "DeploymentGroupName": { "Ref": "CodeDeployDeploymentGroup" }, "BeforeAllowTrafficHook": { "Ref": "PreHookLambdaFunction" }, "AfterAllowTrafficHook": { "Ref": "PreHookLambdaFunction" } } } }
YAML
Alias: Type: 'AWS::Lambda::Alias' Properties: FunctionName: !Ref LambdaFunction FunctionVersion: !GetAtt FunctionVersionTwo.Version Name: MyAlias UpdatePolicy: CodeDeployLambdaAliasUpdate: ApplicationName: !Ref CodeDeployApplication DeploymentGroupName: !Ref CodeDeployDeploymentGroup BeforeAllowTrafficHook: !Ref PreHookLambdaFunction AfterAllowTrafficHook: !Ref PreHookLambdaFunction