Golang多云SDK 支持多云存储, 多云开服
github 地址
cloud_sever: https://github.com/tutengdihuang/cloud_server
cloud_storage: https://github.com/tutengdihuang/cloud_storage
一 . 逻辑流程图
云存储和云服务器接口参数,主要逻辑为,通过不同的云厂商标识new对应的api对象。用生成的对象去调用不同厂商的云服务
二. 云存储SDK接口和参数
2.1 Put
- 说明
- 请求参数
参数 |
必须 |
说明 |
Ali |
Tecent |
AWS |
|
Key |
string |
Y |
云存储 |
|||
Reader |
io.Reader |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Err |
Error |
2.2 PutFromFile
- 说明
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
Y |
云存储key |
|||
FilePath |
String |
Y |
本地文件位置 |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Err |
Error |
2.3 Get
- 说明
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
Y |
云存储key |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Reader |
io.ReadCloser |
||||
Err |
Error |
2.4 GetString
- 说明
- 获取文件内容
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
Y |
云存储key |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
FileContent |
String |
||||
Err |
Error |
2.5 GetToFile
- 说明
- 存储文件到本地
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
云存储key |
||||
LocalFilepath |
String |
本地存储路径 |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Err |
Error |
2.6 Exists
- 说明
- 判断云存储文件是否存在
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
Y |
云存储key |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Exist |
Bool |
||||
Err |
Error |
2.7 Files
- 说明
- 根据前缀获取文件列表
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Prefix |
string |
Y |
云存储key前缀 |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
FileList |
[]File |
文件列表 |
|||
Err |
Error |
2.8 Size
- 说明
- 获取云存储文件的大小
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
Y |
云存储key |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Size |
Int64 |
文件大小 |
|||
Err |
Error |
2.9 Delete
- 说明
- 根据key删除文件
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
Key |
string |
Y |
云存储key |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Err |
Error |
三. 云服务器SDK接口和参数
3.1 Server Instance
3.1.1 StartInstances
- 说明
- 阿里云:ECS实例状态必须为已停止,才能用此功能,startInstances
- 腾讯:只有StartInstances
- AWS:只有StartInstances
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
InstanceIds |
string |
Y |
InstanceIds |
InstanceIds数组 |
InstanceId.N数组 |
- 返回参数
参数 |
类型 |
说明 |
RequestId |
string |
3.1.2 DescribeInstanceStatus
- 说明
- 阿里云
- 腾讯
- AWS
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
InstanceIds |
[]string |
Y |
InstanceIds |
InstanceIds数组 |
InstanceId.N数组 |
- 返回参数
参数 |
类型 |
说明 |
RequestId |
string |
|
InstancesStatus |
map[string]int |
Key: instanceId, value : status |
- Status
参数 |
类型 |
说明 |
InstanceId |
string |
|
Status |
[]Status |
3.1.3 RunInstances
- 说明
- AWS: 请求字段中: CreditSpecification 表明cpu规则; 计费规则,按秒计费,1min收取一次费用,默认用T2
- aws 带宽
- InstanceType: 查找实例类型;实例配置
- AWS_RunInstances
- AWS: 请求字段中: CreditSpecification 表明cpu规则; 计费规则,按秒计费,1min收取一次费用,默认用T2
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
InstanceName |
string |
Y |
默认值为实例的InstanceId |
不指定实例显示名称则默认显示‘未命名’。 |
||
HostName |
string |
参考ali云的命名规范 |
HostName |
Placement. HostId |
||
RegionId |
string |
可以调用DescribeRegions查看最新的阿里云地域列表 |
Placement,参考 |
Placement. AvailabilityZone |
||
InstanceType |
string |
DescribeAvailableResource查看指定地域或者可用区内的资源供给情况 |
实例规格 |
Instance types, 查找实例类型;实例配置 |
||
InstanceChargeType |
string |
PrePaid:包年包月 PostPaid:按量付费 |
计费类型 |
无 |
||
InternetChargeType |
string |
PayByBandwidth:按固定带宽计费。 PayByTraffic:按使用流量计费 |
InternetAccessible. InternetChargeType |
无 |
||
ImageId |
string |
ImageId |
ImageId |
ImageId |
||
Password |
string |
Password |
LoginSettings.Password |
IamInstanceProfile: &ec2.IamInstanceProfileSpecification{Name: aws.String("ec2-role-name"),} |
||
SecurityGroupId |
string |
您可以通过SecurityGroupId设置一个安全组,也可以通过SecurityGroupIds.N设置一个或多个安全组,但不支持同时设置SecurityGroupId和SecurityGroupIds.N |
对应 SecurityGroupIds |
SecurityGroup.N |
||
VSwitchId |
string |
VirtualPrivateCloud. VpcId |
SubnetId |
|||
Amount |
string |
取值范围:1~100,默认值1 |
InstanceCount, 包年包月实例取值范围:[1,300],按量计费实例取值范围:[1,100]。默认取值:1 |
MaxCount, Between 1 and the maximum number |
||
LaunchTemplateName |
string |
启动模板名称。 使用启动模板创建实例时,您必须指定LaunchTemplateId或LaunchTemplateName确定启动模板 |
如果您不指定LaunchTemplate参数,则Placement为必选参数。若同时传递Placement和LaunchTemplate,则默认覆盖LaunchTemplate中对应的Placement的值 |
LaunchTemplateSpecification. LaunchTemplateName |
||
InternetMaxBandwidthOut |
Int64 |
InternetAccessible.Maxbandwith |
||||
ResourceGroupId |
string |
|||||
SystemDiskCategory |
String |
Systemdisk. DiskType |
BlockDeviceMapping.N |
|||
SystemDiskSize |
String |
Systemdisk.Size |
BlockDeviceMapping.N |
|||
Tag |
[]string |
TagSpecification.N |
TagSpecification.N |
|||
SecurityEnhancementStrategy |
String |
Active:启用安全加固,只对公共镜像生效。 Deactive:不启用安全加固,对所有镜像类型生效。 |
EnhancedService |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
||||
InstanceIdSets |
[]string |
[]Instance. instanceId |
|||
TradePrice |
Float64 |
无 |
无 |
3.1.4 ChangeInstancePassword (修改实例密码)
- 说明
- 腾讯云:ResetInstancesPassword
- 阿里云:ModifyInstanceAttribute
- AWS: 没有修改密码的属性, 通过ssh修改密码(目前查到的信息可以直接修改密码,需要实验)
- 业务中目前只修改密码
- 考虑把接口名字写成ChangeInstancePassword
- 使用原始镜像密码登录,
- 需要传入原始密码
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
RegionId |
string |
Y |
无 |
|||
InstanceId |
string |
Y |
InstantName |
InstanceId |
||
Password |
String |
无 |
- 返回参数
参数 |
类型 |
说明 |
RequestId |
string |
3.1.5 DescribeInstancesAll
- 说明
- 业务逻辑:
- 输入:InstanceIds,PageSize,PageNumber
- 输出:服务器数量,服务器状态
- 阿里:pageSize+pageNumber
- 腾讯:offset+limit
- AWS: MaxResults+NextToken(上次请求的token)
- 请求参数(可以考虑合并一下)
- 分两个接口: 1. 返回所有instance 2. 传入instanceIds(优先), 过滤条件(模式,instanceName)(设置max length) 返回对应信息
- 业务逻辑:
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
ReginId |
String |
Y |
- 返回参数
参数 |
类型 |
说明 |
RequestId |
string |
|
Instances |
[]DescribeInstance |
- DescribeInstance
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
InstanceId |
string |
Instance. InstanceId |
Reservation. instancesSet. instanceId |
||
InstanceName |
String |
Instance.InstanceName |
|||
Status |
Const |
服务器状态 |
Instance.InstanceState |
Reservation. instancesSet. instanceState |
|
PublicIpAddress |
[]string |
公网IP |
Instances.Instance[0].EipAddress.IpAddress |
Instance. PublicIpAddresses |
Reservation. instancesSet.ipAddress |
PrivateIpAddress |
[]string |
私有ip |
Instances.Instance[0].VpcAttributes.PrivateIpAddress.IpAddress[0] |
Instance.PrivateIpAddresses |
Reservation. instancesSet.privateIpAddress |
3.1.6 DescribeInstancesByIDs
- 说明
- 业务逻辑:
- 输入:InstanceIds,PageSize,PageNumber
- 输出:服务器数量,服务器状态
- 阿里:pageSize+pageNumber
- 腾讯:offset+limit
- AWS: MaxResults+NextToken(上次请求的token)
- 请求参数(可以考虑合并一下)
- 分两个接口: 1. 返回所有instance 2. 传入instanceIds(优先), 过滤条件(模式,instanceName)(设置max length) 返回对应信息
- 业务逻辑:
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
InstanceIds |
[]string |
Y |
InstanceIds |
InstanceId.N |
- 返回参数
参数 |
类型 |
说明 |
RequestId |
string |
|
Instances |
[]DescribeInstance |
- DescribeInstance
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
InstanceId |
string |
Instance. InstanceId |
Reservation. instancesSet. instanceId |
||
InstanceName |
String |
Instance.InstanceName |
|||
Status |
Const |
服务器状态 |
Instance.InstanceState |
Reservation. instancesSet. instanceState |
|
PublicIpAddress |
[]string |
公网IP |
Instances.Instance[0].EipAddress.IpAddress |
Instance. PublicIpAddresses |
Reservation. instancesSet.ipAddress |
PrivateIpAddress |
[]string |
私有ip |
Instances.Instance[0].VpcAttributes.PrivateIpAddress.IpAddress[0] |
Instance.PrivateIpAddresses |
Reservation. instancesSet.privateIpAddress |
3.1.7 StopInstance
- 说明:
- 阿里云对应接口StopInstances
- 腾讯云对应接口StopInstances
- AWS: StopInstances
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
InstanceIds |
[]string |
Y |
InstanceIds |
InstanceId.N |
||
ForceStop |
bool |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
3.1.8 ReplaceSystemDisk
- 说明
- 停机更换系统或者磁盘,需求中只更换系统镜像或者重装系统
- 接口名考虑换成修改系统镜像
- 腾讯云对应接口:ResetInstance
- 阿里云对应接口:ReplaceSystemDisk
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
InstanceId |
string |
无 |
||||
ImageId |
String |
无 |
||||
Password |
String |
无 |
无 |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
||||
DiskId |
String |
无 |
3.1.9 DeleteInstances
- 说明
- 腾讯云对应接口:TerminateInstances
- 阿里云对应接口:DeleteInstances
- AWS对应的是:TerminateInstances
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
InstanceIds |
[]string |
Y |
InstanceIds, Array of String |
InstanceId.N |
||
Force |
String |
- 返回参数
参数 |
类型 |
说明 |
RequestId |
string |
3.2 Eip Address
3.2.1 AllocateEipAddress
- 说明
- 阿里接口 VPC专用网络API
- 对应腾讯的私有网络具体收费标准查看官方文档
- AWS: 方法名AllocateAddress
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
RegionId |
string |
Y |
DescribeRegions |
Region, 地域列表 |
NetworkBorderGroup, 参考 |
|
Bandwidth |
Int64 |
Y |
InternetMaxBandwidthOut |
无 |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
requestId |
|||
AllocationId |
string |
无 |
allocationId |
||
EipAddress |
String |
具体的ip地址 |
AddressSet,不是具体的IP,是一个ID |
publicIp |
3.2.2 AssociateEipAddress
- 说明
- aws
- aliyun
- Tencent
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
RegionId |
string |
Y |
Region |
|||
AllocationId |
string |
Y |
AllocationId |
|||
InstanceId |
String |
Y |
无 |
InstanceId |
||
AddressId |
String |
无 |
PublicIp |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
||||
AssociationId |
String |
无 |
无 |
associationId |
3.2.3 DescribeEipAddresses
- 说明:
- 业务需要返回参数: AllocationId,EipAddress,rsp.EipAddresses.EipAddress[0].Status
- 阿里云:接口,通过AllocationId解绑EipAddress
- 腾讯云:DescribeAddresses, 通过AddressId的传递进行绑定解绑公网ip
- AWS: DescribeAddresses
- 请求参数组合1, RegionId,Status,PageNumber,PageSize
- 请求参数组合2,RegionId,AllocationId,
- 请求参数组合3, RegionId,AssociatedInstanceId,AssociatedInstanceType
- 业务需要返回参数: AllocationId,EipAddress,rsp.EipAddresses.EipAddress[0].Status
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
RegionId |
string |
Y |
Region |
Filter.N. allocation-id |
||
AssociatedInstanceId |
string |
Y |
无 |
Filter.N. association-id |
||
AssociatedInstanceType |
String |
Y |
无 |
无 |
||
AddressIds |
[]string |
Y |
无 |
标识 EIP 的唯一 ID 列表 |
Filter.N. instance-id |
|
AllocationIds |
[]string |
无 |
AllocationId.N |
|||
Status |
String |
无 |
无 |
|||
PageNumber |
Int64 |
无 |
无 |
|||
PageSize |
Int64 |
无 |
无 |
|||
Limit |
Int64 |
无 |
无 |
|||
PublicIps |
[]string |
无 |
无 |
PublicIp.N |
- 返回参数
参数 |
类型 |
RequestId |
string |
EipInfo |
[]Eip |
- Eip:
参数 |
类型 |
说明 |
AllocationId |
string |
|
EipAddresses |
String |
publicIP address, |
Status |
String |
是否可用 |
AddressIdSet |
string |
腾讯云为唯一编号 |
3.2.4 UnassociateEipAddress
- 说明
- 腾讯对应函数DisassociateAddress
- AddressId 可以用publicIP字段代替
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
RegionId |
string |
Y |
Region |
无 |
||
AllocationId |
string |
Y |
无 |
AssociationId |
||
InstanceId |
String |
Y |
无 |
无 |
||
AddressId |
string |
无 |
AddressId, EIP 的唯一 ID |
无 |
||
PublicIp |
String |
无 |
无 |
PublicIp |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
||||
Return |
bool |
无 |
无 |
Return |
3.2.5 ReleaseEipAddress
- 说明
- 阿里接口名称:ReleaseEipAddress
- 腾讯接口名称:ReleaseAddresses
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tencent |
AWS |
RegionId |
string |
Y |
无 |
|||
AllocationId |
string |
Y |
无 |
无 |
AllocationId |
|
AddressIds |
[]string |
无 |
Array of String |
无 |
||
PublicIp |
string |
无 |
无 |
PublicIp |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
无 |
|||
Return |
Bool |
无 |
无 |
Return |
3.3 Image
3.3.1 DescribeImages
- 说明
- AWS
- Tencent
- Ali
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
RegionId |
string |
Y |
Region |
无 |
||
ImageId |
ImageId |
ImageIds.N |
ImageId.N |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
||||
ImageSet |
[]Image |
- Image:
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
Status |
string |
Images.Image[0].Status |
ImageSet[0].ImageState |
ImageSet[0].ImageState |
|
ImageId |
String |
3.3.2 CreateImage
- 说明
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
RegionId |
string |
Y |
Region |
无 |
||
InstanceId |
string |
InstanceId |
InstanceId |
|||
ImageName |
string |
ImageName |
Name |
|||
ImageVersion |
string |
无 |
无 |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
ImageId |
string |
imageId |
|||
RequestId |
string |
requestId |
3.3.3 CopyImage
- 说明
- Tencent: SyncImages
- AWS: CopyImage
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
RegionId |
string |
Y |
Region |
SourceRegion |
||
ImageId |
string |
ImageIds.N |
SourceImageId |
|||
DestinationRegionId |
string |
DestinationRegions.N |
Name |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
ImageId |
string |
SyncImage.ImagieId |
imageId |
||
RequestId |
string |
requestId |
3.3.4 DeleteImage
- 说明
- Tencent: DeleteImages
- Ali: DeleteImages
- AWS: DeregisterImage
- 请求参数
参数 |
类型 |
必须 |
说明 |
Ali |
Tecent |
AWS |
RegionId |
string |
Y |
Region |
SourceRegion |
||
ImageIds |
string |
ImageIds.N |
SourceImageId |
|||
Force |
string |
DestinationRegions.N |
Name |
- 返回参数
参数 |
类型 |
说明 |
Ali |
Tencent |
AWS |
RequestId |
string |
Golang多云SDK 支持多云存储, 多云开服相关推荐
- 多云定义:什么是多云,多云究竟是什么?
多云定义:什么是多云,多云究竟是什么? 我们最近在行云管家讨论过关于多云话题,因为"简化当今不断发展的IT环境的复杂性就是我们的工作".但是,虽然多云的概念很直观 - 对于IT人来 ...
- 多云战略:如何通过多云实现数字化转型?
文章目录 "多云战略:如何通过多云实现数字化转型?" 一.引言 二.技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍 三.实现步骤与流程 3.1. 准备工作:环境配置 ...
- 如何使用融云地图,文件等插件--融云 Android SDK 2.8.0+ Extension 开发文档
转载自融云 Android SDK 2.8.0+ Extension 开发文档 融云 SDK 2.8.0 后对 会话界面输入区域.+号扩展区域.语音消息.Emoji 等进行了优化和重构,重构后上列区域 ...
- HTML5中如何检查浏览器是否支持本地存储
如果你的浏览器支持该特性的话,那么全局对象:window上会有一个localStorage的属性,反之,你的浏览器不支持的话,那么该属性值为undefined JavaScript function ...
- mysql不支持innodb存储引擎
工作中,不免会遇到前辈已经编译安装过的mysql,忽然发现mysql不支持innodb的存储引擎的问题,现在来看一下吧 一.先看mysql是否支持innodb存储引擎 mysql> show v ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(10)、ArcGIS Runtime SDK支持的空间数据类型...
1.前言 移动端的数据来源非常重要,它决定了移动端功能的实现.早期的ArcGIS Android API中,主要以接入在线的数据源为主,因此主要实现在线的地图浏览.查询和路径分析.地理处理等从操作:在 ...
- mysql支持数据安全的引擎_MySQL 支持的存储引擎
存储引擎: 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作. 不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得 ...
- 开源PHP微信通用sdk,支持微信支付及所有基础接口(强烈推荐)
PHP微信通用sdk,支持微信支付及所有基础接口 WeChatDeveloper for PHP 功能描述 技术帮助 代码仓库 文件说明(后缀会根据官方文档增加文件) 安装使用 微信支付 支付宝支付 ...
- PS4 不支持USB存储设备的文件系统 如何解决?
昨日我在拷贝PS4上通过SHARP录制的星际战甲影像在插入我 的U盘时,突然看到屏幕左上角出现提示说"不支持USB存储设 备的文件系统"的提示,但是以前我插这张U盘时PS4都可以识 ...
最新文章
- 开源组织:Datawhale
- 多视图立体匹配论文分享:P-MVSNet
- Opencv Mediapipe 人体追踪
- 程序与进程的区别,并发与并行的区别,多进程的实现原理
- Java开发面试技巧,Hive-JDBC操作
- 软件工程(2019)第三次个人作业
- vue中v-model原理
- html应用模板,HTML5--应用网页模板
- tensorflow学习笔记:tf.control_dependencies,tf.GraphKeys.UPDATE_OPS,tf.get_collection
- python async_python async with和async for的使用
- JavaScript--我所理解的原型链
- mysql查询多造一列_mysql某列多值查询_MySQL
- vj p1041神风堂人数 题解
- 金九银十面试季,字节跳动面试题拿走不谢(附详细答案解析)
- 计算机专业论文答辩ppt,计算机毕论文答辩PPT(完整版).ppt
- 四级网络工程师笔记-计算机网络(中)
- app store connect
- JavaScript图片旋转缩放、像素矩阵获取
- Toefl-Speaking
- 解开硬盘逻辑死锁的一种有效方法 (转)