全部產品
Search
文件中心

IoT Platform:GenerateOTAUploadURL

更新時間:Feb 13, 2025

調用該介面產生升級包檔案上傳到OSS的URL及詳細資料。

使用說明

該介面與其他介面結合使用完成升級包建立。建立升級包的步驟:

1. 調用本介面產生升級包檔案上傳到Object Storage Service的資訊。

本介面的返回參數包含:

  • 調用OSS PostObject上傳升級包檔案的請求參數:HostKeyOSSAccessKeyIdSignaturePolicy
  • 調用CreateOTAFirmware建立升級包的請求參數FirmwareUrl

2. 請在本介面返回結果後的1分鐘之內,使用OSS SDK調用PostObject介面上傳升級包檔案。上傳檔案的程式碼範例,請參見下文“返回參數的用途”章節。

重要 本介面返回的參數資訊有效期間為1分鐘,請在1分鐘內上傳升級包。上傳的升級包檔案大小不能超過1,000 MB。

3. 升級包上傳完成後,請在60分鐘內,調用物聯網平台API CreateOTAFirmware介面建立升級包。

如果上傳了升級包,但未調用CreateOTAFirmware介面建立升級包,上傳的檔案將被系統定期自動清理。

QPS限制

單個阿里雲帳號調用該介面的每秒請求數(QPS)最大限制為10。

說明 單個阿里雲帳號下的所有RAM使用者共用該阿里雲帳號的配額。

調試

您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。

請求參數

名稱

類型

是否必選

樣本值

描述

Action String GenerateOTAUploadURL

系統規定參數。取值:GenerateOTAUploadURL。

IotInstanceId String iot-cn-0pp1n8t****

執行個體ID。您可在物聯網平台控制台的執行個體概覽頁面,查看當前執行個體的ID

重要
  • 若有ID值,必須傳入該ID值,否則調用會失敗。
  • 若無ID值,則無需傳入。

執行個體的更多資訊,請參見執行個體概述

FileSuffix String apk

升級包副檔名。可選副檔名:

  • bin(預設)
  • dav
  • apk
  • tar
  • gz
  • tar.gz
  • zip
  • gzip

調用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的格式為https://BucketName.Endpoint/ObjectName。其中,BucketName是Bucket名稱,Endpoint是檔案訪問網域名稱(各地區的Endpoint資訊,請參見訪問網域名稱和資料中心),ObjectName是包含檔案夾以及檔案尾碼在內的該檔案的完整路徑。

升級包檔案上傳成功後,使用此參數調用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****

根據AccessKeySecretPolicy計算出的簽名資訊。調用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

是否調用成功。

  • true:調用成功。
  • false:調用失敗。

返回參數的用途

調用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
}

錯誤碼

訪問錯誤中心查看更多錯誤碼。