기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon에 대한 제한 요청 EC2 API
Amazon은 리전별로 각 AWS 계정에 대한 EC2 API 요청을 EC2 제한합니다. 이를 통해 서비스의 성능을 높이고 모든 Amazon EC2 고객에게 공정한 사용을 보장합니다. 제한은 Amazon에 대한 요청이 허용되는 최대 API 요청 한도를 초과하지 EC2 API 않도록 합니다. API 요청에는 다음에서 발생하는 요청 제한이 적용됩니다.
-
타사 애플리케이션
-
명령줄 도구
-
Amazon EC2 콘솔
API 제한 한도를 초과하면 RequestLimitExceeded
오류 코드가 표시됩니다.
제한 적용 방법
AmazonEC2은 토큰 버킷 알고리즘
Amazon은 두 가지 유형의 API 제한을 EC2 구현합니다.
요청 속도 제한
요청 속도 제한을 사용하면 각 API가 개별적으로 평가되며, 별로API 수행하는 요청 수에 제한이 있습니다. 각 요청은 의 API버킷에서 토큰 하나를 제거합니다. 예를 들어, 비변환 API 작업DescribeHosts
인 의 토큰 버킷 크기는 토큰 100개입니다. 1초에 최대 100개의 DescribeHosts
요청을 수행할 수 있습니다. 1초에 100개의 요청을 초과하면 해당 요청에 제한이 적용API되고 해당 초 내의 나머지 요청은 실패하지만 다른 요청에 대한 요청은 영향을 받지 API 않습니다.
버킷은 설정된 속도로 자동으로 다시 채워집니다. 버킷이 최대 용량보다 낮으면 설정된 수의 토큰이 최대 용량에 도달할 때까지 매초마다 버킷에 다시 추가됩니다. 리필 토큰이 도착할 때 버킷이 가득 차면 버킷은 폐기됩니다. 버킷은 최대 토큰 수를 초과하여 보관할 수 없습니다. 예를 들어, 비변환 API 작업DescribeHosts
인 의 버킷 크기는 토큰 100개이고 리필 속도는 초당 토큰 20개입니다. 1초에 100개의 DescribeHosts
요청을 하면 버킷이 토큰 0(0)개로 줄어듭니다. 그런 다음 버킷은 최대 용량인 토큰 100개에 도달할 때까지 초당 토큰 20개로 리필됩니다. 즉, 빈 버킷은 해당 시간 동안 요청이 없는 경우 5초 후에 최대 용량에 도달합니다.
API 요청을 하기 전에 버킷이 완전히 꽉 찰 때까지 기다릴 필요가 없습니다. 리필 토큰은 버킷에 추가될 때 사용할 수 있습니다. 리필 토큰을 즉시 사용하면 버킷이 최대 용량에 도달하지 않습니다. 예를 들어, 비변환 API 작업DescribeHosts
인 의 버킷 크기는 토큰 100개이고 리필 속도는 초당 토큰 20개입니다. 1초에 100개의 API 요청을 수행하여 버킷을 고갈하는 경우 버킷에 추가될 때 리필 토큰을 사용하여 초당 20개의 API 요청을 계속 수행할 수 있습니다. 버킷은 초당 20개 미만의 API 요청을 하는 경우에만 최대 용량으로 리필할 수 있습니다.
리소스 속도 제한
다음 표에 설명된 TerminateInstances
대로 RunInstances
및 와 같은 일부 API 작업은 요청 속도 제한 외에도 리소스 속도 제한을 사용합니다. 이러한 API 작업에는 요청의 영향을 받는 리소스 수에 따라 고갈되는 별도의 리소스 토큰 버킷이 있습니다. 요청 토큰 버킷과 마찬가지로 리소스 토큰 버킷에는 버스트할 수 있는 버킷 최대값과 필요한 만큼 일정한 요청 속도를 유지할 수 있는 리필 속도가 있습니다. 다음 API 요청을 지원하기 위해 버킷이 아직 리필되지 않은 경우를 API포함하여 에 대한 특정 버킷 제한을 초과하는 경우 총 API 스로틀 제한에 도달하지 않았더라도 의 작업이 API 제한됩니다.
예를 들어 의 리소스 토큰 버킷 크기는 토큰 RunInstances
1,000개이고 리필 속도는 초당 토큰 2개입니다. 따라서 인스턴스 1,000개에 대한 API 요청 1개 또는 인스턴스 250개에 대한 요청 4개 등 원하는 수의 요청을 사용하여 인스턴스 1,000개를 즉시 시작할 수 있습니다. 리소스 토큰 버킷이 비어 있으면 인스턴스 2개에 대한 요청 1개 또는 인스턴스 1개에 대한 요청 2개를 사용하여 초당 최대 2개의 인스턴스를 시작할 수 있습니다.
자세한 내용은 리소스 토큰 버킷 크기 및 리필 속도 단원을 참조하십시오.
제한 한계
다음 섹션에서는 요청 토큰 버킷 및 리소스 토큰 버킷 크기와 리필 속도를 설명합니다.
토큰 버킷 크기 및 리필 속도 요청
요청 속도 제한을 위해 API 작업은 다음 범주로 그룹화됩니다.
-
변경되지 않는 작업 - 리소스에 대한 데이터를 검색하는 API 작업입니다. 이 범주에는 일반적으로
Describe*
,Search*
, 및List*
와 같은 모든DescribeRouteTables
,SearchTransitGatewayRoutes
, 및Get*
API 작업이 포함됩니다GetIpamPoolCidrs
. 이러한 API 작업은 일반적으로 제한 한도가 가장 API 높습니다. -
필터링되지 않은 비변이 작업 및 파인팅되지 않은 비변이 작업 - 페이지 매김 또는 필터 를 지정하지 않고 요청 시 더 작은 토큰 버킷의 토큰을 사용하는 비변이 API 작업의 특정 하위 집합입니다. 표준(더 큰) 토큰 버킷에서 토큰이 공제되도록 페이지 매김 및 필터링을 사용하는 것이 좋습니다.
-
변경 작업 - 리소스를 생성, 수정 또는 삭제하는 API 작업입니다. 이 범주에는 일반적으로 , 및 와 같이 비변환 API 작업으로 분류되지 않는 모든 작업이 포함됩니다
AllocateHosts
ModifyHosts
CreateCapacityReservation
. 이러한 작업의 제한 한도는 비변환 API 작업보다 낮습니다. -
리소스 집약적 작업 - 완료하는 데 가장 많은 시간이 걸리고 가장 많은 리소스를 소비API하는 작업을 변경합니다. 이러한 작업의 제한 한도는 작업 변경보다 훨씬 낮습니다. 다른 뮤팅 작업 과 별도로 제한됩니다.
-
콘솔 비돌연변이 작업 - Amazon EC2 콘솔에서 요청되는 비돌연변이 API 작업입니다. 이러한 API 작업은 다른 변경되지 않는 API 작업과 별도로 제한됩니다.
-
분류되지 않은 작업 - 정의상 다른 범주 중 하나에 해당하더라도 자체 토큰 버킷 크기와 리필 속도를 수신하는 API 작업입니다.
다음 표에는 모든 AWS 리전의 요청 토큰 버킷 크기와 리필 속도가 나와 있습니다.
API 작업 범주 | 작업 | 버킷 최대 용량 | 버킷 리필 속도 |
---|---|---|---|
비변환 작업 |
필터링되지 않은 |
100 | 20 |
필터링되지 않은 작업과 패키징되지 않은 비변이 작업 |
|
50 | 10 |
작업 변경 | 리소스 집약적 API 작업 또는 분류되지 않은 작업이 아닌 모든 변경 작업입니다. |
50 | 5 |
리소스 집약적 작업 |
|
50 | 5 |
콘솔 비돌연변이 작업 |
|
100 | 10 |
분류되지 않은 작업 | AcceptVpcEndpointConnections |
10 | 1 |
AdvertiseByoipCidr |
1 | 0.1 | |
AssignIpv6Addresses |
100 | 5 | |
AssignPrivateIpAddresses |
100 | 5 | |
AssignPrivateNatGatewayAddress |
10 | 1 | |
AssociateEnclaveCertificateIamRole |
10 | 1 | |
AssociateIamInstanceProfile |
100 | 5 | |
AssociateNatGatewayAddress |
10 | 1 | |
AttachVerifiedAccessTrustProvider |
10 | 2 | |
CreateDefaultSubnet |
1 | 1 | |
CreateDefaultVpc |
1 | 1 | |
CopyImage |
100 | 1 | |
CreateLaunchTemplateVersion |
100 | 5 | |
CreateNatGateway |
10 | 1 | |
CreateNetworkInterface |
100 | 5 | |
CreateRestoreImageTask |
50 | 0.1 | |
CreateSnapshot |
100 | 5 | |
CreateSnapshots |
100 | 5 | |
CreateStoreImageTask |
50 | 0.1 | |
CreateTags |
100 | 10 | |
CreateVerifiedAccessEndpoint |
20 | 4 | |
CreateVerifiedAccessGroup |
10 | 2 | |
CreateVerifiedAccessInstance |
10 | 2 | |
CreateVerifiedAccessTrustProvider |
10 | 2 | |
CreateVolume |
100 | 5 | |
CreateVpcEndpoint |
4 | 0.3 | |
CreateVpcEndpointServiceConfiguration |
10 | 1 | |
DeleteNatGateway |
10 | 1 | |
DeleteNetworkInterface |
100 | 5 | |
DeleteSnapshot |
100 | 5 | |
DeleteTags |
100 | 10 | |
DeleteQueuedReservedInstances |
5 | 5 | |
DeleteVerifiedAccessEndpoint |
20 | 4 | |
DeleteVerifiedAccessGroup |
10 | 2 | |
DeleteVerifiedAccessInstance |
10 | 2 | |
DeleteVerifiedAccessTrustProvider |
10 | 2 | |
DeleteVolume |
100 | 5 | |
DeleteVpcEndpoints |
4 | 0.3 | |
DeleteVpcEndpointServiceConfigurations |
10 | 1 | |
DeprovisionByoipCidr |
1 | 0.1 | |
DeregisterImage |
100 | 5 | |
DetachVerifiedAccessTrustProvider |
10 | 2 | |
DescribeByoipCidrs |
1 | 0.5 | |
DescribeCapacityBlockOfferings |
10 | 0.15 | |
DescribeInstanceTopology |
1 | 1 | |
DescribeMovingAddresses |
1 | 1 | |
DescribeReservedInstancesOfferings |
10 | 10 | |
DescribeSpotFleetRequestHistory |
100 | 5 | |
DescribeSpotFleetInstances |
100 | 5 | |
DescribeSpotFleetRequests |
50 | 3 | |
DescribeStoreImageTasks |
50 | 0.5 | |
DescribeVerifiedAccessInstanceLoggingConfigurations |
10 | 2 | |
DisableFastLaunch |
5 | 2 | |
DisableImageBlockPublicAccess |
1 | 0.1 | |
DisableSnapshotBlockPublicAccess |
1 | 0.1 | |
DisassociateEnclaveCertificateIamRole |
10 | 1 | |
DisassociateIamInstanceProfile |
100 | 5 | |
DisassociateNatGatewayAddress |
10 | 1 | |
EnableFastLaunch |
5 | 2 | |
EnableImageBlockPublicAccess |
1 | 0.1 | |
EnableSnapshotBlockPublicAccess |
1 | 0.1 | |
GetAssociatedEnclaveCertificateIamRoles |
10 | 1 | |
ModifyImageAttribute |
100 | 5 | |
ModifyInstanceMetadataOptions |
100 | 5 | |
ModifyLaunchTemplate |
100 | 5 | |
ModifyNetworkInterfaceAttribute |
100 | 5 | |
ModifySnapshotAttribute |
100 | 5 | |
ModifyVerifiedAccessEndpoint |
20 | 4 | |
ModifyVerifiedAccessEndpointPolicy |
20 | 4 | |
ModifyVerifiedAccessGroup |
10 | 2 | |
ModifyVerifiedAccessGroupPolicy |
20 | 4 | |
ModifyVerifiedAccessInstance |
10 | 2 | |
ModifyVerifiedAccessInstanceLoggingConfiguration |
10 | 2 | |
ModifyVerifiedAccessTrustProvider |
10 | 2 | |
ModifyVpcEndpoint |
4 | 0.3 | |
ModifyVpcEndpointServiceConfiguration |
10 | 1 | |
MoveAddressToVpc |
1 | 1 | |
ProvisionByoipCidr |
1 | 0.1 | |
PurchaseCapacityBlock |
10 | 0.15 | |
PurchaseReservedInstancesOffering |
5 | 5 | |
RejectVpcEndpointConnections |
10 | 1 | |
RestoreAddressToClassic |
1 | 1 | |
RunInstances |
5 | 2 | |
StartInstances |
5 | 2 | |
TerminateInstances |
100 | 5 | |
UnassignPrivateIpAddresses |
100 | 5 | |
UnassignPrivateNatGatewayAddress |
10 | 1 | |
WithdrawByoipCidr |
1 | 0.1 |
리소스 토큰 버킷 크기 및 리필 속도
다음 표에는 리소스 속도 제한을 사용하는 API 작업에 대한 리소스 토큰 버킷 크기 및 리필 속도가 나열되어 있습니다.
API 작업 | 버킷 최대 용량 | 버킷 리필 속도 |
---|---|---|
RunInstances |
1000 | 2 |
TerminateInstances |
1000 | 20 |
StartInstances |
1000 | 2 |
StopInstances |
1000 | 20 |
API 제한 모니터링
Amazon CloudWatch 을 사용하여 Amazon EC2 API 요청을 모니터링하고 API 제한에 대한 지표를 수집하고 추적할 수 있습니다. API 제한 한도에 가까워지면 경보를 생성하여 경고할 수도 있습니다. 자세한 내용은 Amazon을 사용하여 Amazon EC2 API 요청 모니터링 CloudWatch 단원을 참조하십시오.
재시도 및 지수 백오프
애플리케이션에서 API 요청을 다시 시도해야 할 수 있습니다. 예:
-
리소스 상태의 업데이트를 확인하려면
-
많은 수의 리소스를 열거하려면(예: 모든 볼륨)
-
서버 오류(5xx) 또는 제한 오류로 실패한 후 요청을 다시 시도하려면
그러나 클라이언트 오류(4xx)의 경우 요청을 다시 시도하기 전에 요청을 수정하여 문제를 해결해야 합니다.
리소스 상태 변경
상태 업데이트를 확인하기 위해 폴링을 시작하기 전에 요청을 완료할 수 있는 시간을 줍니다. 예를 들어 인스턴스가 활성 상태인지 확인하기 전에 몇 분 정도 기다립니다. 폴링을 시작할 때 연속 요청 사이에 적절한 절전 간격을 사용하여 API 요청 속도를 낮춥니다. 최상의 결과를 얻으려면 휴면 간격을 늘리거나 가변적으로 사용하세요.
또는 Amazon EventBridge 을 사용하여 일부 리소스의 상태를 알릴 수 있습니다. 예를 들어 EC2 인스턴스 상태 변경 알림 이벤트를 사용하여 인스턴스의 상태 변경을 알릴 수 있습니다. 자세한 내용은 를 EC2 사용하여 Amazon 자동화 EventBridge를 참조하세요.
재시도
API 요청을 폴링하거나 재시도해야 하는 경우 지수 백오프 알고리즘을 사용하여 API 요청 간의 절전 간격을 계산하는 것이 좋습니다. 지수 백오프의 기본 개념은 오류 응답이 연이어 나올 때마다 재시도 간 대기 시간을 점진적으로 늘리는 것입니다. 최대 지연 간격과 최대 재시도 횟수를 구현해야 합니다. 지터(무작위 배정 지연)를 사용하여 연속 충돌을 방지할 수도 있습니다. 자세한 내용은 시간 제한, 재시도 및 지터를 사용한 백오프
각 AWS SDK 는 자동 재시도 로직을 구현합니다. 자세한 내용은 AWS SDKs 및 도구 참조 가이드의 재시도 동작을 참조하세요.
한도 증가 요청
에 대한 API 제한 한도 증가를 요청할 수 있습니다 AWS 계정.
이 기능에 대한 액세스를 요청하려면
-
AWS Support 센터
를 엽니다. -
사례 생성을 선택합니다.
-
계정 및 결제 지원을 선택합니다.
-
서비스 에서 일반 정보 및 시작하기 를 선택합니다.
-
범주 에서 AWS 및 서비스 사용을 선택합니다.
-
다음 단계: 추가 정보를 선택합니다
-
제목에
Request an increase in my Amazon EC2 API throttling limits
을 입력합니다. -
설명에
Please increase the API throttling limits for my account. Related page: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html
를 입력합니다. 또한 다음 정보를 포함합니다.사용 사례에 대한 설명.
증가가 필요한 리전입니다.
UTC최대 제한 또는 사용량이 발생한 의 1시간 기간입니다(새 제한 한도 계산).
-
다음 단계: 지금 해결하거나 문의하기를 선택합니다.
-
문의 탭에서 선호하는 연락 언어와 연락 방법을 선택합니다.
-
제출을 선택합니다.