Object Storage Service (OSS) にアップデートパッケージファイルをアップロードするために必要な URL とその他の情報を生成します。
使用方法
この操作は、他の操作と組み合わせてアップデートパッケージを作成するために使用できます。手順:
1. この API 操作を呼び出して、OSS にアップロードするアップデートパッケージファイルの詳細を生成します。
次のセクションでは、この API 操作のレスポンスパラメータについて説明します。
更新パッケージファイルをアップロードするために使用する OSS PostObject 操作の次のリクエストパラメーター: Host、 Key、OSSAccessKeyId、Signature、および Policy。
更新パッケージを作成するために使用される CreateOTAFirmware 操作の次のリクエストパラメータ : FirmwareUrl。
2. OSS SDK を使用して PostObject 操作を呼び出し、アップデートパッケージファイルをアップロードします。サンプルコードの詳細については、「レスポンスパラメータの使用方法」セクションをご参照ください。
この操作によって返されるパラメータ情報は 1 分間有効です。1 分以内にアップデートパッケージファイルをアップロードする必要があります。アップロードされるアップデートパッケージファイルの最大サイズは 1,000 MB です。
3. アップデートパッケージファイルがアップロードされた後、CreateOTAFirmware 操作を呼び出して、60 分以内にアップデートパッケージを作成します。
アップデートパッケージファイルがアップロードされても、CreateOTAFirmware 操作を呼び出してファイルのアップデートパッケージを作成しない場合、アップロードされたファイルはシステムによって定期的に自動的に削除されます。
QPS 制限
各 Alibaba Cloud アカウントは、最大 10 クエリ/秒 (QPS) を実行できます。
Alibaba Cloud アカウントの RAM ユーザーは、Alibaba Cloud アカウントのクォータを共有します。
デバッグ
リクエストパラメータ
パラメータ | タイプ | 必須 | 例 | 説明 |
Action | String | はい | GenerateOTAUploadURL | 実行する操作。値を GenerateOTAUploadURL に設定します。 |
IotInstanceId | String | いいえ | iot-cn-0pp1n8t**** | インスタンスの ID。IoT Platform コンソール の [概要] ページでインスタンスの [ID] を表示できます。 重要
詳細については、「概要」をご参照ください。 |
FileSuffix | String | いいえ | apk | アップデートパッケージファイルのファイル名拡張子。有効な値:bin、dav、apk、tar、gz、tar.gz、zip、gzip。 デフォルト値:bin。 |
上記の操作固有のリクエストパラメータに加えて、この操作を呼び出すときは、共通のリクエストパラメータを指定する必要があります。詳細については、「共通リクエストパラメータ」をご参照ください。
レスポンスパラメータ
パラメータ | タイプ | 例 | 説明 |
Code | String | iot.system.SystemException | 呼び出しが失敗した場合に返されるエラーコード。詳細については、「エラーコード」をご参照ください。 |
Data | Struct | 呼び出しが成功した場合に返される情報。詳細については、以下のパラメータをご参照ください。 | |
FirmwareUrl | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com/ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin | OSS に保存されているアップデートパッケージファイルの URL。 アップデートパッケージファイルがアップロードされた後、このパラメータを使用して CreateOTAFirmware 操作を呼び出し、アップデートパッケージを作成します。 |
Host | String | https://iotx-ota.oss-cn-shanghai.aliyuncs.com | OSS のエンドポイント。 |
Key | String | ota/65dfcda0473be29836dfde585472****/ck2nfzljo00023g7kysg0****.bin | OSS 内のファイルの完全なパス。ファイルは、OSS PostObject 操作を呼び出すことによってアップロードされます。 |
OSSAccessKeyId | String | cS8uRRy54Rsz**** | バケットオーナーの AccessKey ID。 この OSS バケットには、アップデートパッケージファイルが保存されます。 |
ObjectStorage | String | OSS | オブジェクトストレージのタイプ。デフォルト値:OSS。 |
Policy | String | eyJleHBpcmF**** | OSS がリクエストのフォームフィールドを検証するために使用するパラメータ。 |
Signature | String | v6lViO4FBvfquajQjg20K5hK**** | AccessKeySecret と ポリシー に基づいて計算される署名です。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 にアップロードするときは、GenerateOTAUploadURL 操作によって返される値を使用してリクエストパラメータを指定します。
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, //日本語コメント:key パラメータ String host, //日本語コメント:host パラメータ String policy, //日本語コメント:policy パラメータ String ossAccessKeyId, //日本語コメント:ossAccessKeyId パラメータ String signature, //日本語コメント:signature パラメータ String data) throws IOException { //日本語コメント:data パラメータ 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
}
エラーコード
エラーコードの一覧については、API エラーセンターをご参照ください。