<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ec2.amazonaws.com/doc/2006-06-26/"
	targetNamespace="http://ec2.amazonaws.com/doc/2006-06-26/">

	<types>
		<!-- INSERT XML SCHEMA DEFINITION  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:tns="http://ec2.amazonaws.com/doc/2006-06-26/"
	   targetNamespace="http://ec2.amazonaws.com/doc/2006-06-26/"    
	   elementFormDefault="qualified">
  
  <xs:annotation>
    <xs:documentation xml:lang="en">
      
    </xs:documentation>
  </xs:annotation>
  
  <!-- RegisterImage request definitions -->
  
  <xs:element name="RegisterImage" type="tns:RegisterImageType"/>

  <xs:complexType name="RegisterImageType">
    <xs:sequence>
      <xs:element name="imageLocation" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- RegisterImage response definitions -->

  <xs:element name="RegisterImageResponse" type="tns:RegisterImageResponseType"/>
  <xs:complexType name="RegisterImageResponseType">
    <xs:sequence>
      <xs:element name="imageId" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DeregisterImage request definitions -->

  <xs:element name="DeregisterImage" type="tns:DeregisterImageType"/>

  <xs:complexType name="DeregisterImageType">
    <xs:sequence>
      <xs:element name="imageId" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DeregisterImage response definitions -->

  <xs:element name="DeregisterImageResponse" type="tns:DeregisterImageResponseType"/>

  <xs:complexType name="DeregisterImageResponseType">
    <xs:sequence>
      <xs:element name="return" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <!-- CreateKeyPair request definitions -->
  
  <xs:element name="CreateKeyPair" type="tns:CreateKeyPairType"/>

  <xs:complexType name="CreateKeyPairType">
    <xs:sequence>
      <xs:element name="keyName" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>


  <!-- CreateKeyPair response definitions -->

  <xs:element name="CreateKeyPairResponse" type="tns:CreateKeyPairResponseType"/>
  
  <xs:complexType name="CreateKeyPairResponseType">
    <xs:sequence>
      <xs:element name="keyName" type="xs:string"/>
      <xs:element name="keyFingerprint" type="xs:string"/>
      <xs:element name="keyMaterial" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DeleteKeyPair request definitions -->
  
  <xs:element name="DeleteKeyPair" type="tns:DeleteKeyPairType" />

  <xs:complexType name="DeleteKeyPairType">
    <xs:sequence>
      <xs:element name="keyName" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DeleteKeyPair response definitions -->

  <xs:element name="DeleteKeyPairResponse" type="tns:DeleteKeyPairResponseType"/>
  
  <xs:complexType name="DeleteKeyPairResponseType">
    <xs:sequence>
      <xs:element name="return" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeKeyPairs Request definitions -->

  <xs:element name="DescribeKeyPairs" type="tns:DescribeKeyPairsType"/>

  <xs:complexType name="DescribeKeyPairsType">
    <xs:sequence>
      <xs:element name="keySet" type="tns:DescribeKeyPairsInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeKeyPairsInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:DescribeKeyPairsItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeKeyPairsItemType">
    <xs:sequence>
      <xs:element name="keyName" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeKeyPairs Response definitions -->

  <xs:element name="DescribeKeyPairsResponse" type="tns:DescribeKeyPairsResponseType"/>
  
  <xs:complexType name="DescribeKeyPairsResponseType">
    <xs:sequence>
      <xs:element name="keySet" type="tns:DescribeKeyPairsResponseInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeKeyPairsResponseInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:DescribeKeyPairsResponseItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeKeyPairsResponseItemType">
    <xs:sequence>
      <xs:element name="keyName" type="xs:string" />
      <xs:element name="keyFingerprint" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <!-- RunInstances request definitions -->

  <xs:element name="RunInstances" type="tns:RunInstancesType"/>

  <xs:complexType name="RunInstancesType">
    <xs:sequence>
      <xs:element name="instancesSet" type="tns:RunInstancesInfoType"/>
      <xs:element name="groupSet" type="tns:GroupSetType"/>
      <xs:element name="additionalInfo" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="RunInstancesInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:RunInstanceItemType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RunInstanceItemType">
    <xs:sequence>
      <xs:element name="imageId" type="xs:string"/>
      <xs:element name="minCount" type="xs:int"/>
      <xs:element name="maxCount" type="xs:int"/>
      <xs:element name="keyName" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GroupSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:GroupItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GroupItemType">
    <xs:sequence>
      <xs:element name="groupId" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- RunInstances response definitions -->

  <xs:element name="RunInstancesResponse" type="tns:ReservationInfoType"/>

  <xs:complexType name="ReservationInfoType">
    <xs:sequence>
      <xs:element name="reservationId" type="xs:string"/>
      <xs:element name="ownerId" type="xs:string"/>
      <xs:element name="groupSet" type="tns:GroupSetType"/>
      <xs:element name="instancesSet" type="tns:RunningInstancesSetType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RunningInstancesSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:RunningInstancesItemType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RunningInstancesItemType">
    <xs:sequence>
      <xs:element name="instanceId" type="xs:string"/>
      <xs:element name="imageId" type="xs:string"/>
      <xs:element name="instanceState" type="tns:InstanceStateType"/>
      <xs:element name="dnsName" type="xs:string"/>
      <xs:element name="reason" type="xs:string" minOccurs="0"/>
      <xs:element name="keyName" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <!-- TerminateInstances request definitions -->

  <xs:element name="TerminateInstances" type="tns:TerminateInstancesType"/>

  <xs:complexType name="TerminateInstancesType">
    <xs:sequence>
      <xs:element name="instancesSet" type="tns:TerminateInstancesInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TerminateInstancesInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:TerminateInstancesItemType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TerminateInstancesItemType">
    <xs:sequence>
      <xs:element name="instanceId" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>


  <!-- TerminateInstances response definitions -->

  <xs:element name="TerminateInstancesResponse" type="tns:TerminateInstancesResponseType"/>

  <xs:complexType name="TerminateInstancesResponseType">
    <xs:sequence>
      <xs:element name="instancesSet" type="tns:TerminateInstancesResponseInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TerminateInstancesResponseInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:TerminateInstancesResponseItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TerminateInstancesResponseItemType">
    <xs:sequence>
      <xs:element name="instanceId" type="xs:string" />
      <xs:element name="shutdownState" type="tns:InstanceStateType" />
      <xs:element name="previousState" type="tns:InstanceStateType" />
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeInstances Request definitions -->

  <xs:element name="DescribeInstances" type="tns:DescribeInstancesType"/>

  <xs:complexType name="DescribeInstancesType">
    <xs:sequence>
      <xs:element name="instancesSet" type="tns:DescribeInstancesInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeInstancesInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:DescribeInstancesItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeInstancesItemType">
    <xs:sequence>
      <xs:element name="instanceId" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeInstances Response definitions -->

  <xs:element name="DescribeInstancesResponse" type="tns:DescribeInstancesResponseType"/>
  
  <xs:complexType name="DescribeInstancesResponseType">
    <xs:sequence>
      <xs:element name="reservationSet" type="tns:ReservationSetType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ReservationSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:ReservationInfoType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeImages Request definitions -->

  <xs:element name="DescribeImages" type="tns:DescribeImagesType"/>

  <xs:complexType name="DescribeImagesType">
    <xs:sequence>
      <xs:element name="imagesSet" type="tns:DescribeImagesInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeImagesInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:DescribeImagesItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeImagesItemType">
    <xs:sequence>
      <xs:element name="imageId" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeImages Response definitions -->

  <xs:element name="DescribeImagesResponse" type="tns:DescribeImagesResponseType"/>
  
  <xs:complexType name="DescribeImagesResponseType">
    <xs:sequence>
      <xs:element name="imagesSet" type="tns:DescribeImagesResponseInfoType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeImagesResponseInfoType">
    <xs:sequence>
      <xs:element name="item" type="tns:DescribeImagesResponseItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeImagesResponseItemType">
    <xs:sequence>
      <xs:element name="imageId" type="xs:string" />
      <xs:element name="imageLocation" type="xs:string" />
      <xs:element name="imageState" type="xs:string" />
      <xs:element name="imageOwnerId" type="xs:string" />
      <xs:element name="isPublic" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>

  <!-- CreateSecurityGroup Request definitions -->

  <xs:element name="CreateSecurityGroup" 
	      type="tns:CreateSecurityGroupType"/>

  <xs:complexType name="CreateSecurityGroupType">
    <xs:sequence>
      <xs:element name="groupName" type="xs:string"/>
      <xs:element name="groupDescription" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- CreateSecurityGroup Response definitions -->

  <xs:element name="CreateSecurityGroupResponse" 
	      type="tns:CreateSecurityGroupResponseType"/>

  <xs:complexType name="CreateSecurityGroupResponseType">
    <xs:sequence>
      <xs:element name="return" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DeleteSecurityGroup Request definitions -->

  <xs:element name="DeleteSecurityGroup" 
	      type="tns:DeleteSecurityGroupType"/>

  <xs:complexType name="DeleteSecurityGroupType">
    <xs:sequence>
      <xs:element name="groupName" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DeleteSecurityGroup Response definitions -->

  <xs:element name="DeleteSecurityGroupResponse" 
	      type="tns:DeleteSecurityGroupResponseType"/>

  <xs:complexType name="DeleteSecurityGroupResponseType">
    <xs:sequence>
      <xs:element name="return" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeSecurityGroups Request definitions -->

  <xs:element name="DescribeSecurityGroups" 
	      type="tns:DescribeSecurityGroupsType"/>

  <xs:complexType name="DescribeSecurityGroupsType">
    <xs:sequence>
      <xs:element name="securityGroupSet" type="tns:DescribeSecurityGroupsSetType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeSecurityGroupsSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:DescribeSecurityGroupsSetItemType"
		  minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DescribeSecurityGroupsSetItemType">
    <xs:sequence>
      <xs:element name="groupName" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <!-- DescribeSecurityGroups Response definitions -->

  <xs:element name="DescribeSecurityGroupsResponse" 
	      type="tns:DescribeSecurityGroupsResponseType"/>

  <xs:complexType name="DescribeSecurityGroupsResponseType">
    <xs:sequence>
      <xs:element name="securityGroupInfo" type="tns:SecurityGroupSetType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="IpPermissionSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:IpPermissionType"
		  minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="IpPermissionType">
    <xs:sequence>
      <xs:element name="ipProtocol" type="xs:string"/>
      <xs:element name="fromPort" type="xs:int"/>
      <xs:element name="toPort" type="xs:int"/>
      <xs:element name="groups" type="tns:UserIdGroupPairSetType"/>
      <xs:element name="ipRanges" type="tns:IpRangeSetType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="IpRangeSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:IpRangeItemType"
		  minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="IpRangeItemType">
    <xs:sequence>
      <xs:element name="cidrIp" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="UserIdGroupPairSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:UserIdGroupPairType" 
		  minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="UserIdGroupPairType">
    <xs:sequence>
      <xs:element name="userId" type="xs:string"/>
      <xs:element name="groupName" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SecurityGroupSetType">
    <xs:sequence>
      <xs:element name="item" type="tns:SecurityGroupItemType" 
		  minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SecurityGroupItemType">
    <xs:sequence>
      <xs:element name="ownerId" type="xs:string"/>
      <xs:element name="groupName" type="xs:string"/>
      <xs:element name="groupDescription" type="xs:string"/>      
      <xs:element name="ipPermissions" type="tns:IpPermissionSetType"/>
    </xs:sequence>
  </xs:complexType>

  <!-- AuthorizeSecurityGroupIngress Request definitions -->

  <xs:annotation>
  	<xs:documentation xml:lang="en">
  		This API call should be treated as under development. The current API specification supports a richer
  		set of semantics than we intend to retain in future releases, and the details for this call are still under
  		review. Semantically, clients can depend on fine grained CIDR based access control (as currently exposed) but
  		for group based access control clients should only depend on the ability to control access for an entire
  		(user,group) tuple. Fine grained group based access control at the protocol and port or icmp code:type level
  		are not guaranteed to be supported in future releases of this API.
  	</xs:documentation>
  </xs:annotation>
	  
  <xs:element name="AuthorizeSecurityGroupIngress" 
	      type="tns:AuthorizeSecurityGroupIngressType"/>

  <xs:complexType name="AuthorizeSecurityGroupIngressType">
    <xs:sequence>
      <xs:element name="userId" type="xs:string"/>
      <xs:element name="groupName" type="xs:string"/>
      <xs:element name="ipPermissions" type="tns:IpPermissionSetType"/>
    </xs:sequence>
  </xs:complexType>

  <!-- AuthorizeSecurityGroupIngress Response definitions -->

  <xs:element name="AuthorizeSecurityGroupIngressResponse" 
	      type="tns:AuthorizeSecurityGroupIngressResponseType"/>

  <xs:complexType name="AuthorizeSecurityGroupIngressResponseType">
    <xs:sequence>
      <xs:element name="return" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <!-- RevokeSecurityGroupIngress Request definitions -->

  <xs:annotation>
  	<xs:documentation xml:lang="en">
  		This API call should be treated as under development. The current API specification supports a richer
  		set of semantics than we intend to retain in future releases, and the details for this call are still under
  		review. Semantically, clients can depend on fine grained CIDR based access control (as currently exposed) but
  		for group based access control clients should only depend on the ability to control access for an entire
  		(user,group) tuple. Fine grained group based access control at the protocol and port or icmp code:type level
  		are not guaranteed to be supported in future releases of this API.
  	</xs:documentation>
  </xs:annotation>

  <xs:element name="RevokeSecurityGroupIngress" 
	      type="tns:RevokeSecurityGroupIngressType"/>

  <xs:complexType name="RevokeSecurityGroupIngressType">
    <xs:sequence>
      <xs:element name="userId" type="xs:string"/>
      <xs:element name="groupName" type="xs:string"/>
      <xs:element name="ipPermissions" type="tns:IpPermissionSetType"/>
    </xs:sequence>
  </xs:complexType>

  <!-- RevokeSecurityGroupIngress Response definitions -->

  <xs:element name="RevokeSecurityGroupIngressResponse" 
	      type="tns:RevokeSecurityGroupIngressResponseType"/>

  <xs:complexType name="RevokeSecurityGroupIngressResponseType">
    <xs:sequence>
      <xs:element name="return" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Instance state type definition -->

  <xs:complexType name="InstanceStateType">
    <xs:sequence>
      <xs:element name="code" type="xs:int"/>
      <xs:element name="name" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
	</types>

	<!-- message definitions -->

	<message name="RegisterImageRequestMsg">
		<part name="body" element="tns:RegisterImage" />
	</message>

	<message name="RegisterImageResponseMsg">
		<part name="body" element="tns:RegisterImageResponse" />
	</message>

	<message name="DeregisterImageRequestMsg">
		<part name="body" element="tns:DeregisterImage" />
	</message>

	<message name="DeregisterImageResponseMsg">
		<part name="body" element="tns:DeregisterImageResponse" />
	</message>

	<message name="RunInstancesRequestMsg">
		<part name="body" element="tns:RunInstances" />
	</message>

	<message name="RunInstancesResponseMsg">
		<part name="body" element="tns:RunInstancesResponse" />
	</message>

	<message name="CreateKeyPairRequestMsg">
		<part name="body" element="tns:CreateKeyPair" />
	</message>

	<message name="CreateKeyPairResponseMsg">
		<part name="body" element="tns:CreateKeyPairResponse" />
	</message>

	<message name="DescribeKeyPairsRequestMsg">
		<part name="body" element="tns:DescribeKeyPairs" />
	</message>

	<message name="DescribeKeyPairsResponseMsg">
		<part name="body" element="tns:DescribeKeyPairsResponse" />
	</message>

	<message name="DeleteKeyPairRequestMsg">
		<part name="body" element="tns:DeleteKeyPair" />
	</message>

	<message name="DeleteKeyPairResponseMsg">
		<part name="body" element="tns:DeleteKeyPairResponse" />
	</message>

	<message name="TerminateInstancesRequestMsg">
		<part name="body" element="tns:TerminateInstances" />
	</message>

	<message name="TerminateInstancesResponseMsg">
		<part name="body" element="tns:TerminateInstancesResponse" />
	</message>

	<message name="DescribeInstancesRequestMsg">
		<part name="body" element="tns:DescribeInstances" />
	</message>

	<message name="DescribeInstancesResponseMsg">
		<part name="body" element="tns:DescribeInstancesResponse" />
	</message>

	<message name="DescribeImagesRequestMsg">
		<part name="body" element="tns:DescribeImages" />
	</message>

	<message name="DescribeImagesResponseMsg">
		<part name="body" element="tns:DescribeImagesResponse" />
	</message>

	<message name="CreateSecurityGroupRequestMsg">
		<part name="body" element="tns:CreateSecurityGroup" />
	</message>

	<message name="CreateSecurityGroupResponseMsg">
		<part name="body" element="tns:CreateSecurityGroupResponse" />
	</message>

	<message name="DeleteSecurityGroupRequestMsg">
		<part name="body" element="tns:DeleteSecurityGroup" />
	</message>

	<message name="DeleteSecurityGroupResponseMsg">
		<part name="body" element="tns:DeleteSecurityGroupResponse" />
	</message>

	<message name="DescribeSecurityGroupsRequestMsg">
		<part name="body" element="tns:DescribeSecurityGroups" />
	</message>

	<message name="DescribeSecurityGroupsResponseMsg">
		<part name="body" element="tns:DescribeSecurityGroupsResponse" />
	</message>

	<message name="AuthorizeSecurityGroupIngressRequestMsg">
		<part name="body" element="tns:AuthorizeSecurityGroupIngress" />
	</message>

	<message name="AuthorizeSecurityGroupIngressResponseMsg">
		<part name="body" element="tns:AuthorizeSecurityGroupIngressResponse" />
	</message>

	<message name="RevokeSecurityGroupIngressRequestMsg">
		<part name="body" element="tns:RevokeSecurityGroupIngress" />
	</message>

	<message name="RevokeSecurityGroupIngressResponseMsg">
		<part name="body" element="tns:RevokeSecurityGroupIngressResponse" />
	</message>

	<portType name="AmazonEC2PortType">
		<operation name="RegisterImage">
			<input message="tns:RegisterImageRequestMsg" />
			<output message="tns:RegisterImageResponseMsg" />
		</operation>
		<operation name="DeregisterImage">
			<input message="tns:DeregisterImageRequestMsg" />
			<output message="tns:DeregisterImageResponseMsg" />
		</operation>
		<operation name="RunInstances">
			<input message="tns:RunInstancesRequestMsg" />
			<output message="tns:RunInstancesResponseMsg" />
		</operation>
		<operation name="CreateKeyPair">
			<input message="tns:CreateKeyPairRequestMsg" />
			<output message="tns:CreateKeyPairResponseMsg" />
		</operation>
		<operation name="DescribeKeyPairs">
			<input message="tns:DescribeKeyPairsRequestMsg" />
			<output message="tns:DescribeKeyPairsResponseMsg" />
		</operation>
		<operation name="DeleteKeyPair">
			<input message="tns:DeleteKeyPairRequestMsg" />
			<output message="tns:DeleteKeyPairResponseMsg" />
		</operation>
		<operation name="TerminateInstances">
			<input message="tns:TerminateInstancesRequestMsg" />
			<output message="tns:TerminateInstancesResponseMsg" />
		</operation>
		<operation name="DescribeInstances">
			<input message="tns:DescribeInstancesRequestMsg" />
			<output message="tns:DescribeInstancesResponseMsg" />
		</operation>
		<operation name="DescribeImages">
			<input message="tns:DescribeImagesRequestMsg" />
			<output message="tns:DescribeImagesResponseMsg" />
		</operation>
		<operation name="CreateSecurityGroup">
			<input message="tns:CreateSecurityGroupRequestMsg" />
			<output message="tns:CreateSecurityGroupResponseMsg" />
		</operation>
		<operation name="DeleteSecurityGroup">
			<input message="tns:DeleteSecurityGroupRequestMsg" />
			<output message="tns:DeleteSecurityGroupResponseMsg" />
		</operation>
		<operation name="DescribeSecurityGroups">
			<input message="tns:DescribeSecurityGroupsRequestMsg" />
			<output message="tns:DescribeSecurityGroupsResponseMsg" />
		</operation>
		<operation name="AuthorizeSecurityGroupIngress">
			<input message="tns:AuthorizeSecurityGroupIngressRequestMsg" />
			<output message="tns:AuthorizeSecurityGroupIngressResponseMsg" />
		</operation>
		<operation name="RevokeSecurityGroupIngress">
			<input message="tns:RevokeSecurityGroupIngressRequestMsg" />
			<output message="tns:RevokeSecurityGroupIngressResponseMsg" />
		</operation>
	</portType>

	<binding name="AmazonEC2Binding" type="tns:AmazonEC2PortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

		<operation name="RegisterImage">
			<soap:operation soapAction="RegisterImage" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="DeregisterImage">
			<soap:operation soapAction="DeregisterImage" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="CreateKeyPair">
			<soap:operation soapAction="CreateKeyPair" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="DescribeKeyPairs">
			<soap:operation soapAction="DescribeKeyPair" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="DeleteKeyPair">
			<soap:operation soapAction="DeleteKeyPair" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="RunInstances">
			<soap:operation soapAction="RunInstances" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="TerminateInstances">
			<soap:operation soapAction="TerminateInstances" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="DescribeInstances">
			<soap:operation soapAction="DescribeInstances" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="DescribeImages">
			<soap:operation soapAction="DescribeImages" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="CreateSecurityGroup">
			<soap:operation soapAction="CreateSecurityGroup" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>


		<operation name="DeleteSecurityGroup">
			<soap:operation soapAction="DeleteSecurityGroup" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="DescribeSecurityGroups">
			<soap:operation soapAction="DescribeSecurityGroups" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="AuthorizeSecurityGroupIngress">
			<soap:operation soapAction="AuthorizeSecurityGroupIngress" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

		<operation name="RevokeSecurityGroupIngress">
			<soap:operation soapAction="RevokeSecurityGroupIngress" />
			<input>
				<soap:body use="literal" />
			</input>
			<output>
				<soap:body use="literal" />
			</output>
		</operation>

	</binding>

	<service name="AmazonEC2">
		<port name="AmazonEC2Port" binding="tns:AmazonEC2Binding">
			<soap:address location="https://ec2.amazonaws.com/" />
		</port>
	</service>

</definitions>

