本文汇总了调用云服务器ECS API接口时的常见问题。
什么是ECS API?
ECS API是采用RPC风格的开放式API,为阿里云用户提供API服务。您可以基于ECS API管理和使用云服务器ECS。下图为您在使用API时,API请求的转发路径。有关如何调用ECS API,请参见快速入门。
创建ECS实例时提示错误信息:InvalidDataDiskCategory.NotSupported
问题现象:您在调用RunInstances创建ECS实例时,返回如下错误信息。
{
"Code": "InvalidDataDiskCategory.NotSupported",
"Message": "Specified disk category is not supported."
}
问题原因:该错误是由于所在可用区不支持相应的云盘类型导致的。
解决方案:建议您在创建ECS实例之前,调用DescribeAvailableResource查看具体可用区中的库存与产品规格供应情况,避免因资源供应原因引起报错。您也可以重新设置参数ZoneId的取值,在其他可用区中尝试创建ECS实例。
aliyun ecs RunInstances --ImageId win2008_64_ent_r2_cn_40G_alibase_20150429.vhd --InstanceType ecs.g5.large --SecurityGroupId <TheSecurityGroupId> --SystemDiskCategory cloud_efficiency --ZoneId cn-hangzhou-c
创建多台ECS实例时如何设置有序的实例名称或者主机名称?
在创建多台ECS实例时,建议使用RunInstances设置有序的实例名称或主机名称。该接口提供了InstanceName和HostName两个参数,您可以根据命名规则设置这些参数的值。更多信息,请参见批量设置有序的实例名称或主机名称。
如何创建有公网IP地址的ECS实例?
方法一:调用RunInstances,并将参数InternetMaxBandwidthOut设置为大于0的取值,系统自动为ECS实例分配公网IP。
方法二:调用CreateInstance后,再调用AllocatePublicIpAddress接口为ECS实例分配公网IP地址。
通过API创建的ECS实例,为什么无法Ping通ECS实例?
问题现象:通过API新创建的ECS实例断网,内部无法访问外网,您也无法Ping通ECS实例的公网IP地址。
问题原因:您没有在ECS实例加入的安全组中添加相应的访问规则,导致出现无法访问的现象。
解决方案:调用AuthorizeSecurityGroup为相应安全组添加入方向访问规则即可。以ICMP协议为例,您可以添加以下安全组规则,允许来自10.0.0.0/8网段的流量访问。
请您根据实际业务需求,按照最小范围开放原则配置安全组规则,尽量避免全开(慎用::/0
或者0.0.0.0/0
)以免引发安全问题。
https://ecs.aliyuncs.com/?Action=AuthorizeSecurityGroup
&SecurityGroupId=sg-bp15ed6xe1yxeycg7***
&SourceCidrIp=10.0.0.0/8
&IpProtocol=ICMP
&PortRange=-1/-1
&<公共请求参数>
ECS API绑定公网IP提示错误信息:The specified IP is already in use
问题现象:您在调用AllocatePublicIpAddress设定参数IpAddress为一台ECS实例分配一个公网IP地址时,提示如下错误。
{
"Code": "IpInUse",
"Message": "The specified IP is already in use."
}
问题原因:指定的IP地址已被占用。
解决方案:您可以先查询指定的IP地址是否被占用,再根据结果进行分配。另外,您也可以选择不填写参数IpAddress,让系统自动随机分配IP地址。
ECS API修改实例带宽可以指定时间范围吗?
您可以调用ModifyInstanceNetworkSpec修改ECS实例的公网带宽上下限,设置后直接生效。如果您需要在一段时间内变更公网带宽,可以设置StartTime和EndTime参数指定时间段。
如果您使用的是弹性公网IP(EIP),可以调用ModifyEipAddressAttribute,但无法指定生效时间段。
通过API或SDK查询安全组规则,为什么无法显示所有的规则?
安全组规则区分网卡类型,支持公网网卡(internet)和私网网卡(intranet)。您在使用DescribeSecurityGroupAttribute查询安全组时,NicType不是必选参数,但其默认值为internet。因此,以下阿里云CLI请求方法只显示公网网卡相关的安全组规则,不会返回所有安全组规则。
aliyun ecs DescribeSecurityGroupAttribute --SecurityGroupId <TheSecurityGroupId> --RegionId <TheRegionId>
若您需要查看内网方面的安全组规则,如内网互相打通、金融云VPN防火墙的规则等内网网卡安全组规则时,需要您设置NicType参数为intranet。
aliyun ecs DescribeSecurityGroupAttribute --SecurityGroupId <TheSecurityGroupId> --RegionId <TheRegionId> --NicType intranet
为什么API、SDK和阿里云CLI只返回十条信息?
部分查询接口支持分页查询,当不设置分页信息时,默认查询十条记录。您可以通过设置PageNumber和PageSize自定义分页查询的信息。
名称 | 类型 | 是否必需 | 描述 |
PageNumber | Integer | 否 | 查询接口返回资源信息列表的页码。ECS API均以 起始值:1。 默认值:1。 |
PageSize | Integer | 否 | 分页展示响应信息时设置的每页行数,单位:行。 最大值:100。 默认值:10。 说明 PageSize的最大值为100,若查询的结果大于100,您需要借助PageNumber 获取后几页响应信息,即多次提交请求。每次设置PageNumber为1、2 和 3 等,以获取所有的响应信息。如果您使用的是Java SDK,可以在请求中通过setPageNumber()方法指定需要返回的页数。 |