原始的boto关于ElasticIP的api使用起来比较不友好,例如实例与EIP关联的时候,需要给出VPC里的EIP的allocation_id,而allocation_id要从eip的属性里找出来,disassociate eip的时候,需要提供association_id,这个id比较难找。而常规的思路是,不管是关联和解关联,只需要提供实例ID和EIP就行,因此我封装了几个函数来使EIP的使用变的稍微友好点。
(ElasticIP和PublicIP的区别,详见我的这篇文章http://imbusy.me/elastic_ip-and-public_ip.html)
1,将eip的allocation函数封装,返回IP和allocationIP的字典,供后面关联函数使用
import boto.ec2 region = 'ap-southeast-1' def eip_allocation(domain='vpc'): conn = boto.ec2.connect_to_region(region) allocation = conn.allocate_address(domain='vpc', dry_run=False) return {'public_ip':allocation.public_ip, 'allocation_id':allocation.allocation_id}
返回字典例如
{'public_ip':'54.169.xx.xx', 'allocation_id&