EC2实例InstanceLimitExceeded如何处理?
How to deal with InstanceLimitExceeded for EC2 instances?
我正在使用 vagrant 并行 运行 多个 AWS EC2 实例,但是我已经达到每个区域 20 个实例的 default limit(t2.small
在 us-east-1
):
There was an error talking to AWS.
InstanceLimitExceeded => Your quota allows for 0 more running instance(s). You requested at least 1
阅读 troubleshooting page, it's suggested that I should contact AWS support and create a case 要求更高的限制(我已经这样做了,我正在等待回复)。
EC2 Service Limits: AWS sets limits for these resources on a per-region basis.
但是在缩放方面是否有任何其他解决方法可以解决这种限制?
换句话说,如果每个区域都有限制,有没有办法动态分配不同的区域或实例类型来解决限制?
我在 Vagrantfile
中使用具有以下 AWS 设置的 vagrant-aws
vagrant 插件:
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
不,您不能"borrow"不受其他地区的限制。您可以创建另一个帐户,但是您必须处理跨帐户启用资源共享访问的额外管理开销。另请注意,限制是针对每个实例类型的。您可以尝试使用不同的实例类型。
将来,由于限制增加的周转时间可能需要几天,并且会因限制增加的类型而异,因此请务必提前计划。特别是对于下层支持合同,他们不认为增加限制请求是紧急情况。
正如 已经提到的,限制是针对每个实例类型的,因此对于解决方法,对于 t2.nano、t2.micro、[=,20 个实例可以是 运行 24=],等等
这里是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 个实例 运行。
我正在使用 vagrant 并行 运行 多个 AWS EC2 实例,但是我已经达到每个区域 20 个实例的 default limit(t2.small
在 us-east-1
):
There was an error talking to AWS.
InstanceLimitExceeded => Your quota allows for 0 more running instance(s). You requested at least 1
阅读 troubleshooting page, it's suggested that I should contact AWS support and create a case 要求更高的限制(我已经这样做了,我正在等待回复)。
EC2 Service Limits: AWS sets limits for these resources on a per-region basis.
但是在缩放方面是否有任何其他解决方法可以解决这种限制?
换句话说,如果每个区域都有限制,有没有办法动态分配不同的区域或实例类型来解决限制?
我在 Vagrantfile
中使用具有以下 AWS 设置的 vagrant-aws
vagrant 插件:
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
不,您不能"borrow"不受其他地区的限制。您可以创建另一个帐户,但是您必须处理跨帐户启用资源共享访问的额外管理开销。另请注意,限制是针对每个实例类型的。您可以尝试使用不同的实例类型。
将来,由于限制增加的周转时间可能需要几天,并且会因限制增加的类型而异,因此请务必提前计划。特别是对于下层支持合同,他们不认为增加限制请求是紧急情况。
正如
这里是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 个实例 运行。