阿里云对象存储OSS与智能媒体管理(IMM)深度结合,支持文档预览、文档格式转换、人脸识别、图片分析、二维码识别等丰富的数据分析处理操作。本文介绍如何通过OSS使用IMM的相关功能。
前提条件
仅华北 2(北京)、华东 1(杭州)、华东 2(上海)、华南 1(深圳)、华北 3(张家口)、新加坡地域的存储空间支持使用IMM。
无地域属性的存储空间不支持使用IMM。
如果您通过RAM用户使用IMM相关功能,需确保RAM用户拥有以下权限。
系统权限:
AliyunOSSReadOnlyAccess
和AliyunIMMFullAccess
关于为RAM用户授权的具体操作,请参见为RAM用户授权。
自定义权限:
oss:ProcessImm
和ram:GetRole
为RAM用户授予自定义权限时,您需要先创建对应的自定义权限,然后为RAM用户授权。具体操作,请参见为RAM用户授予自定义的权限策略。
费用说明
创建IMM Project及使用IMM功能会产生一定的费用。详细费用,请参见计费说明。
步骤一:绑定IMM
登录OSS管理控制台。
单击Bucket 列表,然后单击目标Bucket名称。
在左侧导航栏,选择数据处理 > 智能媒体。
单击绑定,选择需要使用的功能。
IMM提供以下三个功能:
在绑定对话框的IMM配置栏,选择以下两种绑定方式:
创建默认Project:输入Project的名称,系统会自动在存储空间所在的地域创建对应的IMM Project,并将其与当前存储空间绑定。
绑定已有Project:在下拉列表中选择需要绑定至存储空间的IMM Project。
重要仅在存储空间所在的地域创建了对应功能的IMM Project的情况下,才能看到绑定已有Project的选项。关于创建IMM Project的具体操作,请参见创建项目。
您也可以在智能媒体标签页单击批量创建,然后在功能配置对话框中指定绑定项目名称,批量绑定多个IMM功能。
通过这种方式只能绑定自动新建的IMM Project,无法绑定已有的IMM Project。如果指定的项目名称与已有的项目名称相同,则无法绑定。
单击确定。
步骤二:使用IMM
使用OSS控制台
单击Bucket 列表,然后单击目标Bucket名称。
在左侧导航栏,选择文件管理 > 文件列表。
单击要处理的图片或文档文件的名称,在详情对话框中直接使用IMM的相关功能。
您也可以单击目标文件右侧的详情,打开详情对话框。
使用Java SDK
以下代码用于通过OSS Java SDK使用IMM。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import java.net.URL;
import java.util.Date;
public class Demo {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
private static String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
static EnvironmentVariableCredentialsProvider credentialsProvider;
static {
try {
credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
} catch (com.aliyuncs.exceptions.ClientException e) {
e.printStackTrace();
}
}
// 填写Bucket名称,例如examplebucket。
private static String bucketName = "examplebucket";
// 填写Object完整路径,完整路径中不能包含Bucket名称。
private static String objectKey = "example.jpg";
public static void main(String[] args) {
// 获取Object人脸识别的签名URL。
URL url = getUrl("imm/detectface", bucketName, objectKey);
customerPrint(url);
bucketName = "examplebucket";
objectKey = "example.txt";
// 获取Object文档预览的签名URL。
url = getUrl("imm/previewdoc", bucketName, objectKey);
customerPrint(url);
}
private static void customerPrint(URL url){
if(url != null){
System.out.println(url.toString());
}else{
System.out.println("获取URL失败");
}
}
private static URL getUrl(String process, String bucketName, String objectKey) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectKey);
request.setProcess(process);
// 设置签名URL过期时间,单位为毫秒。
request.setExpiration(new Date(new Date().getTime() + 3600 * 1000));
return ossClient.generatePresignedUrl(request);
} catch (OSSException oe) {
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Error Message:" + ce.getMessage());
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
return null;
}
}
(可选)解绑IMM
如果您不再需要使用IMM的功能,可以将存储空间与IMM解绑,避免产生额外的费用。
单击Bucket 列表,然后单击目标Bucket名称。
在左侧导航栏,选择数据处理 > 智能媒体。
在需要解绑的IMM右侧,选择>解绑。
单击确定。