调用CreateFileSystem接口创建文件系统。
接口说明
CreateFileSystem接口用于创建文件系统实例。
请确保在使用该接口前,已充分了解NAS产品的收费方式和价格。
创建实例需要通过实名认证,您可以参见账号实名认证相关文档完成认证。
创建实例时,您还需要注意以下几点:
-
实例类型
目前存在三种类型:
- 通用型NAS
- 极速型NAS
- 并行文件系统CPFS
-
计费方式
目前存在两种计费方式:
- 按量付费:按每小时文件系统计量产生费用,CreateFileSystem接口创建通用型NAS仅支持按量付费方式。
- 包年包月:按照指定期限预先扣除费用,调用本API时,系统默认会自动从账户余额中扣除订单费用。
-
实例规格
不同实例类型的售卖规格不同(包括可售卖地域、存储类型、协议类型等规则),请参见如下链接:
以下是各实例类型的创建示例:
- 创建通用型NAS
java public void createFileSystem(IAcsClient client) throws Exception{ CreateFileSystemRequest request = new CreateFileSystemRequest(); request.setFileSystemType("standard"); //创建通用型NAS request.setStorageType(storageType); //Performance(性能型) or Capacity(容量型) request.setProtocolType(protocolType); //NFS or SMB request.setZoneId(zoneId); //可用区 request.setDescription(description); //文件系统描述 CreateFileSystemResponse response = client.getAcsResponse(request); response.getFileSystemId(); //获取NAS实例ID }
- 创建极速型NAS
java public void createFileSystem(IAcsClient client) throws Exception{ CreateFileSystemRequest request = new CreateFileSystemRequest(); request.setFileSystemType("extreme"); //创建极速型NAS request.setChargeType(chargeType); //PayAsYouGo(按量付费),Subscription(包年包月) request.setDuration(1); //若ChargeType=Subscription,则Duration必填,单位是月 request.setCapacity(capacity); //指定容量,参考上述实例规格 request.setBandwidth(bandwidth); //指定吞吐,参考上述实例规格 request.setStorageType(storageType); //standard(标准型) or advance(高级型) request.setProtocolType(protocolType); //NFS(目前极速型NAS只支持NFS) request.setEncryptType(encryptType); //指定是否加密 request.setSnapshotId(snapshotId); //指定是否从已有快照创建NAS request.setZoneId(zoneId); //可用区 request.setClientToken(clientToken); //指定客户端ClientToken,以此保证本次API请求的幂等性 request.setDryRun(dryRun); //通过指定该参数为true,可以实现创建NAS资源的预检判断,比如判断库存是否充足等,指定为true时系统仅做资源预创建的判断,不会生成NAS实例,也不会产生费用 CreateFileSystemResponse response = client.getAcsResponse(request); response.getFileSystemId(); //获取NAS实例ID }
- 创建并行文件系统CPFS
java public void createFileSystem(IAcsClient client) throws Exception{ CreateFileSystemRequest request = new CreateFileSystemRequest(); request.setFileSystemType("cpfs"); //创建并行文件系统CPFS request.setChargeType(chargeType); //PayAsYouGo(按量付费),Subscription(包年包月) request.setDuration(1); //若ChargeType=Subscription,则Duration必填,单位是月 request.setCapacity(capacity); //指定容量,参考上述实例规格 request.setBandwidth(bandwidth); //指定吞吐,参考上述实例规格 request.setStorageType(storageType); //advance(高级型) request.setProtocolType(protocolType); //cpfs(CPFS文件系统,该参数设置为cpfs) request.setZoneId(zoneId); //可用区 request.setClientToken(clientToken); //指定客户端ClientToken,以此保证本次API请求的幂等性 request.setDryRun(dryRun); //通过指定该参数为true,可以实现创建CPFS资源的预检判断,比如判断库存是否充足等,指定为true时系统仅做资源预创建的判断,不会生成NAS实例,也不会产生费用 CreateFileSystemResponse response = client.getAcsResponse(request); response.getFileSystemId(); //获取NAS实例ID }
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
EncryptType | Integer | 是 | 1 |
是否创建加密文件系统。当FileSystemType=standard或extreme时有效。 使用KMS服务托管密钥,对文件系统落盘数据进行加密存储。在读写加密数据时,无需解密。 取值包括:
|
ProtocolType | String | 是 | NFS |
协议类型。包括:
|
StorageType | String | 是 | Performance |
存储类型。包括:
|
ZoneId | String | 是 | cn-hangzhou-b |
可用区ID。可用区是指在同一地域内,电力和网络互相独立的物理区域。
说明
|
FileSystemType | String | 否 | standard |
文件系统类型。
|
ChargeType | String | 否 | PayAsYouGo |
计费类型。
|
Duration | Integer | 否 | 1 |
包年包月时长。单位是月,当ChargeType=Subscription时必填且有效。当包年包月实例到期时未进行续费,实例到期会自动释放。 |
Capacity | Long | 否 | 100 |
文件系统容量。单位是GiB,当FileSystemType=extreme或cpfs时必填且有效。 具体可选规格值请参考购买页面的实际规格: |
Bandwidth | Long | 否 | 150 |
文件系统吞吐上限。单位是MB/s,仅当FileSystemType=cpfs时必填且有效。 具体可选规格值请参考购买页面的实际规格: |
SnapshotId | String | 否 | s-xxx |
快照ID。可以通过指定该参数实现从指定快照创建NAS实例,目前仅支持极速型NAS。
说明 通过快照创建文件系统,创建的文件系统版本和快照源文件系统版本一致。如果快照的源文件系统版本是1,需要创建版本2性能规格的文件系统,可以先通过快照创建一个文件系统,然后再创建一个新的文件系统,把通过快照创建的文件系统中的数据拷贝到新创建的文件系统,拷贝完成后把业务迁移到新的文件系统即可。
|
VpcId | String | 否 | vpc-xxx |
专有网络ID。指定VpcId和VSwitchId可以在创建文件系统实例的同时预配置好一个默认挂载点。 |
VSwitchId | String | 否 | vsw-xxx |
专有虚拟交换机ID。指定VpcId和VSwitchId,可以在创建文件系统实例时预配置好一个默认挂载点。 |
Description | String | 否 | 此文件系统的描述。 |
文件系统描述。长度为2~128个英文或中文字符。必须以大小字母或中文开头,不能以 |
ClientToken | String | 否 | 123e4567-e89b-12d3-a456-42665544**** |
保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符,且不能超过64个字符。更多详情请参见如何保证幂等性。
说明 若您未指定,则系统自动使用API请求的RequestId作为ClientToken标识。每次API请求的RequestId可能不一样。
|
KmsKeyId | String | 否 | 无 |
KMS密钥ID。 |
DryRun | Boolean | 否 | true |
是否对此次创建请求执行预检。预检操作会帮助您检查参数有效性、校验库存等,并不会实际创建实例,也不会产生费用。 取值范围:
|
关于API幂等性,您需要注意以下事项:
由于CreateFileSystem接口涉及云资源的创建和费用,您在调用该API时,如果发生请求超时或服务端内部错误,客户端可能会尝试重发请求。您可以在请求中设置ClientToken参数避免多次重试重复下单的问题,以此来保证重试请求的幂等性,这会保证您最多只会创建一笔订单(也可能因网络超时或服务端内部错误,未创建出订单)。
ClientToken参数的详细信息如下所示:
- ClientToken是一个由客户端生成的唯一的、大小写敏感、不超过64个ASCII字符的字符串。例如:
ClientToken=123e4567-e89b-12d3-a456-426655440000
-
如果您提供了一个已经使用过的ClientToken,但其他请求参数有变化,则ECS会返回IdempotentParameterMismatch的错误代码。说明 参数SignatureNonce、Timestamp和Signature在重试时是需要变化的。具体原因是ECS使用SignatureNonce防止重放攻击,使用Timestamp标记每次请求时间。所以再次请求必须提供不同的SignatureNonce和Timestamp参数值,同时也会导致Signature值的变化。
- 添加了ClientToken参数后:
- 返回结果是200 HTTPCode时,重试后客户端可以得到与上次相同的结果,但对您的服务端状态没有影响。
- 返回结果是4xx HTTPCode时,如果错误信息没有表明try it later类似的信息,重试永远不会成功,您需要根据错误信息排查问题后修改请求参数后再重试请求。
- 返回结果是5xx HTTPCode时,表明请求可能是发生网络超时或服务端内部错误,您可以重新发送同一个请求(必须包含相同ClientToken和业务请求参数)以确认请求结果。
- ClientToken有效期为30天。
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
FileSystemId | String | 1ca404**** |
完成创建的文件系统ID |
RequestId | String | 98696EF0-1607-4E9D-B01D-F20930B68845 |
请求ID |
示例
请求示例
GET https://nas.cn-hangzhou.aliyuncs.com/?Action=CreateFileSystem
&EncryptType=1
&ProtocolType=NFS
&StorageType=Performance
&ZoneId=cn-hangzhou-b
&<公共请求参数>
正常返回示例
XML
格式
<CreateFileSystemResponse>
<FileSystemId>1ca404****</FileSystemId>
<RequestId>98696EF0-1607-4E9D-B01D-F20930B68845</RequestId>
</CreateFileSystemResponse>
JSON
格式
{
"CreateFileSystemResponse": {
"FileSystemId": "1ca404****",
"RequestId": "98696EF0-1607-4E9D-B01D-F20930B68845"
}
}
错误码
HttpCode | 错误码 | 错误信息 | 描述 |
---|---|---|---|
400 | IdempotentParameterMismatch | The same client token was passed in to different parameters. | 相同的ClientToken传入了不同的参数。 |
202 | RequestAccepted | The request has been accepted by the server. | 请求已被后端接受。 |
400 | InvalidParameter.KmsServiceNotEnabled | Key Management Service is not enabled. | 未启用KMS服务。 |
403 | OperationDenied.InvalidState | The operation is not permitted when the status is processing. | 状态处理中不允许此操作。 |
403 | InvalidFileSystem.AlreadyExisted | The specified file system already exists. | 指定的文件系统已存在。 |
403 | Resource.OutOfStock | The inventory of the specified zone is insufficient. | 指定的可用区库存不足。 |
400 | DryRunOperation | The request is validated with DryRun flag set. | 请求校验通过。 |
访问错误中心查看更多错误码。
访问错误中心查看更多错误码。