PowerShell を使用して複数の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動すると、"RequestLimitExceeded" エラーが発生します。
解決策
EC2 インスタンスの起動に使用するスクリプトは、API リクエストレートクォータおよび API リソースレートクォータに準拠する必要があります。これらのクォータを超過すると、"RequestLimitExceeded" エラーが発生します。
この問題を解決するには、再試行ロジックとエクスポネンシャルバックオフ戦略を実装してください。
**注: ** デフォルトでは、AWS SDK for .NET に組み込みの再試行メカニズムが備わっています。
**前提条件: **
リクエストレートが予測可能で、事前に制御できる場合は、スロットリングが発生したときに遅延した呼び出しを使用して回復してください。
スクリプト例:
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
# Example Code to launch 50 EC2 instances of type 'm5a.large'.
try {
$params = @{
ImageId = 'AMI_ID'
InstanceType = 'm5a.large'
AssociatePublicIp = $false
SubnetId = 'Subnet_ID'
MinCount = 10
MaxCount = 15
}
for ($i=0;$i<5;$i++){
$instance = New-EC2Instance @params
Start-Sleep 5000 #Sleep for 5 seconds to allow Request bucket to refill at the rate of 2 requests per second
}
} catch {
Write-Error "An Exception Occurred!"
}
**注: ** AMI_ID を Amazon マシンイメージ (AMI) ID に、Subnet_ID をサブネット ID に、m5a.large をインスタンスタイプに置き換えてください。また、10 を起動するインスタンスの最小数に、15 を起動するインスタンスの最大数に置き換えてください。
リクエストレートが予測できない場合は、スクリプトに再試行ロジックを含めてください。
スクリプト例:
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
#Example Code to launch 50 EC2 instances of type 'm5a.large'.
$Stoploop = $false
[int] $Retrycount = "0"
do {
try {
$params = @{
ImageId = 'AMI_ID'
InstanceType = 'm5a.large'
AssociatePublicIp = $false
SubnetId = 'Subnet_ID'
MinCount = 40
MaxCount = 50
}
$instance = New-EC2Instance @params
$Stoploop = $true
} catch {
if ($Retrycount -gt 3) {
Write - Host "Could not complete request after 3 retries."
$Stoploop = $true
} else {
Write-Host "Could not complete request retrying in 5 seconds."
Start-Sleep -Seconds 25
#25 seconds of sleep allows for 50 request tokens to be refilled at the rate of 2/sec
$Retrycount = $Retrycount + 1
}
}
} While($Stoploop -eq $false)
**注: ** AMI_ID を AMI ID に、Subnet_ID をサブネット ID に、m5a.large をインスタンスタイプに置き換えてください。また、40 を起動するインスタンスの最小数に、50 を起動するインスタンスの最大数に置き換えてください。
関連情報
Request throttling for the Amazon EC2 API (Amazon EC2 API のリクエストスロットリング)
再試行動作