Genera la URL y los detalles de un archivo de lista de dispositivos que desea cargar en Object Storage Service (OSS). Al crear un lote de actualización estática, puede especificar los dispositivos que desea actualizar mediante un archivo de lista de dispositivos.
Requisitos
Un archivo de lista de dispositivos contiene los nombres de los dispositivos. Separe varios nombres de dispositivo con saltos de línea. Cada línea debe contener solo un nombre de dispositivo. El archivo de lista de dispositivos debe tener formato CSV. El tamaño máximo del archivo es de 5 MB.
Cada archivo de lista de dispositivos puede contener hasta 10,000 nombres correspondientes a los dispositivos de un producto vinculado a un paquete de actualización. Si el número de nombres en el archivo supera este límite, se producirá un error al utilizarlo para crear un lote de actualización estática.
Descripción
Esta operación se utiliza junto con otras para cargar un archivo de lista de dispositivos. Procedimiento:
Llame a esta operación para generar la información del archivo de lista de dispositivos que desea cargar en OSS.
Los parámetros de respuesta de esta operación de API incluyen:
A continuación se muestran los parámetros de solicitud de la operación PostObject de OSS, utilizada para cargar el archivo de lista de dispositivos: Key, AccessKeyId, Signature y Policy.
-
Utilice un SDK de OSS para llamar a la operación PostObject y cargar el archivo de lista de dispositivos dentro de 1 minuto después de recibir la respuesta. Para obtener más información sobre el código de ejemplo, consulte la sección "Uso de los parámetros de respuesta" en este tema.
NotaLa información de los parámetros devuelta por esta operación tiene una validez de 1 minuto. Debe cargar el archivo de lista de dispositivos dentro de ese periodo.
Después de cargar el archivo de lista de dispositivos, llame a la operación CreateOTAStaticUpgradeJob de IoT Platform para crear un lote de actualización estática dentro de los siguientes 60 minutos.
Si carga archivos de lista de dispositivos pero no llama a la operación CreateOTAStaticUpgradeJob para crear un lote de actualización estática, el sistema eliminará automáticamente los archivos cargados. El sistema realiza esta limpieza de forma periódica.
Límites de QPS
Cada cuenta de Alibaba Cloud admite 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í | GenerateDeviceNameListURL | La operación que desea ejecutar. Establezca el valor en GenerateDeviceNameListURL. |
| 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. |
Además de los parámetros de solicitud específicos de la operación mencionados anteriormente, debe configurar 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 devuelto si la llamada falla. Para obtener más información, consulte Códigos de error. |
| Data | Struct | La información devuelta si la llamada es exitosa. Para obtener más información, consulte los siguientes parámetros: | |
| AccessKeyId | String | cS8uRRy54Rsz**** | El AccessKey ID del propietario del bucket. El bucket de OSS almacena el archivo. |
| FileUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | La URL del archivo almacenado en OSS. Una vez cargado el archivo de lista de dispositivos, utilice este parámetro para llamar a la operación CreateOTAStaticUpgradeJob y crear un lote de actualización estática. |
| Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | El endpoint de OSS. |
| Key | String | ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | La ruta completa del archivo en OSS. Puede llamar a la operación PostObject de OSS para cargar el archivo. |
| ObjectStorage | String | OSS | El tipo de object storage. Valor predeterminado: OSS. |
| Policy | String | eyJleHBpcmF**** | El parámetro que utiliza 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 utiliza 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 que desea cargar. La hora se muestra en formato UTC. |
| ErrorMessage | String | A system exception occurred. | El mensaje de error devuelto 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.
|
Uso de los parámetros de respuesta
Cuando llame a la operación PostObject de OSS para cargar el archivo, especifique los valores de los parámetros devueltos por esta operación en los parámetros de solicitud de PostObject.
El siguiente código de ejemplo en Java muestra cómo cargar el archivo de lista de dispositivos en OSS.
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=GenerateDeviceNameListURL
&<Common request parameters>
Respuestas exitosas de ejemplo
Formato 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>
Formato 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
}
Códigos de error
Para obtener una lista de códigos de error, visite el Centro de errores de API.