Genera la URL y otra información obligatoria para cargar un archivo de paquete de actualización en Object Storage Service (OSS).
Notas de uso
Esta operación puede usarse junto con otras para crear un paquete de actualización. Procedimiento:
Llame a esta operación de API para generar los detalles del archivo de paquete de actualización que desea cargar en OSS.
A continuación se describen los parámetros de respuesta de esta operación de API:
Los siguientes parámetros de solicitud de la operación PostObject de OSS, que se usa para cargar el archivo del paquete de actualización: Host,Key, OSSAccessKeyId, Signature y Policy.
El siguiente parámetro de solicitud de la operación CreateOTAFirmware, que se usa para crear el paquete de actualización: FirmwareUrl.
-
Use un SDK de OSS para llamar a la operación PostObject y cargar el archivo del paquete de actualización. Para obtener más información sobre el código de ejemplo, consulte la sección "Uso de los parámetros de respuesta".
ImportanteLa información de los parámetros que devuelve esta operación tiene una validez de 1 minuto. Debe cargar el archivo del paquete de actualización dentro de ese minuto. El tamaño máximo del archivo de paquete de actualización cargado es de 1,000 MB.
Una vez cargado el archivo del paquete de actualización, llame a la operación CreateOTAFirmware para crear un paquete de actualización dentro de un plazo de 60 minutos.
Si se cargan archivos de paquetes de actualización pero no se llama a la operación CreateOTAFirmware para crear los paquetes correspondientes, el sistema eliminará automáticamente dichos archivos de forma periódica.
Límites de QPS
Cada cuenta de Alibaba Cloud puede ejecutar hasta 10 consultas por segundo (QPS).
Los usuarios de RAM de una cuenta de Alibaba Cloud comparten la cuota de dicha cuenta.
Depuración
Parámetros de solicitud
Parámetro | Tipo | Obligatorio | Ejemplo | Descripción |
Action | String | Sí | GenerateOTAUploadURL | La operación que se va a realizar. Establezca el valor en GenerateOTAUploadURL. |
IotInstanceId | String | No | iot-cn-0pp1n8t**** | El ID de la instancia. Puede consultar el ID de la instancia en la página Overview de la consola de IoT Platform. Importante
Para obtener más información, consulte Descripción general. |
FileSuffix | String | No | apk | La extensión del nombre del archivo del paquete de actualización. Valores válidos: bin, dav, apk, tar, gz, tar.gz, zip y gzip. Valor predeterminado: bin. |
Además de los parámetros de solicitud específicos de la operación mencionados anteriormente, debe especificar los parámetros de solicitud comunes al llamar a esta operación. Para obtener más información, consulte Parámetros de solicitud comunes.
Parámetros de respuesta
Parámetro | Tipo | Ejemplo | Descripción |
Code | String | iot.system.SystemException | El código de error que se devuelve si la llamada falla. Para obtener más información, consulte Códigos de error. |
Data | Struct | La información que se devuelve si la llamada es exitosa. Para obtener más información, consulte los siguientes parámetros. | |
FirmwareUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472**/ck2nfzljo00023g7kysg0**.bin | La URL del archivo del paquete de actualización almacenado en OSS. Una vez cargado el archivo del paquete de actualización, use este parámetro para llamar a la operación CreateOTAFirmware y crear un paquete de actualización. |
Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | El endpoint de OSS. |
Key | String | ota/65dfcda0473be29836dfde585472**/ck2nfzljo00023g7kysg0**.bin | La ruta completa del archivo en OSS. El archivo se carga mediante la operación PostObject de OSS. |
OSSAccessKeyId | String | cS8uRRy54Rsz**** | El AccessKey ID del propietario del bucket. Este bucket de OSS almacena el archivo del paquete de actualización. |
ObjectStorage | String | OSS | El tipo de object storage. Valor predeterminado: OSS. |
Policy | String | eyJleHBpcmF**** | El parámetro que usa OSS para verificar los campos del formulario de la solicitud. |
Signature | String | v6lViO4FBvfquajQjg20K5hK**** | La firma calculada con base en AccessKeySecret y Policy. Al llamar a una operación de OSS, el servicio usa esta información de firma para verificar la solicitud POST. |
UtcCreate | String | 2019-11-04T06:21:54.607Z | La hora en que se generó la URL del archivo de paquete de actualización cargado. La hora se muestra en formato UTC. |
ErrorMessage | String | A system exception occurred. | El mensaje de error que se devuelve si la llamada falla. |
RequestId | String | 74C2BB8D-1D6F-41F5-AE68-6B2310883F63 | El ID de la solicitud. |
Success | Boolean | true | Indica si la llamada fue exitosa. Valores válidos:
|
Uso de los parámetros de respuesta
Cuando llame a la operación PostObject de OSS para cargar el archivo del paquete de actualización en OSS, especifique los parámetros de solicitud con los valores devueltos por la operación GenerateOTAUploadURL.
El siguiente código de ejemplo escrito en Java muestra cómo cargar el archivo del paquete de actualización en OSS. Para obtener más información sobre el código de ejemplo, consulte Carga de formularios.
-
Agregue las siguientes dependencias al archivo 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> -
Código de ejemplo:
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; }
Ejemplos
Solicitudes de ejemplo
https://iot.cn-shanghai.aliyuncs.com/?Action=GenerateOTAUploadURL
&<Common request parameters>
Respuestas exitosas de ejemplo
Formato 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>
Formato 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
}
Códigos de error
Para obtener una lista de códigos de error, visite el Centro de errores de API.