シナリオ
インポートは、大量の画像をインポートする必要があるシナリオに適しています。
手順
次に示すように、インポートを使用するには、Object Storage Service (OSS) を有効にしてから、必要な RAM ロール権限を Image Search アカウントに付与します。
1. OSS の有効化
- OSS の有効化については、「OSS の有効化」をご参照ください。 Image Search インスタンスと OSS が同じリージョンにあることを確認してください。
- OSS を有効化した後、バケットを作成する必要があります。詳細は、「バケットの作成」をご参照ください。
2. 画像のインポート
画像を OSS バケットにインポートするには、次のガイドラインに従ってください。
画像を保存するパスは、ユーザーが設定可能です。パスを指定したら、[インポート] をクリックして画像をインポートします。
指定したパスに increment.meta ファイルが作成されていることを確認してください。このファイルには、インポートタスクの情報が保存されます。ファイル形式は次の要件を満たしている必要があります。
- 各行は、1 つの画像のみに対応すること。
- すべての画像情報は、JSON 形式でエンコードされていること (後述)。
名前 | タイプ | 説明 | 備考 |
---|---|---|---|
OperationType | String | 操作 | このフィールドには、画像に対して実行される操作を指定します。ADD は、新しい画像を追加します。DELETE は、画像を削除します。 |
ProductId | String | 一意の商品/画像識別子 | 商品画像検索の場合、このフィールドには、商品 ID を指定します。一般画像検索の場合、このフィールドには、画像名を指定します。 |
CategoryId | Integer | カテゴリ情報 | 商品画像検索の場合、このフィールドは必須ではありません。このフィールドには、画像が属するカテゴリを指定します。詳細は、「カテゴリ一覧」をご参照ください。一般画像検索の場合、このフィールドは不要です。このフィールドを空のままにするか、値を 88888888 に設定します。 |
CustomContent | String | カスタムコンテンツ | このフィールドには、カスタムコンテンツを指定します。カスタムコンテンツは読み取り専用で、検索結果に表示されます。 |
PicName | String | 画像リスト | このフィールドには、インポートする画像名のリストを指定します。 |
- increment.meta ファイルの例:
{"OperationType":"ADD","ProductId":"1000", "CategoryId":0, "CustomContent":"k1:v1,k2:v2,k3:v3","PicName":"girl_cloth1.jpg"}
{"OperationType":"ADD","ProductId":"1001", "CategoryId":1,"CustomContent":"k1:v1,k2:v2,k3:v3", "PicName":"girl_cloth3.jpg"}
{"OperationType":"ADD","ProductId":"1002", "CategoryId":0, "CustomContent":"k1:v1,k2:v2,k3:v3", "PicName":"girl_cloth4.jpg"}
{"OperationType":"ADD","ProductId":"1003", "CustomContent":"k1:v1,k2:v2,k3:v3", "PicName":"girl_cloth6.jpg"}
{"OperationType":"DELETE","ProductId":"1004", "PicName":"fengyi.jpg"}
{"OperationType":"DELETE","ProductId":"1005"}
- increment.meta ファイルにリストされている画像は、increment.meta ファイルと同じパスに保存されています。
OSS への画像のインポートの詳細は、「オブジェクトのアップロード」をご参照ください。
3. アカウントへの RAM ロール権限の付与
インポートを使用するには、Security Token Service を使用して、OSS への一時的なアクセス権限を Image Search アカウントに付与する必要があります。手順は次のとおりです。
ロールの作成
RAM コンソールにアクセスし、[RAM ロール] > [RAM ロールの作成] を選択します。
[Alibaba Cloud サービス] > [Image Search] を選択します。
RAM ロール名を入力します。
ロールへの権限付与
新しく作成されたロールには権限が設定されていません。関連する権限を取得するポリシーを作成する必要があります。
ポリシーを作成するには、次の形式を使用します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:${bucket}${path}/*"
]
}
]
}
- ${bucket}:バケットを指定します。
- ${path}:インポートする画像を格納するパスを指定します。
例
この例では、バケット imagesearch-increment 内のパス /increment に画像をインポートするポリシーを作成しています。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject"
],
"Resource": [
"acs:oss:*:*:imagesearch-increment/increment/*"
]
}
]
}
次の手順を実行して、RAM ロール権限をアカウントに付与します。
RAM コンソールで、[権限] > [ポリシー] > [ポリシーの作成] を選択します。
[カスタムポリシーの作成] ページで、ポリシー名を入力し、[スクリプト] を選択して、[ポリシードキュメント] を設定します。
[OK] をクリックします。
RAM コンソールに戻り、[RAM ロール] を選択します。
[ロール名] 列で、ターゲット RAM ロールを選択し、[権限の追加] をクリックします。
左側の [ポリシー名] 列で、作成したポリシーを選択し、[OK] をクリックします。
画像のインポート
OSS から画像をインポートするには、Image Search コンソールにアクセスし、[インスタンスの詳細] ページで [インポート] をクリックし、基本情報を入力してから [インポート] をクリックします。
ARN:Image Search にインポートするために作成した RAM ロールアカウント名。ロールをクリックして、ARN を確認します (次図)。
バケット名:画像が保存されている OSS のバケットの名前。
注:Image Search インスタンスと OSS が同じリージョンにあることを確認してください。
パス:画像が保存されているパス。
注:データパスは、スラッシュ (/) で始まる必要があります (例:/imagesearch)。
次の図は、バケット imagesearch1 内のデータパス /imagesearch を示します。

OSS インポート履歴
[インスタンスの詳細] ページで [インポート履歴の表示] をクリックすると、インポートタスクの履歴が表示されます。インポートタスクが完了すると、結果を示すメッセージが表示されます。
- 一部の画像を処理できない場合、「一部の画像のインポートが失敗しました。レポートをダウンロードする」というエラーメッセージが表示されます。このエラーが発生した場合、レポートをダウンロードして、影響を受けた画像を表示し、エラーの根本原因を特定できます。
- 選択したすべての画像がインポートされた場合、インポートタスクが成功したことを示すメッセージが表示されます。