調用該介面產生裝置列表檔案上傳到OSS的URL及詳細資料。在建立靜態升級批次時,裝置列表檔案可用於指定要升級的裝置。
裝置列表檔案要求
- 裝置列表檔案包含裝置DeviceName,以換行分隔,每行一個DeviceName。支援CSV格式,檔案大小不能超過5 MB。
- 單個裝置列表檔案最多可包含升級包對應產品下的10,000個裝置,否則使用該檔案建立靜態升級批次時將報錯。
使用說明
該介面與其他介面結合使用完成裝置列表檔案上傳。上傳裝置列表檔案的步驟:
1. 調用本介面產生裝置列表檔案上傳到Object Storage Service的資訊。
本介面的返回參數包含:
調用OSS PostObject上傳裝置列表檔案的請求參數:Key、AccessKeyId、Signature和Policy。
2. 請在本介面返回結果後的1分鐘之內,使用OSS SDK調用PostObject介面上傳裝置列表檔案。上傳檔案的程式碼範例,請參見下文返回參數的用途章節。
3. 裝置列表上傳完成後,請在60分鐘內,調用物聯網平台API CreateOTAStaticUpgradeJob建立靜態升級批次。
如果上傳了裝置列表,但未調用CreateOTAStaticUpgradeJob建立靜態升級批次,上傳的檔案將被系統定期自動清理。
QPS限制
單個阿里雲帳號調用該介面的每秒請求數(QPS)最大限制為10。
調試
您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。
請求參數
| 名稱 | 類型 | 是否必選 | 樣本值 | 描述 |
| Action | String | 是 | GenerateDeviceNameListURL | 系統規定參數。取值:GenerateDeviceNameListURL。 |
| IotInstanceId | String | 否 | iot-cn-0pp1n8t**** | 執行個體ID。您可在物聯網平台控制台的執行個體概覽頁面,查看當前執行個體的ID。 重要
執行個體的更多資訊,請參見執行個體概述。 |
調用API時,除了本文介紹的該API的特有請求參數,還需傳入公用請求參數。公用請求參數說明,請參見公用參數文檔。
返回資料
| 名稱 | 類型 | 樣本值 | 描述 |
| Code | String | iot.system.SystemException | 調用失敗時,返回的錯誤碼。更多資訊,請參見錯誤碼。 |
| Data | Struct | 調用成功時,返回的檔案上傳資訊。詳情見以下參數資訊。 |
|
| AccessKeyId | String | cS8uRRy54Rsz**** | OSS Bucket擁有者的AccessKeyId。 該OSS Bucket將隱藏檔。 |
| FileUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | 檔案的URL,即檔案在Object Storage Service上的儲存地址。 裝置列表檔案上傳成功後,使用此參數調用CreateOTAStaticUpgradeJob介面建立靜態批量升級批次。 |
| Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | OSS的接入網域名稱。 |
| Key | String | ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | 調用OSS API PostObject上傳對象(即檔案)的名稱,包含OSS對象的完整路徑。 |
| 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=GenerateDeviceNameListURL
&<公用請求參數>
正常返回樣本
XML格式
<GenerateDeviceNameListURLResponse>
<Data>
<Policy>eyJleHBpcmF****</Policy>
<FileUrl>https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv</FileUrl>
<UtcCreate>2019-11-04T06:21:54.607Z</UtcCreate>
<AccessKeyId>cS8uRRy54Rsz****</AccessKeyId>
<Signature>v6lViO4FBvfquajQjg20K5hK****</Signature>
<ObjectStorage>OSS</ObjectStorage>
<Host>https://iotx-ota.oss-cn-shanghai.aliyuncs.com</Host>
<Key>ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv</Key>
</Data>
<RequestId>74C2BB8D-1D6F-41F5-AE68-6B2310883F63</RequestId>
<Success>true</Success>
</GenerateDeviceNameListURLResponse>
JSON格式
{
"Data": {
"Policy": "eyJleHBpcmF****",
"FileUrl": "https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv",
"UtcCreate": "2019-11-04T06:21:54.607Z",
"AccessKeyId": "cS8uRRy54Rsz****",
"Signature": "v6lViO4FBvfquajQjg20K5hK****",
"ObjectStorage": "OSS",
"Host": "https://iotx-ota.oss-cn-shanghai.aliyuncs.com",
"Key": "ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv"
},
"RequestId": "74C2BB8D-1D6F-41F5-AE68-6B2310883F63",
"Success": true
}
錯誤碼
訪問錯誤中心查看更多錯誤碼。