Génère l'URL et les détails d'un fichier de liste d'appareils que vous souhaitez charger dans Object Storage Service (OSS). Lorsque vous créez un lot de mise à jour statique, vous pouvez spécifier les appareils à mettre à jour dans un fichier de liste d'appareils.
Prérequis
Un fichier de liste d'appareils contient les noms des appareils. Séparez plusieurs noms d'appareils par des sauts de ligne. Chaque ligne ne doit contenir qu'un seul nom d'appareil. Le fichier de liste d'appareils doit être au format CSV. La taille maximale du fichier est de 5 Mo.
Chaque fichier de liste d'appareils peut contenir jusqu'à 10 000 noms d'appareils associés à un produit lié à un package de mise à jour. Si le nombre de noms d'appareils dans le fichier dépasse cette limite, une erreur se produira lors de la création du lot de mise à jour statique avec ce fichier.
Description
Cette opération s'utilise conjointement avec d'autres opérations pour charger un fichier de liste d'appareils. Procédure :
1. Appelez cette opération pour générer les informations relatives au fichier de liste d'appareils que vous souhaitez charger dans OSS.
Les paramètres de réponse de cette opération API incluent :
Les paramètres de requête suivants de l'opération OSS PostObject utilisée pour charger le fichier de liste d'appareils : Key, AccessKeyId, Signature et Policy.
2. Utilisez un SDK OSS pour appeler l'opération PostObject afin de charger le fichier de liste d'appareils dans la minute qui suit la réception de la réponse. Pour plus d'informations sur l'exemple de code, consultez la section « Utilisation des paramètres de réponse » de cette rubrique.
Les informations de paramètre renvoyées par cette opération sont valides pendant une minute. Vous devez charger le fichier de liste d'appareils dans ce délai.
3. Après avoir chargé le fichier de liste d'appareils, appelez l'opération CreateOTAStaticUpgradeJob d'IoT Platform pour créer un lot de mise à jour statique dans un délai de 60 minutes.
Si vous chargez des fichiers de liste d'appareils sans appeler l'opération CreateOTAStaticUpgradeJob pour créer un lot de mise à jour statique, le système supprimera automatiquement les fichiers chargés. Cette suppression s'effectue régulièrement.
Limites de QPS
Chaque compte Alibaba Cloud peut effectuer jusqu'à 10 requêtes par seconde (QPS).
Les utilisateurs RAM d'un compte Alibaba Cloud partagent le quota de ce compte.
Débogage
Paramètres de requête
| Paramètre | Type | Obligatoire | Exemple | Description |
| Action | String | Oui | GenerateDeviceNameListURL | L'opération que vous souhaitez exécuter. Définissez la valeur sur GenerateDeviceNameListURL. |
| IotInstanceId | String | Non | iot-cn-0pp1n8t**** | L'ID de l'instance. Vous pouvez consulter l'ID de l'instance sur la page Overview de la console IoT Platform. Important
Pour plus d'informations, consultez Overview. |
Outre les paramètres de requête spécifiques à l'opération présentés ci-dessus, vous devez configurer les paramètres de requête communs lors de l'appel à cette opération. Pour plus d'informations, consultez les paramètres de requête communs.
Paramètres de réponse
| Paramètre | Type | Exemple | Description |
| Code | String | iot.system.SystemException | Le code d'erreur renvoyé en cas d'échec de l'appel. Pour plus d'informations, consultez les codes d'erreur. |
| Data | Struct | Les informations renvoyées en cas de succès de l'appel. Pour plus d'informations, consultez les paramètres suivants : | |
| AccessKeyId | String | cS8uRRy54Rsz**** | L'AccessKey ID du propriétaire du bucket. Le bucket OSS stocke le fichier. |
| FileUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | L'URL du fichier stocké dans OSS. Une fois le fichier de liste d'appareils chargé, ce paramètre est utilisé pour appeler l'opération CreateOTAStaticUpgradeJob afin de créer un lot de mise à jour statique. |
| Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | L'endpoint OSS. |
| Key | String | ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | Le chemin complet du fichier dans OSS. Vous pouvez appeler l'opération OSS PostObject pour charger le fichier dans OSS. |
| ObjectStorage | String | OSS | Le type de stockage objet. Valeur par défaut : OSS. |
| Policy | String | eyJleHBpcmF**** | Le paramètre utilisé par OSS pour vérifier les champs de formulaire de la requête. |
| Signature | String | v6lViO4FBvfquajQjg20K5hK**** | La signature calculée à partir de AccessKeySecret et de Policy. Lors de l'appel à une opération OSS, le service utilise les informations de signature pour vérifier la requête POST. |
| UtcCreate | String | 2019-11-04T06:21:54.607Z | L'heure de génération de l'URL du fichier à charger. L'heure est affichée au format UTC. |
| ErrorMessage | String | A system exception occurred. | Le message d'erreur renvoyé en cas d'échec de l'appel. |
| RequestId | String | 74C2BB8D-1D6F-41F5-AE68-6B2310883F63 | L'ID de la requête. |
| Success | Boolean | true | Indique si l'appel a réussi.
|
Utilisation des paramètres de réponse
Lorsque vous appelez l'opération OSS PostObject pour charger le fichier dans OSS, spécifiez les valeurs des paramètres renvoyés par cette opération comme paramètres de requête de l'opération PostObject.
L'exemple de code Java suivant illustre le chargement du fichier de liste d'appareils dans OSS.
Ajoutez les dépendances suivantes au fichier 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>
Exemple de code :
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;
}
Exemples
Exemple de requête
https://iot.cn-shanghai.aliyuncs.com/?Action=GenerateDeviceNameListURL
&<Common request parameters>
Exemple de réponse en cas de succès
Format 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>
Format 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
}
Codes d'erreur
Pour obtenir la liste des codes d'erreur, consultez le Centre d'erreurs API.