AWS CloudFormation을 사용할 때 "Rate exceeded" 오류를 방지하고 싶습니다.
간략한 설명
허용된 최대 API 요청을 초과하는 AWS 서비스에 대한 API 직접 호출은 Rate exceeded 오류를 생성합니다. 이 경우 API 직접 호출이 제한됩니다.
해결 방법
다운스트림 AWS 서비스가 최대 허용 속도를 초과합니다.
CloudFormation 스택 작업 중에 AWS 서비스가 최대 허용 속도를 초과하지 않도록 하려면 다음 옵션을 사용합니다.
DependsOn 특성 사용
리소스 간에 종속성이 정의되지 않는 한 CloudFormation은 리소스를 동시에 생성하고 업데이트합니다. DependsOn 특성은 동시 업데이트를 제어하기 위해 리소스 간의 종속성을 정의합니다.
각 종속 리소스가 생성되거나 업데이트되는 시기를 지정하려면 DependsOn 특성을 사용합니다. 예를 들어 리소스 B가 리소스 A에 종속된 경우 리소스 A를 리소스 B보다 먼저 만들거나 업데이트하도록 지정할 수 있습니다. 이 사양은 동시에 발생하는 API 직접 호출 수를 제한하고 스로틀링 발생을 줄입니다. 중첩 스택과 함께 DependsOn 특성을 사용할 수도 있습니다.
할당량 증가 요청
DependsOn 특성이 Rate exceeded 오류를 해결하지 못하는 경우 할당량 증가를 요청할 수 있습니다. 다운스트림 API에 대한 할당량 증가를 요청하기 전에 먼저 API 직접 호출을 식별하여 호출 속도를 초과하는 호출을 확인합니다.
할당량 증가 요청에는 AWS 리전, API 스로틀링 및 증가 이유를 포함합니다.
AWS CloudFormation API가 최대 허용 속도를 초과합니다.
CloudFormation API 직접 호출이 허용되는 최대 API 요청을 초과하지 않도록 하려면 다음 옵션을 사용합니다.
지수 백오프 구현
AWS API 엔드포인트를 사용하는 경우 백오프를 구현하여 API 직접 호출 수를 줄입니다.
DescribeStacks API 직접 호출에 대한 다음 예제 가상 코드는 특정 시간 프레임 후에 API 직접 호출을 재시도하도록 구성되어 있습니다.
{
Make 'DescribeStacks' API call
if throttled: wait 2 sec; Make 'DescribeStacks' API call
if throttled: wait 4 sec; Make 'DescribeStacks'API call
if throttled: wait 8 sec; Make 'DescribeStacks' API call
if throttled: wait 16 sec; Make 'DescribeStacks' API call
if throttled: wait 32 sec; Make 'DescribeStacks' API call
}
스택을 한 번에 하나씩 생성하거나 업데이트
여러 CloudFormation 스택이 동시에 생성되거나 업데이트되면 너무 많은 API 직접 호출이 발생할 수 있습니다. API 직접 호출이 허용되는 최대 API 요청을 초과하지 않도록 하려면 한 번에 하나의 스택을 생성하거나 업데이트합니다.
할당량 증가 요청
스택을 생성하거나 업데이트할 수 없는 경우 CloudFormation API에 대한 할당량 증가를 요청할 수 있습니다. 할당량 증가를 요청하기 전에 먼저 API 직접 호출을 식별하여 호출 속도를 초과하는 호출을 확인합니다.
할당량 증가 요청에는 AWS 리전, API 스로틀링 및 증가 이유를 포함합니다.