如何处理EC2实例的InstanceLimitExceeded?

时间:2016-06-26 02:25:31

标签: amazon-ec2 vagrant cloud vagrantfile quota

我使用vagrant并行运行多个AWS EC2实例,但是我已经点击了每个区域的default limit个20个实例(t2.small中的us-east-1) :

  

与AWS交谈时出错。

     

InstanceLimitExceeded =>您的配额允许再运行0个实例。你要求至少1

阅读troubleshooting page,它建议我联系AWS支持人员和create a case,要求更高的限制(我做了,我等待响应)。

  

EC2服务限制:AWS按地区设置这些资源的限制。

然而在缩放方面是否存在此类限制的其他解决方法

换句话说,如果每个区域有一个限制,是否有任何方法可以动态分配不同的区域或实例类型来解决限制?

我在我的Vagrantfile中使用vagrant-aws vagrant插件并使用以下AWS设置:

config.vm.provider :aws do |aws, override|
    aws.ami = "ami-fce3c696"
    aws.instance_type = "t2.small"
    aws.keypair_name = keypair_name
    aws.region = "us-east-1"
    aws.terminate_on_shutdown = true
    if private_key then override.ssh.private_key_path = private_key end
    if security_group then aws.security_groups = [ security_group ] end
    if subnet_id then aws.subnet_id = subnet_id end
    override.nfs.functional = false
    override.ssh.username = "ubuntu"
    override.vm.box = "my_test"
    override.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
end

2 个答案:

答案 0 :(得分:3)

不,你不能“借”其他地区的限制。您可以创建另一个帐户,但是您必须处理在帐户中启用资源共享访问的额外管理开销。另请注意,限制是每个实例类型。您可以尝试使用其他实例类型。

将来,由于限制增加的周转时间可能是几天,并且因限制增加的类型而异,请务必提前计划。特别是对于较低级别的支持合同,他们不会将限制增加请求视为紧急情况。

答案 1 :(得分:1)

正如@Karen已提到的,限制是每个实例类型,因此对于变通方法,可以为t2.nano,t2.micro,t2.small等运行20个实例。

以下是Vagrantfile中的代码,可以将实例类型作为参数加载:

require 'getoptlong'

# Parse CLI arguments.
opts = GetoptLong.new(
  [ '--instance-type',  GetoptLong::OPTIONAL_ARGUMENT ],
)

instance_type  = ENV['INSTANCE_TYPE'] || 't2.small'
begin
  opts.each do |opt, arg|
    case opt
      when '--instance-type';  instance_type  = arg
    end # case
  end # each
  rescue
end

Vagrant.configure(2) do |config|
  # ...
  config.vm.provider :aws do |aws, override|
    aws.instance_type = instance_type
#   ...
  end
end

然后你可以运行:

INSTANCE_TYPE=t2.nano vagrant up
INSTANCE_TYPE=t2.micro vagrant up
INSTANCE_TYPE=t2.small vagrant up
INSTANCE_TYPE=t2.medium vagrant up
INSTANCE_TYPE=t2.large vagrant up

等等。因此,有5个不同的实例,限制可能会达到100个实例同时运行。