美团 java_GitHub - meituan/mssapi_java: 美团云对象存储 Java SDK
MSS(Meituan Storage Service) SDK for Java
This is MSS SDK for Java。
Introduction
MSS服务介绍
美团云存储服务(Meituan Storage Service, 简称MSS),是美团云对外提供的云存储服务,其具备高可靠,安全,低成本等特性,并且其API兼容S3。MSS适合存放非结构化的数据,比如图片,视频,文档,备份等。
MSS基本概念介绍
MSS的API兼容S3, 其基本概念也和S3相同,主要包括Object, Bucket, Access Key, Secret Key等。
Object对应一个文件,包括数据和元数据两部分。元数据以key-value的形式构成,它包含一些默认的元数据信息,比如Content-Type, Etag等,用户也可以自定义元数据。
Bucket是object的容器,每个object都必须包含在一个bucket中。用户可以创建任意多个bucket。
Access Key和Secret Key: 用户注册MSS时,系统会给用户分配一对Access Key和Secret Key, 用于标识用户,用户在使用API使用MSS服务时,需要使用这两个Key。请在美团云管理控制台查询AccessKey和SecretKey。
MSS访问域名
mtmss.com
Installation
下载MSS SDK for Java包后,进入MSS SDK for Java目录下,运行"mvn install",即可完成MSS SDK for Java的安装。
新创建的MSS相关的maven项目,只需要在pom文件的下添加MSS SDK for Java依赖:
com.amazonaws
mss-java-sdk-s3
1.9.4
注意:目前MSS SDK支持的Java版本包括Java1.6,Java1.7和Java1.8。
Quick Start
创建AmazonS3Client
package com.meituan.mss.s3test;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.S3ClientOptions;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
public class AmazonS3ClientProvider {
/**
*
* 创建AmazonS3Client
*
*
* @accessKey:mss用户的access key
* secretKey:mss用户的access secret
* url:mss server hostname,一般为mtmss.com
*/
private static String accessKey = "*** accessKey ***";
private static String secretKey = "*** secretKey ***";
private static String url = "http://mtmss.com";
static AmazonS3Client s3conn;
public static AmazonS3 CreateAmazonS3Conn()
throws IOException{
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
ClientConfiguration clientConfig = new ClientConfiguration();
//clientConfig.setSignerOverride("S3SignerType");
URL ep = new URL(url);
if (ep.getProtocol().equalsIgnoreCase("http")) {
clientConfig.setProtocol(Protocol.HTTP);
} else if (ep.getProtocol().equalsIgnoreCase("https")) {
clientConfig.setProtocol(Protocol.HTTPS);
} else {
throw new IOException("Unsupported protocol");
}
String endpoint = ep.getHost();
if (ep.getPort() > 0) {
endpoint += ":" + ep.getPort();
}
S3ClientOptions s3ClientOptions = new S3ClientOptions();
// mss only support path style access.
s3ClientOptions.setPathStyleAccess(true);
s3conn = new AmazonS3Client(credentials, clientConfig);
s3conn.setS3ClientOptions(s3ClientOptions);
s3conn.setEndpoint(endpoint);
//s3conn.setSignerRegionOverride("S3SignerType");
return s3conn;
}
}
创建Bucket
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.AccessControlList;
import com.amazonaws.services.s3.model.Bucket;
import com.meituan.mss.s3test.AmazonS3ClientProvider;
public class CreateBucket {
private static String newBucketName = "mss-test-bucket";
private static AmazonS3 s3Client = AmazonS3ClientProvider.CreateAmazonS3Conn();
public void testCreateBucket_NewBucketNameMatches() {
try {
Bucket bucket = s3Client.createBucket(newBucketName);
} catch (AmazonServiceException ase) {
System.out.println("Caught an AmazonServiceException, which" +
" means your request made it " +
"to Amazon S3, but was rejected with an error response" +
" for some reason.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace) {
System.out.println("Caught an AmazonClientException, which means"+
" the client encountered " +
"an internal error while trying to " +
"communicate with S3, " +
"such as not being able to access the network.");
System.out.println("Error Message: " + ace.getMessage());
}
}
}
上传文件
import java.io.File;
import java.io.IOException;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.meituan.mss.s3test.AmazonS3ClientProvider;
public class UploadObjectSingleOperation {
private static String bucketName = "*** Provide bucket name ***";
private static String objectName = "*** objectName ***";
private static AmazonS3 s3Client = AmazonS3ClientProvider.CreateAmazonS3Conn();
public void testUploadObject() {
try {
System.out.println("Uploading a new object to S3 from a file\n");
File file = new File(uploadFileName);
s3client.putObject(new PutObjectRequest(
bucketName, objectName, file));
} catch (AmazonServiceException ase) {
System.out.println("Caught an AmazonServiceException, which " +
"means your request made it " +
"to Amazon S3, but was rejected with an error response" +
" for some reason.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace) {
System.out.println("Caught an AmazonClientException, which " +
"means the client encountered " +
"an internal error while trying to " +
"communicate with S3, " +
"such as not being able to access the network.");
System.out.println("Error Message: " + ace.getMessage());
}
}
}
下载文件
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.S3Object;
import com.meituan.mss.s3test.AmazonS3ClientProvider;
public class GetObject {
private static String bucketName = "*** provide bucket name ***";
private static String objectName = "*** objectName ***";
private static AmazonS3 s3Client = AmazonS3ClientProvider.CreateAmazonS3Conn();
public void getObject() {
try {
System.out.println("Downloading an object");
S3Object s3object = s3Client.getObject(new GetObjectRequest(
bucketName, objectName));
System.out.println("Content-Type: " +
s3object.getObjectMetadata().getContentType());
InputStream objectData = s3object.getObjectContent()
} catch (AmazonServiceException ase) {
System.out.println("Caught an AmazonServiceException, which" +
" means your request made it " +
"to Amazon S3, but was rejected with an error response" +
" for some reason.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
} catch (AmazonClientException ace) {
System.out.println("Caught an AmazonClientException, which means"+
" the client encountered " +
"an internal error while trying to " +
"communicate with S3, " +
"such as not being able to access the network.");
System.out.println("Error Message: " + ace.getMessage());
}
}
}
s3 presign
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.HttpMethod;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.meituan.mss.s3test.AmazonS3ClientProvider;
import com.meituan.mss.s3test.factory.TestS3ObjectFactory;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import com.amazonaws.services.s3.model.ResponseHeaderOverrides;
import java.io.*;
public class PreSignURL {
private static String bucketName = "*** provide bucket name ***";
private static String objectName = "*** objectName ***";
private static AmazonS3 s3Client = AmazonS3ClientProvider.CreateAmazonS3Conn();
public void presigntest() {
try {
System.out.println("Generating pre-signed URL.");
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 5; // Add 1 hour.
expiration.setTime(milliSeconds);
//generate Get Bucket presign request
GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(bucketName, "");
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);
URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
System.out.println("Pre-Signed URL = " + url.toString());
String url_str = url.toString();
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url_str);
try {
int statusCode = client.executeMethod(method);
Assert.assertEquals(statusCode, 200);
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
} catch (AmazonServiceException exception) {
System.out.println("Caught an AmazonServiceException, " +
"which means your request made it " +
"to Amazon S3, but was rejected with an error response " +
"for some reason.");
System.out.println("Error Message: " + exception.getMessage());
System.out.println("HTTP Code: " + exception.getStatusCode());
System.out.println("AWS Error Code:" + exception.getErrorCode());
System.out.println("Error Type: " + exception.getErrorType());
System.out.println("Request ID: " + exception.getRequestId());
} catch (AmazonClientException ace) {
System.out.println("Caught an AmazonClientException, " +
"which means the client encountered " +
"an internal error while trying to communicate" +
" with S3, " +
"such as not being able to access the network.");
System.out.println("Error Message: " + ace.getMessage());
}
}
}
美团 java_GitHub - meituan/mssapi_java: 美团云对象存储 Java SDK相关推荐
- 电信天翼 java_电信天翼云对象存储java实现
首先先了解电信天翼云对象存储 产品介绍您也可以通过OOS提供的SDK来调用OOS服务,开发语言目前支持Ruby..NET.PHP.Java.Python 官方的开发文档还是13年版本的,demo也是各 ...
- 电信天翼云对象存储java实现
首先先了解电信天翼云对象存储 产品介绍 对象存储(Object-Oriented Storage, OOS)是中国电信为客户提供的一种海量.弹性.廉价.高可用的存储服务.客户只需花极少 ...
- 天翼云对象存储Java对接(经典版 Ⅱ型)
前言: 1.此教程只针对 经典版 Ⅱ型 2.前两天甲方让用天翼云做对象存储,我一脸懵逼,根本没听过这玩意,之前就用过阿里云,和华为云,而且喵的他们的接口文档一点用都没有,后来我给他们客服打电话,他们安 ...
- 腾讯云 对象存储Java文件上传 学习资料整理
# 初始化AmazonS3 前置要求: 获取密钥对:secretID:secretKey 有效Endpoint:nos-eastchina1.126.net 安装SDK --> 即Maven依赖 ...
- 阿里云 对象存储java实现OSS文件上传及获取URL
本人已尝试上传成功 maven加载的jar包 pom配置 <dependency><groupId>com.aliyun.oss</groupId><arti ...
- 腾讯云对象存储java代码演示
引入maven <dependency><groupId>com.qcloud</groupId><artifactId>cos_api</art ...
- 如何结合PICgo,Typora以及阿里云对象存储OSS搭建自己图床写博客
如何利用阿里云对象存储OSS搭建自己图床写博客 1.购买阿里云 购买链接 登录阿里云–>控制台–>对象存储OSS–购买 购买的时候可以选择按月付费一月一元的,也可以年费9元的,40GB作为 ...
- 阿里云对象存储OSS之通过URL形式进行图片处理
什么是OSS 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.它具有与平台无关的RESTful API接口,能够 ...
- oss客户端工具_干货 | 基于Go SDK操作京东云对象存储OSS的入门指南
前言 本文介绍如何使用Go语言对京东云对象存储OSS进行基本的操作,帮助客户快速通过Go SDK接入京东云对象存储,提高应用开发的效率. 在实际操作之前,我们先看一下京东云OSS的API接口支持范围和 ...
最新文章
- python保存的是什么类型文件_python-----基本的数据类型和文件操作
- 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X
- Kafka设计解析(八)- Exactly Once语义与事务机制原理
- java基础教程哪个好,面试必会
- 面向对象方法的优势简化软件开发的过程_Java面试题说一说你的对面向过程和面向对象的理解...
- 寻找设计独特标识LOGO的灵感?可编辑模板帮你轻松解决!
- idea搭建java openCV环境
- C语言相反次序重新排序
- iOS开发中view controller设置问题
- java数组使用实验报告_Java实验报告二数组.doc
- Allegro学习笔记:Allegro快速入门之一--查看BRD Layout
- 一款黑科技神器:uTools
- Android苹方圆三合一字体,橘色主题-圆形图标 内置苹方+googlesans字体 透明文件夹...
- Apache Zeppelin安装和启动
- antv g6多次渲染问题解决
- Redis单线程和多线程
- 宁强天津中学2021高考成绩查询,宁强县天津高级中学教务信息网
- java模拟器环境_Win10 + Appium+夜神/MuMu模拟器环境搭建
- 中年程序员失业的3条退路!
- HTML常用标签 选择器
热门文章
- 真的,你不了解石家庄。
- Word制作表格常用操作
- 集总参数电路抽象---线性电路叠加定理理解
- CSRF, XSS攻击
- Tensorflow使用LSTM实现中文文本分类(1)
- MAC OS 下QQ音乐下载存放的位置
- VUE vue Expected Object, Function, got String with value “xxx;
- Verilog 实现千兆网UDP协议 基于88E1111--数据接收
- 使用Office Tool Plus安装office、visio、project等--很实用
- cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等