Search code examples
pythonbotoeucalyptus

Proper version of boto for Eucalyptus cloud


I'm writing some code to interact with an HP Helion Eucalyptus 4.2 cloud server. At the moment I'm using boto 2.38.0, but I discovered that also exists the boto3 version. Which version should I use in order to keep the code up with the times? I mean, It seems that boto3's proposal is a ground-up rewrite more focused on the "official" Amazon Web Services (AWS).


Solution

  • You can easilly use boto3. Here is the article clearly explaining that. I tried it myself with Eucalyptus 4.2.1. So I defined the config and credentials file.

    $ cat .aws/config 
    [profile admin]
    output = json
    region = region1
    
    $ cat .aws/credentials
    [admin]
    aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
    aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    

    Then I used the interactive Ipython shell, so I listed my running instances.

    In [1]: from boto3.session import Session
    
    In [2]: session = Session(region_name='region1', profile_name="admin")
    
    In [3]: client = session.client('ec2', endpoint_url='http://compute.region1.cloud.mydomain.net:8000/')
    
    In [4]: for reservation in client.describe_instances()['Reservations']: 
       ...:       for instance in reservation['Instances']:
       ...:             print instance['InstanceId']
       ...:         
    i-c706792f
    i-af613099
    i-fc0c55ee
    i-4f493764
    i-943d0ce3
    

    I don't use verify argument in session.client(), because my testing EC2 endpoint doesn't use HTTPS but plain HTTP.