OpenStack Ec2api 服务
项目描述
支持 OpenStack 的 EC2 API。本项目提供独立的 EC2 API 服务,追求两个目标
实现 VPC API
为 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中进行开发安装
安装以下包:awscli、git、python3、python3-devel、ruby
克隆devstack仓库
git clone https://opendev.org/openstack/devstack
授予用户对目录“/opt”的所有权限
创建文件夹“/opt/stack/logs/”
将“ec2api-tempest-plugin”仓库克隆到stack文件夹
git clone https://github.com/openstack/ec2api-tempest-plugin /opt/stack/ec2api-tempest-plugin
创建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'
进入devstack文件夹并开始安装
cd ~/devstack/ ./stack.sh
检查已安装的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
运行集成测试(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
运行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
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。