Auto Scaling API 呼び出しがスロットリングされないようにするにはどうすればよいですか?

所要時間1分
0

Amazon EC2 Auto Scaling、AWS Auto Scaling、または AWS アプリケーション自動スケーリングを呼び出すと、アプリケーションが「レートを超過しました」というエラーを受け取ります。

簡単な説明

API 呼び出しは、アカウントごとおよび AWS リージョンごとに許可されている API リクエストレートの上限を超えることはできません。この制限には、AWS コマンドラインインターフェイス (AWS CLI) と AWS マネジメントコンソールからの API 呼び出しも含まれます。API リクエストが最大レートを超えると、「レートを超過しました」エラーが表示され、 API 呼び出しがスロットリングされます。

Amazon EC2 Auto Scaling、AWS Auto Scaling、AWS アプリケーション自動スケーリングには、それぞれ独自の API スロットルバケットがあります。つまり、すべての Amazon EC2 Auto Scaling API 呼び出しには、1 つの共有 API の制限があります。Amazon EC2 Auto Scaling API 呼び出しは、AWS アプリケーション自動スケーリング API の制限には影響しません。

「レートを超過しました」エラーとスロットリングを回避するには、アプリケーションが必要な呼び出しだけを行っていることを検証します。

**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

解決策

現在の自動スケーリング API の使用状況を確認する

現在の自動スケーリング API の使用状況を確認するには、EC2 自動スケーリングサービスの Amazon CloudWatch メトリクスの AWS 使用統計をモニタリングします。メトリクスを使用して呼び出された自動スケーリング API をモニタリングし、API 呼び出しの数が多い、または「レートを超過しました」エラーが発生した時間を特定します。次に、この情報を使用して API の使用量を最適化し、削減します。

「describe」呼び出しを検証する

「describe」呼び出しが多すぎると、許可されたリクエストレートに対して測定された API リクエストの総数に影響してきます。すべての「describe」呼び出しが必要であることを、アプリケーションで確認します。可能であれば他の解決策を検討してください。たとえば、Amazon EventBridge からのプッシュ通知の使用を検討してください。この通知は、ライフサイクルフックを開始したときなど、インスタンスの状態が変更されたときに送信されます。

インスタンスのライフサイクル状態を確認するアプリケーションは、「describe」呼び出しを行いません。代わりに、これらのアプリケーションはインスタンスメタデータをクエリします。Auto Scaling グループの名前を含むタグ情報をインスタンスメタデータから取得します。インスタンスのタグ情報を有効にするには、起動テンプレートを使用する必要があります。

サードパーティーアプリケーションからの呼び出しを確認する

サードパーティのアプリケーションが AWS で自動スケーリングを継続的に呼び出す場合があります。サードパーティアプリケーションが不必要な呼び出しを行っていないことを確認し、サードパーティアプリケーションの設定を更新します。

エラーの再試行とエクスポネンシャルバックオフを実装する

エラーの再試行とエクスポネンシャルバックオフを使用して、API 呼び出しのレートを制限します。各 AWS SDK は、自動再試行ロジックとエクスポネンシャルバックオフアルゴリズムを実装しています。詳細については、リトライ動作を参照してください。

アクティビティのバーストを避ける

API 呼び出しのバーストを引き起こす状況を避けてください。たとえば、起動時に Amazon EC2 Auto Scaling グループ内のすべてのインスタンスがスケールイン保護を有効にするように設定しないでください。Auto Scaling グループのオプションをデフォルトで有効にして、すべてのインスタンスが保護されるようにします。

サービスクォータの増加をリクエストする

サービスクォータを増やすには、サポートセンターコンソールから増加をリクエストしますサービス制限の引き上げセクションで、次の手順を実行します。

  1. 制限タイプで、自動スケーリングを選択します。
  2. 自動スケーリングサービスには、EC2 自動スケーリングを選択します。
  3. 制限API スロットリングを選択します。
  4. 新しい制限値N/A を選択します。

リクエストには以下の情報を含めてください。

  • API コールレートの検証とエラーリタイアまたはエクスポネンシャルバックオフメソッドの実装
  • スロットリングの問題に関連する地域と時間枠
  • 自動スケーリング API のフルワークフロー
  • デプロイ中など、API の使用量がピークに達すると予想される場合

詳細については、AWS サービスクォータを管理するにはどうすればよいですか?を参照してください。

関連情報

エクスポネンシャルバックオフとジッター

AWS service quotas

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ