-1

10 個のインスタンスを開始し、それらのインスタンス ID とプライベート IP アドレスを取得したいと考えています。

これは AWS CLI を使用して実行できることを知っています。そのようなスクリプトが既に作成されているかどうか疑問に思っているので、車輪を再発明する必要はありません。

ありがとう

4

2 に答える 2

1

将来誰かが私の質問に出くわす可能性が低いので、(ある程度)最終的な解決策を提供したいと思いました。

Python と提案された Boto パッケージを使用して、次の Python スクリプトを作成しました。

よくコメントされていますが、ご不明な点がございましたらお気軽にお問い合わせください。

import boto
import time
import sys

IMAGE           = 'ami-xxxxxxxx' 
KEY_NAME        = 'xxxxx'
INSTANCE_TYPE   = 't1.micro'
SECURITY_GROUPS = ['xxxxxx'] # If multiple, separate by commas
COUNT           = 2 #number of servers to start

private_dns     = [] # will be populated with private dns of each instance

print 'Connecting to AWS'
conn = boto.connect_ec2()

print 'Starting instances'
#start instance
reservation = conn.run_instances(IMAGE, instance_type=INSTANCE_TYPE, key_name=KEY_NAME, security_groups=SECURITY_GROUPS, min_count=COUNT, max_count=COUNT)#, dry_run=True)

#print reservation #debug

print 'Waiting for instances to start'
# ONLY CHECKS IF RUNNING, MAY NOT BE SSH READY
for instance in reservation.instances: #doing this for every instance we started
    while not instance.update() == 'running': #while it's not running (probably 'pending')
        print '.', # trailing comma is intentional to print on same line
        sys.stdout.flush() # make the thing print immediately instead of buffering
        time.sleep(2) # Let the instance start up
print 'Done\n'

for instance in reservation.instances:
    instance.add_tag("Name","Hadoop Ecosystem") # tag the instance
    private_dns.append(instance.private_dns_name) # adding ip to array
    print instance, 'is ready at', instance.private_dns_name # print to console

print private_dns
于 2013-11-25T16:01:42.807 に答える
1

このような自動化には、python と boto パッケージを使用することをお勧めします。Python は bash よりも明確です。次のページを開始点として使用できます: http://boto.readthedocs.org/en/latest/ec2_tut.html

于 2013-11-22T16:39:31.073 に答える