4

分散システムのテストには、EC2インスタンスを幅広く使用しています。残念ながら、インスタンスの実行制限に達して、デプロイメント全体が失敗することがあります。適切な例外をキャッチしますが、いくつかのインスタンスを起動した後に失敗するのではなく、デプロイメント全体を避けたいと思います。このような状況を回避するために、飛行前のチェックを行いたいと思います。

number_of_running_instances + number_of_required_instances <= instance_limit

簡単に確認できましたが、確認number_of_running_instancesnumber_of_required_instancesのAPIが見つかりませんでしたinstance_limit。さらに悪いことに、AWSサポートは、そのための顧客に見えるAPIはないと主張しています。

https://forums.aws.amazon.com/message.jspa?messageID=296314

さらに、当社のAWSアカウントの一部がより高い制限を申請したため、制限がデフォルトであるとは想定したくありません。

その問題を解決するための回避策はありますか?

4

6 に答える 6

3

amazon describe-account-attributes を使用して、aws アカウントの制限を取得できます。

「aws ec2 describe-account-attributes」

于 2014-07-16T17:03:14.507 に答える
2

いいえ、これを行う方法はありません。しかし、例外をキャッチする (そして適切に処理する) 方が優れた設計であるため、実際にはその必要はありません。フリート全体を起動すると、さまざまな問題が発生する可能性があります。たとえば、API 呼び出しが不思議なことに空白に消えてしまう、AWS には要求された AZ で特定のインスタンス タイプを起動する容量がない、インスタンスと EBS ボリュームが作成中に動かなくなるなどがあります。

AWS リソースをデプロイする際に発生する可能性のある未知の問題が多数あるため、定期的に発生する問題を計画する必要があります。あなたのコードはそれを予測し、それを回避する必要があります。

プロビジョニングを行うために CloudFormation テンプレートを使用していることは注目に値します。これに伴う苦痛の多くは軽減されます。すべてのリソースのロールバックは、エラー時に自動的に実行されます。

于 2013-01-09T17:42:34.043 に答える
1

Boto での例

from boto.ec2.connection import EC2Connection

__author__ = 'uva'

conn = EC2Connection(aws_secret_access_key="+secret_key",
                     aws_access_key_id="access_key")
attributes = conn.describe_account_attributes()
for attribute in attributes:
    print(attribute.attribute_name + " : " + str(attribute.attribute_values))

サンプル応答

vpc-max-security-groups-per-interface : [u'5']
max-instances : [u'20']
supported-platforms : [u'VPC']
default-vpc : [u'vpc-e1e73484']
max-elastic-ips : [u'5']
vpc-max-elastic-ips : [u'5']
于 2015-01-19T10:26:48.013 に答える
1

Trusted Advisorを使用できます。Boto APIへのリンクは次のとおりです。サービスごとに、制限名、地域、制限額、および現在の使用状況を取得できます。小さなラッパーを作成して、必要な値を取得できます。

AWS アカウントにログインしている場合、このリンクには、現在の制限とサービスの使用状況に関するすべての詳細が表示されます。

于 2015-11-03T11:00:41.083 に答える