В настоящее время я работаю над кулинарной книгой Python и AWS из публикации O'Reilly. Я в настоящее время смотрю на сценарий запуска запуска, который у меня работал (что - забавная история - я не думал, что работаю, пока я не щелкнул по другому региону в AWS и не увидел, что я создал около 50 экземпляров, пытающихся запустить скрипт. .. Урок для людей, новых для AWS: всегда устанавливайте и знайте свой регион по умолчанию).Сценарий экземпляра запуска из кулинарной книги Python и AWS не создает никаких экземпляров
Теперь по какой-то причине сценарий запускается без ошибок, но в интерактивной оболочке python ничего не печатается и экземпляры не создаются. Я не знаю, что я изменил, чтобы остановить эту работу. В некоторых тестах, которые я сделал (в основном импортируя boto в интерактивном режиме и подключаясь к EC2 оттуда), он, кажется, успешно подключается, поэтому я понятия не имею, что вызывает это.
Скрипт ниже, так что если кто-нибудь может помочь или сказать мне какие-либо тесты, которые я могу сделать, это было бы здорово:
import os
import time
import boto
import boto.manage.cmdshell
def launch_instance(ami="i-7ef58184",
instance_type="t1.micro",
key_name="paws",
key_extension=".pem",
key_dir="~/.ssh",
group_name="paws",
ssh_port="22",
cidr="0.0.0.0/0",
tag="paws",
user_data=None,
cmd_shell=True,
login_user="ec2-user",
ssh_passwd=None):
cmd = None
ec2 = boto.connect_ec2() # Crededentials are stored in /etc/boto.cfg
ec2 = boto.connect_ec2(debug=2)
try:
key = ec2.get_all_key_pairs(keynames=[key_name])[0]
except ec2.ResponseError, e:
if e.code == 'InvalidKeyPair.NotFound':
print 'Creating keypair %s' % key_name
key = ec2.create_key_pair(key_name)
key.save(key_dir)
else:
raise
try:
group = ec2.get_all_security_groups(groupnames=[group_name])[0]
except ec2.ResponseError, e:
if e.code == 'InvalidGroup.NotFound':
print'Creating security group %s' % group_name
group = ec2.create_security_group(group_name,
'A group that allows SSH access')
else:
raise
try:
group.authorize('tcp',ssh_port,ssh_port,cidr)
except ec2.ResponseError, e:
if e.code == 'InvalidPermission.Duplicate':
print ('Security group %s already authorized') % group_name
else:
raise
reservation = ec2.run_instances(ami,
key_name=key_name,
security_groups=[group_name],
instance_type=instance_type,
user_data=user_data)
instance = reservation.instances[0]
print 'waiting for instance...'
while instance.state != 'running':
time.sleep(30)
instance.update()
print 'Instance is now running'
print 'Instance IP is %s' % instance.ip_address
instance.add_tag(tag)
if cmd_shell:
key_path = os.path.join(os.path.expanduser(key_dir),
key_name+key_extension)
cmd = boto.manage.sshclient_from_instance(instance,
key_path,
username=login_user)
return (instance, cmd)
Может кто-нибудь помочь?
И вы помните, чтобы вызвать 'launch_instance ' –
@ Даррен Доу Добро пожаловать в StackOverflow! Я отредактировал ваш вопрос, надеясь, что его можно понять немного лучше. Надеюсь, вам все равно понравится :) –
@AnttiHaapala Как вы имеете в виду, не помню ли я назвать start_instance? Я полный новичок с точки зрения Python, так что это очень вероятно? –