f3adc74c90
Create a tox environment for running the unit tests against the lower bounds of the dependencies. Create a lower-constraints.txt to be used to enforce the lower bounds in those tests. Add openstack-tox-lower-constraints job to the zuul configuration. See http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html for more details. Change-Id: I092758f7553860040990790a31651cd35affbc67 Depends-On: https://review.openstack.org/555034 Signed-off-by: Doug Hellmann <doug@doughellmann.com> |
||
---|---|---|
api-ref/source | ||
devstack | ||
doc/source | ||
ec2api | ||
etc/ec2api | ||
playbooks/legacy | ||
rally-scenarios | ||
tools | ||
.gitignore | ||
.gitreview | ||
.testr.conf | ||
.zuul.yaml | ||
babel.cfg | ||
CONTRIBUTING.rst | ||
HACKING.rst | ||
install.sh | ||
LICENSE | ||
lower-constraints.txt | ||
README.rst | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
test-requirements.txt | ||
tox.ini |
Team and repository tags
OpenStack EC2 API README
Support of EC2 API for OpenStack. This project provides a standalone EC2 API service which pursues two goals:
- Implement VPC API
- Create a standalone service for EC2 API support.
Installation
Run install.sh
The EC2 API service gets installed on port 8788 by default. It can be changed before the installation in install.sh script.
The services afterwards can be started as binaries:
/usr/local/bin/ec2-api
/usr/local/bin/ec2-api-metadata
/usr/local/bin/ec2-api-s3
or set up as Linux services.
Installation in devstack:
In order to install ec2-api with devstack the following should be added to the local.conf or localrc the following line:
enable_plugin ec2-api https://git.openstack.org/openstack/ec2-api
To configure OpenStack for EC2 API metadata service:
- for Nova-network
-
add:
[DEFAULT] metadata_port = 8789 [neutron] service_metadata_proxy = True
to /etc/nova.conf
then restart nova-metadata (can be run as part of nova-api service) and nova-network services.
- for Neutron
-
add:
[DEFAULT] nova_metadata_port = 8789
to /etc/neutron/metadata_agent.ini
then restart neutron-metadata service.
S3 server is intended only to support EC2 operations which require S3 server (e.g. CreateImage) in OpenStack deployments without regular object storage. It must not be used as a substitution for all-purposes object storage server. Do not start it if the deployment has its own object storage or uses a public one (e.g. AWS S3).
Usage
Download aws cli from Amazon. Create configuration file for aws cli in your home directory ~/.aws/config:
[default]
aws_access_key_id = 1b013f18d5ed47ae8ed0fbb8debc036b
aws_secret_access_key = 9bbc6f270ffd4dfdbe0e896947f41df3
region = us-east-1
Change the aws_access_key_id and aws_secret_acces_key above to the values appropriate for your cloud (can be obtained by "openstack ec2 credentials list" command).
Run aws cli commands using new EC2 API endpoint URL (can be obtained from openstack cli with the new port 8788) like this:
aws --endpoint-url http://10.0.2.15:8788 ec2 describe-instances
Supported Features and Limitations
- General:
-
- DryRun option is not supported.
- Some exceptions are not exactly the same as reported by AWS.
AWS Component | Command | Functionality group | Limitations |
---|---|---|---|
bold - supported, normal - supported with limitations, italic -not supported | |||
VPC | AcceptVpcPeeringConnection | cross-VPC connectivity | not supported |
EC2, VPC | AllocateAddress | addresses | |
AllocateHosts | dedicated hosts | not supported | |
AssignIpv6Addresses | network interfaces | not supported | |
VPC | AssignPrivateIpAddresses | network interfaces | allowReassignment parameter |
EC2, VPC | AssociateAddress | addresses | |
VPC | AssociateDhcpOptions | DHCP options | |
VPC | AssociateRouteTable | routes | |
AssociateSubnetCidrBlock | subnets | not supported | |
AssociateVpcCidrBlock | VPC | not supported | |
VPC | AttachClassicLinkVpc | cross-VPC connectivity | not supported |
VPC | AttachInternetGateway | internet gateways | |
VPC | AttachNetworkInterface | network interfaces | |
EC2, EBS | AttachVolume | volumes | |
VPC | AttachVpnGateway | VPN | |
EC2, VPC | AuthorizeSecurityGroupEgress | security groups | EC2 classic way to pass cidr, protocol, sourceGroup, ports parameters |
EC2, VPC | AuthorizeSecurityGroupIngress | security groups | EC2 classic way to pass cidr, protocol, sourceGroup, ports parameters |
BundleInstance | tasks,s3 | not supported | |
CancelBundleTask | tasks,s3 | not supported | |
CancelConversionTask | tasks,s3 | not supported | |
CancelExportTask | tasks,s3 | not supported | |
CancelImportTask | tasks,s3 | not supported | |
CancelReservedInstancesListing | market | not supported | |
CancelSpotFleetRequests | market | not supported | |
CancelSpotInstanceRequests | market | not supported | |
ConfirmProductInstance | product codes | not supported | |
EBS | CopyImage | image provisioning | not supported |
EBS | CopySnapshot | snapshots,s3 | not supported |
VPC | CreateCustomerGateway | VPC gateways | BGPdynamicrouting |
VPC | CreateDhcpOptions | DHCP options | |
CreateEgressOnlyInternetGateway | VPC gateways | not supported | |
CreateFlowLogs | infrastructural | not supported | |
EBS | CreateImage | images | blockDeviceMapping parameter |
CreateInstanceExportTask | tasks,s3 | not supported | |
VPC | CreateInternetGateway | VPC gateways | |
EC2 | CreateKeyPair | key pairs | |
CreateNatGateway | NAT gateways | not supported | |
VPC | CreateNetworkAcl | ACL | not supported |
VPC | CreateNetworkAclEntry | ACL | not supported |
VPC | CreateNetworkInterface | network interfaces | |
CreatePlacementGroup | clusters | not supported | |
CreateReservedInstancesListing | market | not supported | |
VPC | CreateRoute | routes | vpcPeeringConnection parameter |
VPC | CreateRouteTable | routes | |
EC2, VPC | CreateSecurityGroup | security groups | |
EBS | CreateSnapshot | snapshots | |
CreateSpotDatafeedSubscription | market | not supported | |
VPC | CreateSubnet | subnets | availabilityZone parameter |
EC2 | CreateTags | tags | |
EBS | CreateVolume | volumes | iops, encrypted, kmsKeyId parameters |
VPC | CreateVpc | VPC | |
VPC | CreateVpcEndpoint | cross-VPC connectivity | not supported |
VPC | CreateVpcPeeringConnection | cross-VPC connectivity | not supported |
VPC | CreateVpnConnection | VPN | BGP dynamic routing |
VPC | CreateVpnConnectionRoute | VPN | |
VPC | CreateVpnGateway | VPN | BGP dynamic routing |
VPC | DeleteCustomerGateway | VPC gateways | |
VPC | DeleteDhcpOptions | DHCP options | |
DeleteEgressOnlyInternetGateway | VPC gateways | not supported | |
DeleteFlowLogs | infrastructural | not supported | |
VPC | DeleteInternetGateway | VPC gateways | |
EC2 | DeleteKeyPair | key pairs | |
DeleteNatGateway | NAT gateways | not supported | |
VPC | DeleteNetworkAcl | ACL | not supported |
VPC | DeleteNetworkAclEntry | ACL | not supported |
VPC | DeleteNetworkInterface | network interfaces | |
EC2 | DeletePlacementGroup | clusters | not supported |
VPC | DeleteRoute | routes | |
VPC | DeleteRouteTable | routes | |
EC2, VPC | DeleteSecurityGroup | security groups | |
EBS | DeleteSnapshot | snapshots | |
DeleteSpotDatafeedSubscription | market | not supported | |
VPC | DeleteSubnet | subnets | |
EC2 | DeleteTags | tags | |
EBS | DeleteVolume | volumes | |
VPC | DeleteVpc | VPC | |
VPC | DeleteVpcEndpoints | cross-VPC connectivity | not supported |
VPC | DeleteVpcPeeringConnection | cross-VPC connectivity | not supported |
VPC | DeleteVpnConnection | VPN | |
VPC | DeleteVpnConnectionRoute | VPN | |
VPC | DeleteVpnGateway | VPN | |
EBS | DeregisterImage | images | |
EC2 | DescribeAccountAttributes | infrastructural | vpc-max-security-groups-per-interface, max-elastic-ips, vpc-max-elastic-ips attributes |
EC2, VPC | DescribeAddresses | addresses | |
EC2 | DescribeAvailabilityZones | availability zones | |
DescribeBundleTasks | tasks,s3 | not supported | |
VPC | DescribeClassicLinkInstances | cross-VPC connectivity | not supported |
DescribeConversionTasks | tasks,s3 | not supported | |
VPC | DescribeCustomerGateways | gateways | |
VPC | DescribeDhcpOptions | DHCP options | |
DescribeEgressOnlyInternetGateways | VPC gateways | not supported | |
DescribeExportTasks | tasks,s3 | not supported | |
DescribeFlowLogs | infrastructural | not supported | |
DescribeHosts | dedicated hosts | not supported | |
DescribeIdentityIdFormat | resource IDs | not supported | |
DescribeIdFormat | resource IDs | not supported | |
EBS | DescribeImageAttribute | images | productCodes, sriovNetSupport attributes |
EBS | DescribeImages | images | |
DescribeImportImageTasks | tasks,s3 | not supported | |
DescribeImportSnapshotTasks | tasks,s3 | not supported | |
EC2 | DescribeInstanceAttribute | instances | same limitations as for ModifyInstanceAttribute |
EC2, EBS, VPC | DescribeInstances | instances | |
DescribeInstanceStatus | monitoring | not supported | |
VPC | DescribeInternetGateways | gateways | |
EC2 | DescribeKeyPairs | key pairs | |
VPC | DescribeMovingAddresses | infrastructural | not supported |
DescribeNatGateways | NAT gateways | not supported | |
VPC | DescribeNetworkAcls | ACL | not supported |
VPC | DescribeNetworkInterfaceAttribute | network interfaces | |
VPC | DescribeNetworkInterfaces | network interfaces | |
EC2 | DescribePlacementGroups | clusters | not supported |
VPC | DescribePrefixLists | cross-VPC connectivity | not supported |
EC2 | DescribeRegions | availability zones | RegionNameparameter |
DescribeReservedInstances | market | not supported | |
DescribeReservedInstancesListings | market | not supported | |
DescribeReservedInstancesModifications | market | not supported | |
DescribeReservedInstancesOfferings | market | not supported | |
VPC | DescribeRouteTables | routes | |
DescribeScheduledInstanceAvailability | scheduled instances | not supported | |
DescribeScheduledInstances | scheduled instances | not supported | |
DescribeSecurityGroupReferences | security groups | not supported | |
EC2, VPC | DescribeSecurityGroups | security groups | cidr, protocol, port, sourceGroup parameters |
EBS | DescribeSnapshotAttribute | snapshots | not supported |
EBS | DescribeSnapshots | snapshots | |
DescribeSpotDatafeedSubscription | market | not supported | |
DescribeSpotFleetInstances | market | not supported | |
DescribeSpotFleetRequestHistory | market | not supported | |
DescribeSpotFleetRequests | market | not supported | |
DescribeSpotInstanceRequests | market | not supported | |
DescribeSpotPriceHistory | market | not supported | |
DescribeStaleSecurityGroups | security groups | not supported | |
VPC | DescribeSubnets | subnets | |
EC2 | DescribeTags | tags | |
EBS | DescribeVolumeAttribute | volumes | not supported |
EBS | DescribeVolumes | volumes | |
DescribeVolumeStatus | monitoring | not supported | |
VPC | DescribeVpcAttribute | VPC | not supported |
VPC | DescribeVpcClassicLink | cross-VPC connectivity | not supported |
DescribeVpcClassicLinkDnsSupport | cross-VPC connectivity | not supported | |
VPC | DescribeVpcEndpoints | cross-VPC connectivity | not supported |
VPC | DescribeVpcEndpointServices | cross-VPC connectivity | not supported |
VPC | DescribeVpcPeeringConnections | cross-VPC connectivity | not supported |
VPC | DescribeVpcs | VPC | |
VPC | DescribeVpnConnections | VPN | |
VPC | DescribeVpnGateways | VPN | |
VPC | DetachClassicLinkVpc | cross-VPC connectivity | not supported |
VPC | DetachInternetGateway | VPC | |
VPC | DetachNetworkInterface | network interfaces | |
EC2, EBS | DetachVolume | volumes | instance_id, device, force parameters |
VPC | DetachVpnGateway | VPN | |
VPC | DisableVgwRoutePropagation | VPN | |
VPC | DisableVpcClassicLink | cross-VPC connectivity | not supported |
DisableVpcClassicLinkDnsSupport | cross-VPC connectivity | not supported | |
EC2, VPC | DisassociateAddress | addresses | |
VPC | DisassociateRouteTable DisassociateSubnetCidrBlock | routes subnets | not supported |
DisassociateVpcCidrBlock | VPC | not supported | |
VPC | EnableVgwRoutePropagation | VPN | |
EBS | EnableVolumeIO | monitoring | not supported |
VPC | EnableVpcClassicLink | cross-VPC connectivity | not supported |
EnableVpcClassicLinkDnsSupport | cross-VPC connectivity | not supported | |
EC2 | GetConsoleOutput | instances | |
GetConsoleScreenshot | instances | not supported | |
EC2 | GetPasswordData | instances | |
ImportImage | tasks,s3 | not supported | |
ImportInstance | tasks,s3 | not supported | |
EC2 | ImportKeyPair | keypairs | |
ImportSnapshot | tasks,s3 | not supported | |
ImportVolume | tasks,s3 | not supported | |
ModifyHosts | dedicated hosts | not supported | |
ModifyIdentityIdFormat | resource IDs | not supported | |
ModifyIdFormat | resource IDs | not supported | |
EBS | ModifyImageAttribute | images | productCodes attribute |
EC2 | ModifyInstanceAttribute | instances | only disableApiTermination, sourceDestCheck,instanceType supported |
ModifyInstancePlacement | dedicated hosts | not supported | |
VPC | ModifyNetworkInterfaceAttribute | network interfaces | |
ModifyReservedInstances | market | not supported | |
EBS | ModifySnapshotAttribute | snapshots | not supported |
ModifySpotFleetRequest | market | not supported | |
VPC | ModifySubnetAttribute | subnets | not supported |
EBS | ModifyVolumeAttribute | volumes | not supported |
VPC | ModifyVpcAttribute | VPC | not supported |
VPC | ModifyVpcEndpoint | cross-VPC connectivity | not supported |
ModifyVpcPeeringConnectionOptions | cross-VPC connectivity | not supported | |
MonitorInstances | monitoring | not supported | |
VPC | MoveAddressToVpc | infrastructural | not supported |
PurchaseReservedInstancesOffering | market | not supported | |
PurchaseScheduledInstances | scheduled instances | not supported | |
EC2 | RebootInstances | instances | |
EBS | RegisterImage | images | virtualizationType, sriovNetSupport parameters |
VPC | RejectVpcPeeringConnection | cross-VPC connectivity | not supported |
EC2, VPC | ReleaseAddress | addresses | |
ReleaseHosts | dedicated hosts | not supported | |
VPC | ReplaceNetworkAclAssociation | ACL | not supported |
VPC | ReplaceNetworkAclEntry | ACL | not supported |
VPC | ReplaceRoute | routes | |
VPC | ReplaceRouteTableAssociation | routes | |
ReportInstanceStatus | monitoring | not supported | |
RequestSpotFleet | market | not supported | |
RequestSpotInstances | market | not supported | |
EBS | ResetImageAttribute | images | |
EC2 | ResetInstanceAttribute | instances | same limitations as for ModifyInstanceAttribute |
VPC | ResetNetworkInterfaceAttribute | network interfaces | |
EBS | ResetSnapshotAttribute | snapshots | not supported |
VPC | RestoreAddressToClassic | infrastructural | not supported |
EC2, VPC | RevokeSecurityGroupEgress | security groups | EC2 classic way to pass cidr, protocol, sourceGroup, ports parameters |
EC2, VPC | RevokeSecurityGroupIngress | security groups | EC2 classic way to pass cidr, protocol, sourceGroup, ports parameters |
EC2, VPC, EBS | RunInstances | instances | placement, block_device_mapping partial support, monitoring, iamInstanceProfile, ebsOptimized, shutdownInitiatedInstanceBehavior parameters |
RunScheduledInstances | scheduled instances | not supported | |
EC2 | StartInstances | instances | |
EC2 | StopInstances | instances | |
EC2 | TerminateInstances | instances | |
UnassignIpv6Addresses | network interfaces | not supported | |
VPC | UnassignPrivateIpAddresses | network interfaces | |
UnmonitorInstances | monitoring | not supported |
References
Blueprint: https://blueprints.launchpad.net/nova/+spec/ec2-api