跳转到主要内容

OpenStack Ec2api 服务

项目描述

https://governance.openstack.org/tc/badges/ec2-api.svg

支持 OpenStack 的 EC2 API。本项目提供独立的 EC2 API 服务,追求两个目标

  1. 实现 VPC API

  2. 为 EC2 API 支持创建独立服务。

安装

有关更详细的信息,请参阅安装指南

通过 install.sh 安装

运行 install.sh

EC2 API 服务默认安装在第 8788 端口。可以在 install.sh 脚本安装之前更改。

之后的服务可以作为二进制文件启动

/usr/local/bin/ec2-api
/usr/local/bin/ec2-api-metadata
/usr/local/bin/ec2-api-s3

或设置为 Linux 服务。

配置 OpenStack 以用于 EC2 API 元数据服务,请参阅“EC2 元数据配置”部分。

在devstack上安装

在devstack中安装

为了使用devstack安装ec2-api,应在local.conf或localrc中添加以下行

enable_plugin ec2-api https://opendev.org/openstack/ec2-api

使用ec2-api和ec2api-tempest-plugin在devstack中进行开发安装

  1. 安装以下包:awscli、git、python3、python3-devel、ruby

  2. 克隆devstack仓库

git clone https://opendev.org/openstack/devstack
  1. 授予用户对目录“/opt”的所有权限

  2. 创建文件夹“/opt/stack/logs/”

  3. 将“ec2api-tempest-plugin”仓库克隆到stack文件夹

git clone https://github.com/openstack/ec2api-tempest-plugin /opt/stack/ec2api-tempest-plugin
  1. 创建local.conf

[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
enable_plugin ec2-api https://opendev.org/openstack/ec2-api
enable_plugin neutron-tempest-plugin https://github.com/openstack/neutron-tempest-plugin
TEMPEST_PLUGINS='/opt/stack/ec2api-tempest-plugin'
  1. 进入devstack文件夹并开始安装

cd ~/devstack/
./stack.sh
  1. 检查已安装的devstack

source ~/devstack/accrc/admin/admin
tempest list-plugins
ps -aux | grep "ec2"
aws --endpoint-url http://<IP-ADDRESS> --region <REGION> --profile admin ec2 describe-images
openstack catalog list
openstack flavor list
openstack image list
sudo journalctl -u devstack@ec2-api.service
  1. 运行集成测试(ec2 tempest测试)

cd /opt/stack/tempest
tox -eall -- ec2api_tempest_plugin --concurrency 1
tox -eall ec2api_tempest_plugin.api.test_network_interfaces.NetworkInterfaceTest.test_create_max_network_interface
  1. 运行ec2-api单元测试

cd /opt/stack/ec2-api
tox -epy36 ec2api.tests.unit.test_security_group.SecurityGroupTestCase.test_describe_security_groups_no_default_vpc

配置 OpenStack 以用于 EC2 API 元数据服务,请参阅“EC2 元数据配置”部分。

EC2元数据配置

为了配置OpenStack以支持EC2 API元数据服务

对于Nova-network

添加

[DEFAULT]
metadata_port = 8789
[neutron]
service_metadata_proxy = True

到 /etc/nova.conf

然后重启nova-metadata(可以作为nova-api服务的一部分运行)和nova-network服务。

对于Neutron

添加

[DEFAULT]
nova_metadata_port = 8789

到 /etc/neutron/metadata_agent.ini(对于传统Neutron)或到 neutron_ovn_metadata_agent.ini(对于OVN)

然后重启neutron-metadata服务。

S3服务器仅用于支持OpenStack部署中的EC2操作,这些操作需要S3服务器(例如,CreateImage),但没有常规对象存储。它不能作为所有用途的对象存储服务器的替代品。如果部署有自己的对象存储或使用公共对象存储(例如AWS S3),则不要启动它。

用法

从Amazon下载aws cli。在您的家目录 ~/.aws/config中为aws cli创建配置文件

[default]
aws_access_key_id = 1b013f18d5ed47ae8ed0fbb8debc036b
aws_secret_access_key = 9bbc6f270ffd4dfdbe0e896947f41df3
region = us-east-1

将上面的aws_access_key_id和aws_secret_access_key更改为您云中相应的值(可以通过“openstack ec2 credentials list”命令获得)。

使用新的EC2 API端点URL运行aws cli命令(可以通过openstack cli和新的端口8788获得)如下所示

aws –endpoint-url http://10.0.2.15:8788 ec2 describe-instances

支持的功能和限制

通用
  • 不支持DryRun选项。

  • 某些异常与AWS报告的不完全相同。

AWS组件

命令

功能组

限制

粗体 - 支持,正常 - 有限支持,斜体 - 不支持

VPC

AcceptVpcPeeringConnection

跨VPC连接

不支持

EC2、VPC

AllocateAddress

地址

AllocateHosts

专用主机

不支持

AssignIpv6Addresses

网络接口

不支持

VPC

AssignPrivateIpAddresses

网络接口

allowReassignment参数

EC2、VPC

AssociateAddress

地址

VPC

AssociateDhcpOptions

DHCP选项

VPC

AssociateRouteTable

路由

AssociateSubnetCidrBlock

子网

不支持

AssociateVpcCidrBlock

VPC

不支持

VPC

AttachClassicLinkVpc

跨VPC连接

不支持

VPC

AttachInternetGateway

互联网网关

VPC

AttachNetworkInterface

网络接口

EC2、EBS

AttachVolume

VPC

AttachVpnGateway

VPN

EC2、VPC

AuthorizeSecurityGroupEgress

安全组

EC2传统方式传递cidr、协议、sourceGroup、ports参数

EC2、VPC

AuthorizeSecurityGroupIngress

安全组

EC2传统方式传递cidr、协议、sourceGroup、ports参数

BundleInstance

任务、s3

不支持

CancelBundleTask

任务、s3

不支持

CancelConversionTask

任务、s3

不支持

CancelExportTask

任务、s3

不支持

CancelImportTask

任务、s3

不支持

CancelReservedInstancesListing

市场

不支持

CancelSpotFleetRequests

市场

不支持

CancelSpotInstanceRequests

市场

不支持

ConfirmProductInstance

产品代码

不支持

EBS

CopyImage

映像配置

不支持

EBS

CopySnapshot

快照、s3

不支持

VPC

CreateCustomerGateway

VPC网关

BGPdynamicrouting

VPC

CreateDhcpOptions

DHCP选项

CreateEgressOnlyInternetGateway

VPC网关

不支持

CreateFlowLogs

基础设施

不支持

EBS

CreateImage

映像

blockDeviceMapping参数

CreateInstanceExportTask

任务、s3

不支持

VPC

CreateInternetGateway

VPC网关

EC2

CreateKeyPair

密钥对

CreateNatGateway

NAT网关

不支持

VPC

CreateNetworkAcl

ACL

不支持

VPC

CreateNetworkAclEntry

ACL

不支持

VPC

CreateNetworkInterface

网络接口

CreatePlacementGroup

集群

不支持

CreateReservedInstancesListing

市场

不支持

VPC

CreateRoute

路由

vpcPeeringConnection参数

VPC

创建路由表

路由

EC2、VPC

创建安全组

安全组

EBS

创建快照

快照

创建Spot数据订阅

市场

不支持

VPC

创建子网

子网

可用区参数

EC2

创建标签

标签

EBS

创建卷

iops、加密、kmsKeyId参数

VPC

创建VPC

VPC

VPC

创建VPC端点

跨VPC连接

不支持

VPC

创建VPC对等连接

跨VPC连接

不支持

VPC

创建VPN连接

VPN

BGP动态路由

VPC

创建VPN连接路由

VPN

VPC

创建VPN网关

VPN

BGP动态路由

VPC

删除客户网关

VPC网关

VPC

删除DHCP选项

DHCP选项

删除仅出网关

VPC网关

不支持

删除流量日志

基础设施

不支持

VPC

删除互联网网关

VPC网关

EC2

删除密钥对

密钥对

删除NAT网关

NAT网关

不支持

VPC

删除网络ACL

ACL

不支持

VPC

删除网络ACL条目

ACL

不支持

VPC

删除网络接口

网络接口

EC2

删除放置组

集群

不支持

VPC

删除路由

路由

VPC

删除路由表

路由

EC2、VPC

删除安全组

安全组

EBS

删除快照

快照

删除Spot数据订阅

市场

不支持

VPC

删除子网

子网

EC2

删除标签

标签

EBS

删除卷

VPC

删除VPC

VPC

VPC

删除VPC端点

跨VPC连接

不支持

VPC

删除VPC对等连接

跨VPC连接

不支持

VPC

删除VPN连接

VPN

VPC

删除VPN连接路由

VPN

VPC

删除VPN网关

VPN

EBS

注销镜像

映像

EC2

描述账户属性

基础设施

vpc-max-security-groups-per-interface、max-elastic-ips、vpc-max-elastic-ips属性

EC2、VPC

描述地址

地址

EC2

描述可用区

可用区

描述捆绑任务

任务、s3

不支持

VPC

描述经典链接实例

跨VPC连接

不支持

描述转换任务

任务、s3

不支持

VPC

描述客户网关

网关

VPC

描述DHCP选项

DHCP选项

描述仅出网关

VPC网关

不支持

描述导出任务

任务、s3

不支持

描述流量日志

基础设施

不支持

描述主机

专用主机

不支持

描述身份ID格式

资源ID

不支持

描述ID格式

资源ID

不支持

EBS

描述镜像属性

映像

产品代码、sriovNetSupport属性

EBS

描述镜像

映像

描述导入镜像任务

任务、s3

不支持

描述导入快照任务

任务、s3

不支持

EC2

描述实例属性

实例

与修改实例属性相同的限制

EC2、EBS、VPC

描述实例

实例

描述实例状态

监控

不支持

VPC

描述互联网网关

网关

EC2

描述密钥对

密钥对

VPC

描述移动地址

基础设施

不支持

描述NAT网关

NAT网关

不支持

VPC

描述网络ACL

ACL

不支持

VPC

描述网络接口属性

网络接口

VPC

描述网络接口

网络接口

EC2

描述放置组

集群

不支持

VPC

描述前缀列表

跨VPC连接

不支持

EC2

描述区域

可用区

区域名称参数

描述预留实例

市场

不支持

描述预留实例列表

市场

不支持

描述预留实例修改

市场

不支持

描述预留实例提供

市场

不支持

VPC

描述路由表

路由

描述预定实例可用性

预定实例

不支持

描述预定实例

预定实例

不支持

描述安全组引用

安全组

不支持

EC2、VPC

描述安全组

安全组

cidr、协议、端口、源组参数

EBS

描述快照属性

快照

不支持

EBS

描述快照

快照

描述Spot数据订阅

市场

不支持

描述Spot舰队实例

市场

不支持

描述Spot舰队请求历史

市场

不支持

描述Spot舰队请求

市场

不支持

描述Spot实例请求

市场

不支持

描述Spot价格历史

市场

不支持

描述过时的安全组

安全组

不支持

VPC

描述子网

子网

EC2

描述标签

标签

EBS

描述卷属性

不支持

EBS

描述卷

描述卷状态

监控

不支持

VPC

描述VPC属性

VPC

不支持

VPC

描述VPC经典链接

跨VPC连接

不支持

描述VPC经典链接DNS支持

跨VPC连接

不支持

VPC

描述VPC端点

跨VPC连接

不支持

VPC

描述VPC端点服务

跨VPC连接

不支持

VPC

描述VPC对等连接

跨VPC连接

不支持

VPC

描述VPC

VPC

VPC

描述VPN连接

VPN

VPC

描述VPN网关

VPN

VPC

断开经典链接VPC

跨VPC连接

不支持

VPC

断开互联网网关

VPC

VPC

断开网络接口

网络接口

EC2、EBS

断开卷

instance_id、device、force参数

VPC

断开VPN网关

VPN

VPC

禁用Vgw路由传播

VPN

VPC

禁用VPC经典链接

跨VPC连接

不支持

禁用VPC经典链接DNS支持

跨VPC连接

不支持

EC2、VPC

取消关联地址

地址

VPC

取消关联路由表 取消关联子网CIDR块

路由子网

不支持

取消关联VPC CIDR块

VPC

不支持

VPC

启用Vgw路由传播

VPN

EBS

启用卷IO

监控

不支持

VPC

启用VPC经典链接

跨VPC连接

不支持

启用VPC经典链接DNS支持

跨VPC连接

不支持

EC2

获取控制台输出

实例

获取控制台截图

实例

不支持

EC2

获取密码数据

实例

导入镜像

任务、s3

不支持

导入实例

任务、s3

不支持

EC2

导入密钥对

密钥对

导入快照

任务、s3

不支持

导入卷

任务、s3

不支持

修改主机

专用主机

不支持

修改身份ID格式

资源ID

不支持

修改ID格式

资源ID

不支持

EBS

修改镜像属性

映像

产品代码属性

EC2

修改实例属性

实例

仅支持禁用ApiTermination、sourceDestCheck、instanceType

修改实例放置

专用主机

不支持

VPC

修改网络接口属性

网络接口

修改预留实例

市场

不支持

EBS

修改快照属性

快照

不支持

修改Spot舰队请求

市场

不支持

VPC

修改子网属性

子网

不支持

EBS

修改卷属性

不支持

VPC

修改VPC属性

VPC

不支持

VPC

修改VPC端点

跨VPC连接

不支持

修改VPC对等连接选项

跨VPC连接

不支持

监控实例

监控

不支持

VPC

将地址移动到VPC

基础设施

不支持

购买预留实例提供

市场

不支持

购买预定实例

预定实例

不支持

EC2

重启实例

实例

EBS

注册镜像

映像

虚拟化类型,sriovNetSupport 参数

VPC

拒绝VPC对等连接

跨VPC连接

不支持

EC2、VPC

释放地址

地址

释放主机

专用主机

不支持

VPC

替换网络ACL关联

ACL

不支持

VPC

替换网络ACL条目

ACL

不支持

VPC

替换路由

路由

VPC

替换路由表关联

路由

报告实例状态

监控

不支持

请求SpotFleet

市场

不支持

请求Spot实例

市场

不支持

EBS

重置镜像属性

映像

EC2

重置实例属性

实例

与修改实例属性相同的限制

VPC

重置网络接口属性

网络接口

EBS

重置快照属性

快照

不支持

VPC

将地址恢复到经典网络

基础设施

不支持

EC2、VPC

撤销安全组出站规则

安全组

EC2传统方式传递cidr、协议、sourceGroup、ports参数

EC2、VPC

撤销安全组入站规则

安全组

EC2传统方式传递cidr、协议、sourceGroup、ports参数

EC2, VPC, EBS

运行实例

实例

放置,block_device_mapping 部分支持,监控,iamInstanceProfile,ebsOptimized,shutdownInitiatedInstanceBehavior 参数

运行计划实例

预定实例

不支持

EC2

启动实例

实例

EC2

停止实例

实例

EC2

终止实例

实例

解除IPv6地址分配

网络接口

不支持

VPC

解除私有IP地址分配

网络接口

停止监控实例

监控

不支持

参考资料

文档:https://docs.openstack.org/ec2-api/latest/

维基:https://wiki.openstack.org/wiki/EC2API

错误:https://launchpad.net/ec2-api

源代码:https://opendev.org/openstack/ec2-api

蓝图:https://blueprints.launchpad.net/nova/+spec/ec2-api

规范:https://review.opendev.org/#/c/147882/

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

ec2-api-17.0.0.tar.gz (304.0 kB 查看哈希)

上传时间: 源代码

构建分发

ec2_api-17.0.0-py3-none-any.whl (312.4 kB 查看哈希)

上传时间: Python 3

支持者