Object Storage Service (OSS) にアップロードするデバイスリストファイルの URL と詳細を生成します。静的更新バッチを作成する際に、デバイスリストファイルで更新するデバイスを指定できます。
要件
- デバイスリストファイルには、デバイスの名前が含まれています。複数のデバイス名は改行で区切ります。各行には 1 つのデバイス名のみが含まれます。デバイスリストファイルは CSV 形式である必要があります。デバイスリストファイルの最大サイズは 5 MB です。
- 各デバイスリストファイルには、更新パッケージに関連付けられている製品のデバイス名を最大 10,000 個含めることができます。デバイスリストファイル内のデバイス名が制限を超えると、ファイルを使用して静的更新バッチを作成するときにエラーが発生します。
説明
この操作は、他の操作と組み合わせて使用して、デバイスリストファイルをアップロードできます。手順:
1. この操作を呼び出して、OSS にアップロードするデバイスリストファイルの情報を生成します。
この API 操作のレスポンスパラメータには以下が含まれます。
デバイスリストファイルをアップロードするために使用される OSS PostObject 操作の次のリクエストパラメータ: Key、AccessKeyId、Signature、および Policy。
2. レスポンスが返されてから 1 分以内に、OSS SDK を使用して PostObject 操作を呼び出し、デバイスリストファイルをアップロードします。サンプルコードの詳細については、このトピックの「レスポンスパラメータの使用法」セクションをご参照ください。
3. デバイスリストファイルをアップロードした後、IoT Platform の CreateOTAStaticUpgradeJob 操作を呼び出して、60 分以内に静的更新バッチを作成します。
デバイスリストファイルをアップロードしたが、CreateOTAStaticUpgradeJob 操作を呼び出して静的更新バッチを作成しなかった場合、システムはアップロードされたファイルを自動的に削除します。システムはファイルを定期的に削除します。
QPS 制限
各 Alibaba Cloud アカウントは、最大 10 クエリ/秒 (QPS) を実行できます。
デバッグ
リクエストパラメータ
| パラメータ | タイプ | 必須 | 例 | 説明 |
| Action | String | はい | GenerateDeviceNameListURL | 実行する操作。値を GenerateDeviceNameListURL に設定します。 |
| IotInstanceId | String | いいえ | iot-cn-0pp1n8t**** | インスタンスの ID。IoT Platform コンソールの 概要 ページでインスタンス ID を表示できます。 重要
詳細については、「概要」をご参照ください。 |
上記の操作固有のリクエストパラメータに加えて、この操作を呼び出すときは、共通のリクエストパラメータを設定する必要があります。詳細については、「共通リクエストパラメータ」をご参照ください。
レスポンスパラメータ
| パラメータ | タイプ | 例 | 説明 |
| Code | String | iot.system.SystemException | 呼び出しが失敗した場合に返されるエラーコード。詳細については、「エラーコード」をご参照ください。 |
| Data | Struct | 呼び出しが成功した場合に返される情報。詳細については、以下のパラメータをご参照ください。 | |
| AccessKeyId | String | cS8uRRy54Rsz**** | バケット所有者の AccessKey ID。 OSS バケットはファイルを保存します。 |
| FileUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | OSS に保存されているファイルの URL。 デバイスリストファイルがアップロードされると、このパラメータを使用して CreateOTAStaticUpgradeJob 操作を呼び出し、静的更新バッチを作成します。 |
| Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | OSS のエンドポイント。 |
| Key | String | ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.csv | OSS 内のファイルの完全なパス。OSS PostObject 操作を呼び出して、ファイルを OSS にアップロードできます。 |
| ObjectStorage | String | OSS | オブジェクトストレージのタイプ。デフォルト値: OSS。 |
| Policy | String | eyJleHBpcmF**** | リクエストのフォームフィールドを検証するために OSS によって使用されるパラメータ。 |
| Signature | String | v6lViO4FBvfquajQjg20K5hK**** | AccessKeySecret と Policy に基づいて計算される署名。OSS 操作を呼び出すと、OSS は署名情報を使用して POST リクエストを検証します。 |
| UtcCreate | String | 2019-11-04T06:21:54.607Z | アップロードするファイルの URL が生成された時刻。時刻は UTC で表示されます。 |
| ErrorMessage | String | システム例外が発生しました。 | 呼び出しが失敗した場合に返されるエラーメッセージ。 |
| RequestId | String | 74C2BB8D-1D6F-41F5-AE68-6B2310883F63 | リクエストの ID。 |
| Success | Boolean | true | 呼び出しが成功したかどうかを示します。
|
レスポンスパラメータの使用法
OSS PostObject 操作を呼び出してファイルを OSS にアップロードする場合は、PostObject 操作のリクエストパラメータに、この操作によって返されるパラメータの値を指定します。
Java で記述された次のサンプルコードは、デバイスリストファイルを OSS にアップロードする方法を示しています。
- 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
}エラーコード
エラーコードのリストについては、API エラーセンターをご参照ください。