调用该接口生成升级包文件上传到OSS的URL及详细信息。
使用说明
该接口与其他接口结合使用完成升级包创建。创建升级包的步骤:
1. 调用本接口生成升级包文件上传到对象存储(OSS)的信息。
本接口的返回参数包含:
- 调用OSS PostObject上传升级包文件的请求参数:Host、Key、OSSAccessKeyId、Signature和Policy。
- 调用CreateOTAFirmware创建升级包的请求参数FirmwareUrl。
2. 请在本接口返回结果后的1分钟之内,使用OSS SDK调用PostObject接口上传升级包文件。上传文件的代码示例,请参见下文“返回参数的用途”章节。
3. 升级包上传完成后,请在60分钟内,调用物联网平台API CreateOTAFirmware接口创建升级包。
如果上传了升级包,但未调用CreateOTAFirmware接口创建升级包,上传的文件将被系统定期自动清理。
QPS限制
单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为10。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
| 名称 | 类型 | 是否必选 | 示例值 | 描述 | 
| Action | String | 是 | GenerateOTAUploadURL | 系统规定参数。取值:GenerateOTAUploadURL。 | 
| IotInstanceId | String | 否 | iot-cn-0pp1n8t**** | 实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。 重要 
 
 实例的更多信息,请参见实例概述。 | 
| FileSuffix | String | 否 | apk | 升级包文件扩展名。可选扩展名: 
 | 
调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。公共请求参数说明,请参见公共参数文档。
返回数据
| 名称 | 类型 | 示例值 | 描述 | 
| Code | String | iot.system.SystemException | 调用失败时,返回的错误码。更多信息,请参见错误码。 | 
| Data | Struct | 调用成功时,返回的文件上传信息。详情见以下参数信息。 | |
| FirmwareUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin | 文件的URL,即文件在对象存储(OSS)上的存储地址。 文件URL的格式为 升级包文件上传成功后,使用此参数调用CreateOTAFirmware接口创建升级包。 | 
| Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | OSS的接入域名。 | 
| Key | String | ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin | 调用OSS的接口PostObject上传对象(即文件)的名称,包含OSS对象的完整路径。 | 
| OSSAccessKeyId | String | cS8uRRy54Rsz**** | OSS Bucket拥有者的AccessKey ID。 该OSS Bucket将存储文件。 | 
| ObjectStorage | String | OSS | 对象存储类型。默认为OSS。 | 
| Policy | String | eyJleHBpcmF**** | OSS通过该参数验证请求表单域的合法性。 | 
| Signature | String | v6lViO4FBvfquajQjg20K5hK**** | 根据AccessKeySecret和Policy计算出的签名信息。调用OSS API时,OSS验证该签名信息,从而确认Post请求的合法性。 | 
| UtcCreate | String | 2019-11-04T06:21:54.607Z | 生成文件上传URL的时间,UTC格式。 | 
| ErrorMessage | String | 系统异常 | 调用失败时,返回的出错信息。 | 
| RequestId | String | 74C2BB8D-1D6F-41F5-AE68-6B2310883F63 | 阿里云为该请求生成的唯一标识符。 | 
| Success | Boolean | true | 是否调用成功。 
 | 
返回参数的用途
调用OSS PostObject接口时,使用本接口的返回参数值作为请求参数值,将您编辑好的升级包文件上传到对象存储(OSS)。
以下是向对象存储OSS上传文件的Java代码示例。示例代码详细内容,请参见表单上传。
- 在pom.xml中添加以下依赖。<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.10</version> </dependency>
- 上传升级包文件的代码如下。public static boolean postObject(String key, String host, String policy, String ossAccessKeyId, String signature, String data) throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost(host); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("key", key, ContentType.TEXT_PLAIN); builder.addTextBody("policy", policy, ContentType.TEXT_PLAIN); builder.addTextBody("OSSAccessKeyId", ossAccessKeyId, ContentType.TEXT_PLAIN); builder.addTextBody("signature", signature, ContentType.TEXT_PLAIN); builder.addTextBody("success_action_status", "200", ContentType.TEXT_PLAIN); builder.addBinaryBody("file", data.getBytes()); HttpEntity multipart = builder.build(); uploadFile.setEntity(multipart); CloseableHttpResponse response = httpClient.execute(uploadFile); if (response.getStatusLine().getStatusCode() == 200) { return true; } return false; }
示例
请求示例
https://iot.cn-shanghai.aliyuncs.com/?Action=GenerateOTAUploadURL
&<公共请求参数>正常返回示例
XML格式
<GenerateOTAUploadURLResponse>
    <Data>
        <Key>ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin</Key>
        <Host>https://iotx-ota.oss-cn-shanghai.aliyuncs.com</Host>
        <Policy>eyJleHBpcmF****</Policy>
        <OSSAccessKeyId>cS8uRRy54Rsz****</OSSAccessKeyId>
        <ObjectStorage>OSS</ObjectStorage>
        <UtcCreate>2019-11-04T06:21:54.607Z</UtcCreate>
        <Signature>PKmRTy40QxqIUUWy325SCT/****</Signature>
        <FirmwareUrl>https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin</FirmwareUrl>
    </Data>
    <RequestId>B6E77674-09C4-4647-BF85-59CB72A72E4B</RequestId>
    <Success>true</Success>
</GenerateOTAUploadURLResponse>JSON格式
{
    "Data": {
        "Key": "ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin",
        "Host": "https://iotx-ota.oss-cn-shanghai.aliyuncs.com",
        "Policy": "eyJleHBpcmF****",
        "OSSAccessKeyId": "cS8uRRy54Rsz****",
        "ObjectStorage": "OSS",
        "UtcCreate": "2019-11-04T06:21:54.607Z",
        "Signature": "PKmRTy40QxqIUUWy325SCT/****",
        "FirmwareUrl": "https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin"
    },
    "RequestId": "B6E77674-09C4-4647-BF85-59CB72A72E4B",
    "Success": true
}