Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Tools to run EC2 Query API's against CloudStack

[A] Boto Client

1. Installation

Wiki Markup
*\[A\] Boto Client{*}

...

Use any of the following to install boto,

  1. sudo apt-get install python-boto
  2. pip install --U boto
  3. git clone https://github.com/boto/boto.git; cd boto; sudo python setup.py install

2. Configuration

...

Edit /etc/boto.cfg or ~/.boto to add,

Code Block
borderStyledashed

[Credentials]
aws_access_key_id= <cloudstack_api_key>
aws_secret_access_key=  <cloudstack_secret_key>

...

For

...

more

...

details

...

on

...

Boto

...

configuration refer [1

...

]

3. Connection

...

Make an EC2 service connection against CloudStack management server. Use

...

this connection to make any of the supported EC2 API

...

calls,

Sample python code that uses Boto client to make EC2 DescribeImages API call against CloudStack,

Code Block
borderStyledashed

import boto
import boto.ec2

region = boto.ec2.regioninfo.RegionInfo(name="AmazonEC2", endpoint="<cloudstack_management_server_ip>")
conn = boto.connect_ec2(aws_access_key_id="<cloudstack_api_key>", aws_secret_access_key="<cloudstack_secret_key>", is_secure=False, region=region, port=7080, path="/awsapi", api_version="2012-08-15")

# run an instance
instance = conn.

...

run_instances('<image-id>', min_count=1, max_count=1) 

# response of the command (contains list of instances, owner of the instances etc. )
vars(instance)

# list attribute values of one of the instances launched
vars(instance.instances[0])

# list details of the security group that the launched instances belong to
vars(instance.groups)

For a complete list of Boto EC2 commands see attached file - EC2_API_vs_Boto_commands.xlsx.

For details on each of the commands see [2].

[B] Java SDK

Download source from [3]. For general guidelines on how to use the SDK, refer [4

Wiki Markup
For a complete list off Boto EC2 API calls refer \[2\]

Wiki Markup
*\[B\] Java SDK{*}

Wiki MarkupDownload source from \[3\].&nbsp;For general guidelines on how to use the SDK, refer \[4\].

Below is a sample Java code that uses the SDK to make EC2 DescribeImages API call against CloudStack,

Code Block
borderStyledashed
AWSCredentials credentials = null;
String endpoint = "http://<cloudstack_management_server_ipip>:7080/awsapi/awsapi>";
Protocol protocol = Protocol.HTTP;
int timeout = 600 * 1000;

// Extract AWS_ACCESS_KEY and AWS_SECRET_KEY from AwsCreadentials.properties file
try {
    credentials = new PropertiesCredentials(InlineGettingStartedCodeSampleApp.class.getResourceAsStream("AwsCredentials.properties"));
} catch (IOException e1) {
    System.out.println("Credential were not properly entered into AwsCredntials.properties.");
    System.exit(-1);
}

// Create a Client configuration object to control how the client connects to CloudStack e.g. retry counts
ClientConfiguration client = new ClientConfiguration();
client.setProtocol(protocol);
client.setSocketTimeout(timeout);

// Create a Amazon EC2Client object to call any EC2 API
ec2 = new AmazonEC2Client(credentials, client);
ec2.setEndpoint(endpoint);

// Use the Amazon client object to make the api call DecsribeImages
DescribeImagesRequest imagesRequest = new DescribeImagesRequest();
DescribeImagesResult imagesResult = ec2.describeImages(imagesRequest);
System.out.println("DescribeImages: " + imagesResult);

Note: Before running the sample, place it in the samples _folder and fill in AwsCredentials.properties with _accessKey=<cloudStack_api_key> and secretkey=<cloudstack_secret_key>unmigrated-wiki-markup

One can use the AWS Toolkit for Eclipse&nbsp;to add the AWS SDK for Java to an existing project, or create a new Java project based on the SDK&nbsp;\[5\].

Wiki Markup
*\[C\] PHP SDK{*}

for Eclipse to add the AWS SDK for Java to an existing project, or create a new Java project based on the SDK [5].

[C] PHP SDK

Download source from [6]. For general guidelines on how to use the SDK, refer [7 Wiki MarkupDownload source from \[6\].&nbsp;For general guidelines on how to use the SDK, refer \[7\].

Below is a sample PHP code that uses the SDK to make EC2 DescribeImages API call against CloudStack,

Code Block
borderStyledashed
<?php

error_reporting(-1);
header("Content-type: text/html; charset=utf-8");
require_once '../sdk.class.php';

$ec2 = new AmazonEC2();
$ec2->set_hostname('http://< cloudstack_management_server_ip >:7080/awsapi/');
$ec2->disable_ssl();
$ec2->set_max_retries(0);

$response  = $ec2->describe_images();
echo "\nDescribeImages \n";
print_r($response->body);

?>

Note: Before running the sample in _samples folder, rename config-sample.inc.php to config.inc.php _and write into the file with ‘key’=><cloudStack_api_key> and ‘secret’=><cloudstack_secret_key>_

References

Wiki Markup\[1\]&nbsp;[ http://docs.pythonboto.org/en/latest/boto_config_tut.html|http://docs.pythonboto.org/en/latest/boto_config_tut.html]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                                       

[2]  Wiki Markup\[2\]&nbsp;[http://docs.pythonboto.org/en/latest/ref/ec2.html#module-boto.ec2.connection|http://docs.pythonboto.org/en/latest/ref/ec2.html#module-boto.ec2.connection]unmigrated-wiki-markup

\[3\]&nbsp;[ http://aws.amazon.com/sdkforjava/|http://aws.amazon.com/sdkforjava/] Wiki Markup

\[4\]&nbsp;[ http://aws.amazon.com/articles/3586?_encoding=UTF8&jiveRedirect=1|http://aws.amazon.com/articles/3586?_encoding=UTF8&jiveRedirect=1]unmigrated-wiki-markup\

[5\]&nbsp;[http://aws.amazon.com/eclipse/|http://aws.amazon.com/eclipse/]unmigrated-wiki-markup\

[6\]&nbsp;[ http://aws.amazon.com/sdkforphp/|http://aws.amazon.com/sdkforphp/] Wiki Markup

\[7\]&nbsp;[ http://aws.amazon.com/articles/4261?_encoding=UTF8&jiveRedirect=1|http://aws.amazon.com/articles/4261?_encoding=UTF8&jiveRedirect=1]