API для проверки предела случая EC2?

Я использую экстенсивно случаи EC2 для тестирования распределенной системы. К сожалению, иногда я поражал предел бегущих случаев, которые заставляют целое развертывание терпеть неудачу. Я ловлю соответствующее исключение, но я предпочел бы избегать целого развертывания вместо того, чтобы терпеть неудачу после запуска нескольких случаев. Чтобы избежать такой ситуации, я хотел бы иметь проверку перед полетом:

number_of_running_instances + number_of_required_instances <= instance_limit

Я мог легко проверить number_of_running_instances и number_of_required_instances , но я не мог найти API для проверки instance_limit . Еще хуже, поддержка AWS утверждает, что нет никакого клиента видимого API для этого:

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

Кроме того, я предпочел бы не предполагать, что предел - дефолт, потому что некоторые счета AWS в нашей компании коснулись более высокого предела.

Там какая-либо работа должна решить ту проблему?

3
Я, конечно, предложил бы запросить более высокий предел, чтобы дать вам более рабочую комнату. Как правило, команды AWS рады обязать.
добавлено автор Mike Brant, источник
Просто намек: btw, этот предел только для "По требованию" случаев. "Скрытый" предел для Точечной Оценки о 5x эта стоимость
добавлено автор aldrinleal, источник

6 ответы

FYI, it is possible to query your AWS account limits, see: http://alestic.com/2013/12/ec2-account-attributes

7
добавлено
Спасибо за рытье кажется, что это было добавлено после того, как я задал вопросы, но я могу добавить его к инструменту развертывания.
добавлено автор Jakozaur, источник

Нет, нет никакого способа сделать это. Но действительно нет потребности сделать это, потому что ловля исключения (и изящно обработка его) являются лучшим дизайном. Начиная весь флот любое количество проблем может возникнуть: Вызовы API загадочно исчезают в пустоте, у AWS нет возможности начать определенный тип случая в требуемом AZ, случаи и объемы EBS могут застрять во время создания и т.д.

С количеством неизвестных проблем, которые могут неожиданно возникнуть, развертывая ресурсы AWS, необходимо запланировать проблемы, происходящие скорее регулярно. Ваш код должен ожидать что и работа это.

Стоит отметить, что вы используете шаблон CloudFormation, чтобы сделать ваше обеспечивание, большая часть боли, связанной с этим, смягчена. Обратные перемотки всех ресурсов автоматически выполняются на ошибке.

3
добавлено
Ну, таким образом, я получил некоторую логику повторной попытки, которые имеют дело с теми ситуация (если AZ исчерпан, это пробует в различном; если случай не начнется в течение определенного времени, конечного, и повторит и т.д.). Однако есть минимальное количество случаев, требуемых начать систему. После удара предела нет ничего, что я могу делать с этим.
добавлено автор Jakozaur, источник

Можно использовать амазонку, "описывают признаки счета", чтобы получить ограничения на счет aws.

"aws ec2 "описывает признаки счета""

3
добавлено

Можно использовать Советник, которому доверяют,. Вот связь с API Boto. Для каждого Обслуживания можно получить Имя Предела, регион, Сумму Предела и Текущее Использование. Можно написать маленькую обертку и получить необходимые ценности.

Если вы входитесь в ваш аккаунт AWS это связь должен показать вам все подробности о текущих пределах и использовании ваших услуг.

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']
1
добавлено

Похоже, что AWS добавила это, хотя странно это - часть 'gamelift' API, не под 'ec2'.

Even though I've never used GameLift, the output does match what's found in my console.aws.amazon.com -> EC2 -> Limits web page.

Пример:

$ aws gamelift describe-ec2-instance-limits --ec2-instance-type t2.micro
{
    "EC2InstanceLimits": [
        {
            "EC2InstanceType": "t2.micro",
            "CurrentInstances": 0,
            "InstanceLimit": 20
        }
    ]
}

(это производит все Типы Случая без - ec2-instance-type выбор),

0
добавлено