調用該介面產生升級包檔案上傳到OSS的URL及詳細資料。
使用說明
該介面與其他介面結合使用完成升級包建立。建立升級包的步驟:
1. 調用本介面產生升級包檔案上傳到Object Storage Service的資訊。
本介面的返回參數包含:
- 調用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,即檔案在Object Storage Service上的儲存地址。 檔案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 | Object Storage Service類型。預設為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介面時,使用本介面的返回參數值作為請求參數值,將您編輯好的升級包檔案上傳到Object Storage Service。
以下是向Object Storage Service上傳檔案的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
}
錯誤碼
訪問錯誤中心查看更多錯誤碼。