blob: f0f2d0f6cdcabe24f98ebb75fb122c812f161d2b [file] [log] [blame]
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<section id="aws-ec2-configuration">
<title>Enabling the EC2 and S3 Compatible Interface</title>
<para>The software that provides AWS API compatibility is installed along with &PRODUCT;. You must enable the services and perform some setup steps prior to using it.
</para>
<orderedlist>
<listitem id="set-global-config"><para>Set the global configuration parameters for each service to true.
See <xref linkend="global-config" />.</para></listitem>
<listitem><para>Create a set of &PRODUCT; service offerings with names that match the Amazon service offerings.
You can do this through the &PRODUCT; UI as described in the Administration Guide.</para>
<warning><para>Be sure you have included the Amazon default service offering, m1.small. As well as any EC2 instance types that you will use.</para></warning>
</listitem>
<listitem><para>If you did not already do so when you set the configuration parameter in step <xref linkend="set-global-config"/>, restart the Management Server.</para>
<programlisting># service cloudstack-management restart</programlisting>
</listitem>
</orderedlist>
<para>The following sections provides details to perform these steps</para>
<section id="aws-api-settings">
<title>Enabling the Services</title>
<para>To enable the EC2 and S3 compatible services you need to set the configuration variables <emphasis>enable.ec2.api</emphasis>
and <emphasis>enable.s3.api</emphasis> to true. You do not have to enable both at the same time. Enable the ones you need.
This can be done via the &PRODUCT; GUI by going in <emphasis>Global Settings</emphasis> or via the API.</para>
<para>The snapshot below shows you how to use the GUI to enable these services</para>
<para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/ec2-s3-configuration.png"/>
</imageobject>
<textobject>
<phrase>Use the GUI to set the configuration variable to <emphasis>true</emphasis></phrase>
</textobject>
</mediaobject>
</para>
<para>Using the &PRODUCT; API, the easiest is to use the so-called integration port on which you can make
unauthenticated calls. In Global Settings set the port to 8096 and subsequently call the <emphasis>updateConfiguration</emphasis> method.
The following urls shows you how:</para>
<para>
<programlisting>
http://localhost:8096/client/api?command=updateConfiguration&amp;name=enable.ec2.api&amp;value=true
http://localhost:8096/client/api?command=updateConfiguration&amp;name=enable.ec2.api&amp;value=true
</programlisting>
</para>
<para>Once you have enabled the services, restart the server.</para>
</section>
<section id="aws-ec2-service-offerings">
<title>Creating EC2 Compatible Service Offerings</title>
<para>You will also need to define compute service offerings with names compatible with the <ulink url="http://aws.amazon.com/ec2/instance-types/">
Amazon EC2 instance types</ulink> API names (e.g m1.small,m1.large). This can be done via the &PRODUCT; GUI.
Go under <emphasis>Service Offerings</emphasis> select <emphasis>Compute offering</emphasis> and either create
a new compute offering or modify an existing one, ensuring that the name matches an EC2 instance type API name. The snapshot below shows you how:</para>
<para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/compute-service-offerings.png"/>
</imageobject>
<textobject>
<phrase>Use the GUI to set the name of a compute service offering to an EC2 instance
type API name.</phrase>
</textobject>
</mediaobject>
</para>
</section>
<section id="aws-api-port-change">
<title>Modifying the AWS API Port</title>
<note>
<para>(Optional) The AWS API listens for requests on port 7080. If you prefer AWS API to listen on another port, you can change it as follows:</para>
<orderedlist numeration="loweralpha">
<listitem><para>Edit the files /etc/cloudstack/management/server.xml, /etc/cloudstack/management/server-nonssl.xml,
and /etc/cloudstack/management/server-ssl.xml.</para></listitem>
<listitem><para>In each file, find the tag &lt;Service name="Catalina7080"&gt;. Under this tag,
locate &lt;Connector executor="tomcatThreadPool-internal" port= ....&lt;.</para></listitem>
<listitem><para>Change the port to whatever port you want to use, then save the files.</para></listitem>
<listitem><para>Restart the Management Server.</para></listitem>
</orderedlist>
<para>If you re-install &PRODUCT;, you will have to re-enable the services and if need be update the port.</para>
</note>
</section>
</section>