阿里云OOS储存

OOS:阿里云对象存储OOS是一款海量、安全、低成本、高可靠的云存储服务,提供99.99%的数据持久性和可用性,多种存储类型供选择,全面优化存储成本,非常适合存储非结构化数据,例如视频,图形,日志,文本文件以及各种app应用,多终端同步软件,网盘下载站的文件等,单个文件的大小从1字节到18.8TB,可以存储的个数无限制。

1、注册登录,https://www.aliyun.com/https://www.aliyun.com/

2、登录成功后(最好支付宝登陆)将鼠标悬停在主界面导航栏中的产品区域位置并进入对象存储OSS;

3、开通云存储,实名认证,开通OOS。

4、点击管理控制台进入,进入对象存储主界面后会看到概览中有一项Bucket列表,这就是用于创建云存储文件夹的地方;根据下图的流程会进入到一个创建Bucket添加信息栏中;

【Bucket名称】:用户自定义名称 【地域】:自定义选择 【存储类型】:标准存储 【同城冗余存储】:关闭「收费」 【版本控制】:不开通「收费」 【读写权限】:公共读 【服务端加密方式】:无 【实时日志查询】:不开通「收费」 【定时备份】:不开通「收费」

 5、进入设置成功的存储空间内需要保存Bucket 域名;在oss主界面中进入Access Key并查看保存,后期会在xml配置中使用,注意Bucket地址和Access Key。

 6、完成到这一步就说明阿里云OSS已经设置好了,接下来就是编写后端的阶段了!

后端操作:

pom文件引入依赖:

 <!--阿里云oss依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
        </dependency>

 application.properties文件中,添加存放云存储的Bucket地址及AccessKey配置信息

# 端口号
server.port=8001
spring.application.name=yun-upload

# 环境地址
spring.profiles.active=dev

# 阿里云云存储OSS配置信息
# Bucket地址
aliyun.oss.file.endpoint=自定义
# Access Key
aliyun.oss.file.keyid=自定义
aliyun.oss.file.keysecret=自定义
# Bucket名称
aliyun.oss.file.bucketname=自定义

utils类:用于读取xml配置信息,将配置信息转换成工具类进行调用;

package com.csdn.oss.utils;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

//当项目已启动,spring接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean {

    //读取配置文件内容
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.file.keyid}")
    private String keyId;

    @Value("${aliyun.oss.file.keysecret}")
    private String keySecret;

    @Value("${aliyun.oss.file.bucketname}")
    private String bucketName;

    //定义公开静态常量
    public static String END_POIND;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        END_POIND = endpoint;
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}

service上传接口:

package com.csdn.oss.service;

import org.springframework.web.multipart.MultipartFile;

public interface OssService {
    //上传头像到oss
    String uploadFileAvatar(MultipartFile file);
}

serviceImpl:用于获取上传文件进行判断处理;

package com.csdn.oss.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.csdn.oss.service.OssService;
import com.csdn.oss.utils.ConstantPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.UUID;

@Service
public class OssServiceImpl implements OssService {

    //上传头像到oss
    @Override
    public String uploadFileAvatar(MultipartFile file) {
        // 工具类获取值
        String endpoint = ConstantPropertiesUtils.END_POIND;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;

        try {
            // 创建OSS实例。
                       OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

            //获取上传文件输入流
            InputStream inputStream = file.getInputStream();
            //获取文件名称
            String fileName = file.getOriginalFilename();

            //1 在文件名称里面添加随机唯一的值
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            // yuy76t5rew01.jpg
            fileName = uuid+fileName;

            //2 把文件按照日期进行分类
            //获取当前日期
            //   2019/11/12
            String datePath = new DateTime().toString("yyyy/MM/dd");
            //拼接
            //  2019/11/12/ewtqr313401.jpg
            fileName = datePath+"/"+fileName;

            //调用oss方法实现上传
            //第一个参数  Bucket名称
            //第二个参数  上传到oss文件路径和文件名称   aa/bb/1.jpg
            //第三个参数  上传文件输入流
            ossClient.putObject(bucketName,fileName , inputStream);

            // 关闭OSSClient。
            ossClient.shutdown();

            //把上传之后文件路径返回
            //需要把上传到阿里云oss路径手动拼接出来
            //  https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpg
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            return url;
        }catch(Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

controller:将上传返回到前端

package com.csdn.oss.controller;

import com.csdn.commonutils.R;
import com.csdn.oss.service.OssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController {

    @Autowired
    private OssService ossService;

    //上传头像的方法
    @PostMapping
    public R uploadOssFile(MultipartFile file) {
        //获取上传文件  MultipartFile
        //返回上传到oss的路径
        String url = ossService.uploadFileAvatar(file);
        return R.ok().data("url",url);
    }
}

测试运行代码:

打开swagger-ui进行测试:swagger中上传文件,然后去OOS上查看 

阿里云OOS安全问题:阿里云对象存储OSS原生DDoS防护能力-高防OSS功能

        高防OSS,顾名思义,就是原生具有高防能力的OSS实例,高防OSS是针对OSSbucket在遭受大流量DDoS攻击后导致服务不可用的情况下,推出的付费服务,用户可通过配置高防OSS,将针对相关Bucket的攻击流量引流到高防IP,确保源Bucket的稳定可靠。

随着企业数字化转型的不断深入,更多的业务上云,更大量的业务数据产生和使用,为了更好更优的提升服务质量。更多的行业采用内容即服务的架构,存储数据流直接面向用户和终端,在这样的大背景下,存储平台的可用性至关重要。与此同时,DDoS攻击是近年来对企业业务危害最大的攻击手段之一。当企业遭受DDoS攻击时,可能会导致业务中断,进而导致企业的形象受损、客户流失、收益受损等,严重影响企业业务的正常运营。为此,OSS深度集成阿里云DDoS高防产品,提供最高T级DDoS防护能力、百万QPS防护、秒级攻击切换能力,可有效抵御SYNFlood、ACKFlood、ICMPFlood、UDPFlood、NTPFlood、SSDPFlood、DNSFlood、HTTPFlood等攻击。非常适用于业务经常遭恶意攻击影响服务质量的场景,实现安全防护。高防OSS作为OSS产品的一个功能,构建于OSS平台之上,提供一站式的OSS安全(防攻击)能力,旨在为用户云存储业务提供原生“安全防护”服务。用户在开通高防OSS后,在用户Bucket未受到攻击时,OSS标准域名会被解析到原生防护IP上,维持正常的网络状态,确保业务的低时延;而当用户Bucket受到攻击时,相关的访问流量都将优先经过高防机房,恶意攻击流量将在高防流量清洗中心进行清洗过滤,正常的访问流量通过端口协议转发的方式返回给OSS服务器,从而保障用户在受到攻击时能正常访问OSS。

1)部署简便、方便易用、无感知(原生+高防双重防护)

用户只需要在OSS控制台上进行简易的配置,就能享受DDoS防护能力。加入防护后,在没有攻击的时间段独享云原生防护实例,维持正常状态的网络性能,确保业务无额外时延;在受到攻击时,OSS会自动将处于防护状态下的bucket通过高防资源池进行流量清洗,从而达到自动切换的效果,保持网络服务可靠性。

2)T级防御能力

基于阿里云安全产品的DDoS高防能力,可以提供高达T级的防护能力,同时具备完善的四七层防御能力。在流量清洗技术方面,分别针对网络流量型攻击和资源耗尽型DDoS攻击,通过自动优化防护算法和深度学习业务流量基线,达到精准识别攻击IP并自动过滤清洗的目的。

3)DDoS防护引擎成熟度高

从应用与实践来看,阿里云高防引擎已经有上万企业用户在使用,同时也经受了双十一、世界杯直播等极限场景考验,积累了丰富的防护经验和大量的资源储备,应用广泛,可以确保为用户的业务保障极致的防攻击能力。从架构上老看,DDoS防护引擎采用高可用网络防护集群,避免单点故障和冗余,且处理性能支持弹性扩展。全自动检测和攻击策略匹配,提供实时防护,清洗服务可用性达99.99%。

猜你喜欢

转载自blog.csdn.net/a154555/article/details/127345213