介绍下阿里云的OSS

一、背景介绍

虽然我目前做的是一个博客的小网站,但是以后无论是自己的博客还是实际的项目,都可以用图片来提供外链,方便管理,如果你的网站访问量很高啊,一天几十万几百万啊,这时候你考虑的就不是服务器空间够不够大,而是惊人的并发数啊,光是请求html文件(或其他)的链接就处理不过来了,哪还有多余的资源去读取图片啊,索性就把图片存另一个服务器吧,给主服务器减轻压力啊,而且一般用图床的,都是图片之类的静态文件非常多,把图片存储到第三方CDN,除了加快图片访问速速,还可以降低你服务器的存储压力,后续网站迁移扩容就不受影响了。于是创建图床的想法诞生了。接下来讲解一下博客中用的图床——阿里云对象存储(Object Storage Service,简称OSS),虽然目前大家用的比较多的是七牛云、又拍云之类的,但是因为我个人原因我还是选择了阿里云.

好了,废话不多说,开始进入正题!

二、阿里云 OSS 基本使用?

1、快速使用

  • Step1:开通 OSS 服务。
  • Step2:创建一个 存储空间(bucket)。
  • Step3:上传文件。
  • Step4:下载文件。
  • Step5:删除文件。
  • Step6;删除存储空间。

1、快速使用

  • 可以使用命令行管理工具管理(ossutil)。

  • 可以使用图形界面工具管理(ossbrowser)。

  • 可以使用 API 、SDK 管理。(比如 Java SDK)。

    【API 与 SDK 区别:】
        API:Application Programming Interface,即应用程序接口。
        SDK:Software Development Kit,即软件开发工具包。
    
    简单的理解:
        API 用于访问一个函数。
        SDK 是第三方提供的工具包,里面有各种函数,即各种 API。
    

2、开通 OSS 服务

(1)Step1:去官网开通(先注册一个阿里云账号,再去开通对象存储 OSS 服务)。

14.png

(2)Step2:勾选协议,并点击开通。

15.png

(3)Step3:开通成功,跳转到控制台。

1.png

3、创建一个存储空间(bucket)

(1)Step1:在控制台界面创建一个存储空间。

2.png

(2)Step2:填写 存储空间相关信息。

3.png

ps:这里选择私有,然后创建目录的时候文件ACL选择继承Bucket通过openAPI上传文件(比如图片)后网页去访问图片地址的时候会不显示,会报AccessDenied You have no right to access this object because of bucket acl错误,所以你可以这里选择私有,然后在目录上选择公共读写的权限或者干脆全部选择公共读写权限

4、上传文件

(1)Step1:进入文件管理页面。

4.png

(2)Step2:可以新建目录、上传文件。

5.png

(3)Step3:上传文件。

6.png

5、下载文件

(1)Step1:打开文件详情页,或直接打开更多菜单栏直接下载。

(2)Step2:直接下载,或者复制 URL下载。

7.png

6、删除文件、删除存储空间

(1)删除文件。

8.png

(2)删除存储空间。

9.png

三、使用 Java SDK 操作 OSS(重点)

1、首先需要创建 Accesskey

(1)为什么使用AccessKey ?

  AccessKey 就相当于一个账号和密码,但其使用场景不同,其等同于一个子账号。 比如:

你需要一个账号用来登陆 阿里云,此时的用户名、密码可用于访问 OSS,但是如果你在程序中使用这个账号去管理 OSS,那么容易造成你的账号泄露,不安全。

AccessKey 就相当于一个子账号,其专门用来访问 OSS或者其他服务,不能用于登陆阿里云,这样就可以避免阿里云账号泄露。

(2)创建 Accesskey

Step1:进入控制台

16.png

Step2:点击头像,选择 Accesskey 管理。

10.png

Step3:选择子用户 Accesskey

17.png

Step4:进入 RAM 访问控制后,选择用户,创建用户。

18.png

Step5:填写相关信息,需要验证手机号。

11.png

注意
创建成功后,查看AccessKey ID和AccessKey Secret。记得一定要单击下载CSV文件,下载AccessKey信息。或者单击复制,复制AccessKey信息。
因为RAM用户的AccessKey Secret只在创建时显示,不提供查询,要妥善保管。
若AccessKey泄露或丢失,则需要创建新的AccessKey,最多允许为每个RAM用户创建2个AccessKey。
[参考地址]https://help.aliyun.com/document_detail/38738.html

Step6:修改权限。

12.png

2、使用 Java SDK 访问 OSS(比如上传文件)

【参考文档操作:】 https://help.aliyun.com/document_detail/32008.html?spm=a2c4g.11186623.6.767.6fafc06dbZUvg7

(1)创建一个 SpringBoot项目,采用 maven 方式引入SDK。

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.8.0</version>
</dependency>

(2)使用文件流方式上传图片。

  此处未与前端代码结合,直接使用本地指定文件的方式进行测试。

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

@SpringBootTest
class TestOssApplicationTests {

    @Test
    void testUpdateOss() {
        // Endpoint以上海为例,其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-shanghai.aliyuncs.com";
        // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 			  	https://ram.console.aliyun.com 创建。 
        String accessKeyId = "LTAI4GFaU9tbzYLLDBY2Neqt";
        String accessKeySecret = "ynSYOKMnRFWd79u9t6VDNJrbrXNaeQ";

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

        // 上传文件流。
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream("/Users/images/111.jpg");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ossClient.putObject("Bucket名称", "0c9f3a09a7755c0b8605795bbf1d69de.png", inputStream);

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

}

可以看到图片已经上传成功了

13.png

至此,我的博客的图片已经存储在阿里云OSS上了

ok,今天就先到这里,Bye


已有 0 条评论

    感谢参与互动!