阿里云OSS并測試上傳

來源: CSDN
作者:dalianpai
時間:2021-01-05
17048
阿里云對象存儲服務(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務。其數據設計持久性不低于 99.9999999999%(12 個 9),服務設計可用性(或業(yè)務連續(xù)性)不低于 99.995%。

什么是對象存儲 OSS

阿里云對象存儲服務(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務。其數據設計持久性不低于 99.9999999999%(12 個 9),服務設計可用性(或業(yè)務連續(xù)性)不低于 99.995%。

OSS 具有與平臺無關的 RESTful API 接口,您可以在任何應用、任何時間、任何地點存儲和訪問任意類型的數據。

您可以使用阿里云提供的 API、SDK 接口或者 OSS 遷移工具輕松地將海量數據移入或移出阿里云 OSS。數據存儲到阿里云 OSS 以后,您可以選擇標準存儲(Standard)作為移動應用、大型網站、圖片分享或熱點音視頻的主要存儲方式,也可以選擇成本更低、存儲期限更長的低頻訪問存儲(Infrequent Access)和歸檔存儲(Archive)作為不經常訪問數據的存儲方式。

相關概念

存儲類型(Storage Class)

OSS 提供標準、低頻訪問、歸檔三種存儲類型,全面覆蓋從熱到冷的各種數據存儲場景。其中標準存儲類型提供高可靠、高可用、高性能的對象存儲服務,能夠支持頻繁的數據訪問;低頻訪問存儲類型適合長期保存不經常訪問的數據(平均每月訪問頻率 1 到 2 次),存儲單價低于標準類型;歸檔存儲類型適合需要長期保存(建議半年以上)的歸檔數據,在三種存儲類型中單價最低。詳情請參見存儲類型介紹。

存儲空間(Bucket)

存儲空間是您用于存儲對象(Object)的容器,所有的對象都必須隸屬于某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權限、存儲類型等。您可以根據實際需求,創(chuàng)建不同類型的存儲空間來存儲不同的數據。創(chuàng)建存儲空間請參見創(chuàng)建存儲空間。

對象/文件(Object)

對象是 OSS 存儲數據的基本單元,也被稱為 OSS 的文件。對象由元信息(Object Meta)、用戶數據(Data)和文件名(Key)組成。對象由存儲空間內部唯一的 Key 來標識。對象元信息是一組鍵值對,表示了對象的一些屬性,例如最后修改時間、大小等信息,同時您也可以在元信息中存儲一些自定義的信息。

地域(Region)

地域表示 OSS 的數據中心所在物理位置。您可以根據費用、請求來源等選擇合適的地域創(chuàng)建 Bucket。詳情請參見 OSS 已開通的Region。

訪問域名(Endpoint)

Endpoint 表示 OSS 對外服務的訪問域名。OSS 以 HTTP RESTful API 的形式對外提供服務,當訪問不同地域的時候,需要不同的域名。通過內網和外網訪問同一個地域所需要的域名也是不同的。具體的內容請參見各個 Region 對應的 Endpoint。

訪問密鑰(AccessKey)

AccessKey(簡稱 AK)指的是訪問身份驗證中用到的 AccessKeyId 和 AccessKeySecret。OSS 通過使用 AccessKeyId 和 AccessKeySecret 對稱加密的方法來驗證某個請求的發(fā)送者身份。AccessKeyId 用于標識用戶;AccessKeySecret 是用戶用于加密簽名字符串和 OSS 用來驗證簽名字符串的密鑰,必須保密。獲取 AccessKey 的方法請參見創(chuàng)建 AccessKey。

相關服務

您把數據存儲到 OSS 以后,就可以使用阿里云提供的其他產品和服務對其進行相關操作。

以下是您會經常使用到的阿里云產品和服務:

圖片處理(IMG):對存儲在 OSS 上的圖片進行格式轉換、縮放、裁剪、旋轉、添加水印等各種操作。請參見快速使用 OSS 圖片處理服務。

云服務器(ECS):提供簡單高效、處理能力可彈性伸縮的云端計算服務。請參見 ECS 產品詳情頁面。

內容分發(fā)網絡(CDN):將 OSS 資源緩存到各區(qū)域的邊緣節(jié)點,利用邊緣節(jié)點緩存的數據,提升同一個文件,被邊緣節(jié)點客戶大量重復下載的體驗。請參見 CDN 產品詳情頁面。

E-MapReduce:構建于 ECS 上的大數據處理的系統(tǒng)解決方案,基于開源的 Apache Hadoop 和 Apache Spark,方便您分析和處理自己的數據。請參見 E-MapReduce 產品詳情頁面。

媒體處理:將存儲于 OSS 的音視頻轉碼成適合在 PC、TV 以及移動終端上播放的格式。并基于海量數據深度學習,對音視頻的內容、文字、語音、場景多模態(tài)分析,實現智能審核、內容理解、智能編輯。請參見媒體處理產品詳情頁面。

管理 OSS

通過 OSS 控制臺管理 OSS

OSS 提供了 Web 服務頁面,您可以登錄 OSS 管理控制臺,管理您的 OSS。詳情請參見控制臺用戶指南。

通過 API 或 SDK 管理 OSS

OSS 提供 RESTful API 和各種語言的 SDK 開發(fā)包,方便您快速進行二次開發(fā)。詳情請參見 OSS API 參考和 OSS SDK 參考。

通過工具管理 OSS

OSS 提供各類型的管理工具,您可以通過工具管理您的 OSS。詳情請參見 OSS 常用工具。

 基本概念

存儲空間(Bucket)

存儲空間是用戶用于存儲對象(Object)的容器,所有的對象都必須隸屬于某個存儲空間。存儲空間具有各種配置屬性,包括地域、訪問權限、存儲類型等。用戶可以根據實際需求,創(chuàng)建不同類型的存儲空間來存儲不同的數據。

同一個存儲空間的內部是扁平的,沒有文件系統(tǒng)的目錄等概念,所有的對象都直接隸屬于其對應的存儲空間。

每個用戶可以擁有多個存儲空間。

存儲空間的名稱在 OSS 范圍內必須是全局唯一的,一旦創(chuàng)建之后無法修改名稱。

存儲空間內部的對象數目沒有限制。

存儲空間的命名規(guī)范如下:

只能包括小寫字母、數字和短橫線(-)。

必須以小寫字母或者數字開頭和結尾。

長度必須在 3–63 字節(jié)之間。

對象/文件(Object)

對象是 OSS 存儲數據的基本單元,也被稱為 OSS 的文件。對象由元信息(Object Meta),用戶數據(Data)和文件名(Key)組成。對象由存儲空間內部唯一的 Key 來標識。對象元信息是一組鍵值對,表示了對象的一些屬性,比如最后修改時間、大小等信息,同時用戶也可以在元信息中存儲一些自定義的信息。

對象的生命周期是從上傳成功到被刪除為止。在整個生命周期內,只有通過追加上傳的 Object 可以繼續(xù)通過追加上傳寫入數據,其他上傳方式上傳的 Object 內容無法編輯,您可以通過重復上傳同名的對象來覆蓋之前的對象。

對象的命名規(guī)范如下:

使用 UTF-8 編碼。

長度必須在 1–1023 字節(jié)之間。

不能以正斜線(/)或者反斜線(\)開頭。

說明 對象名稱需要區(qū)分大小寫。如無特殊說明,本文檔中的對象、文件稱謂等同于 Object。

Region(地域)

Region 表示 OSS 的數據中心所在物理位置。用戶可以根據費用、請求來源等選擇合適的地域創(chuàng)建 Bucket。一般來說,距離用戶更近的 Region 訪問速度更快。詳情請查看 OSS 已經開通的 Region。

Region 是在創(chuàng)建 Bucket 的時候指定的,一旦指定之后就不允許更改。該 Bucket 下所有的 Object 都存儲在對應的數據中心,目前不支持 Object 級別的 Region 設置。

Endpoint(訪問域名)

Endpoint 表示 OSS 對外服務的訪問域名。OSS 以 HTTP RESTful API 的形式對外提供服務,當訪問不同的 Region 的時候,需要不同的域名。通過內網和外網訪問同一個 Region 所需要的 Endpoint 也是不同的。例如杭州 Region 的外網 Endpoint 是 oss-cn-hangzhou.aliyuncs.com,內網 Endpoint 是 oss-cn-hangzhou-internal.aliyuncs.com。具體的內容請參見各個 Region 對應的 Endpoint。

AccessKey(訪問密鑰)

AccessKey(簡稱 AK)指的是訪問身份驗證中用到的 AccessKeyId 和 AccessKeySecret。OSS 通過使用 AccessKeyId 和 AccessKeySecret 對稱加密的方法來驗證某個請求的發(fā)送者身份。AccessKeyId 用于標識用戶;AccessKeySecret 是用戶用于加密簽名字符串和 OSS 用來驗證簽名字符串的密鑰,必須保密。對于 OSS 來說,AccessKey 的來源有:

Bucket 的擁有者申請的 AccessKey。

被 Bucket 的擁有者通過 RAM 授權給第三方請求者的 AccessKey。

被 Bucket 的擁有者通過 STS 授權給第三方請求者的 AccessKey。

創(chuàng)建OSS

ia_3600000000.png

ia_3600000001.png

ia_3600000002.png

 創(chuàng)建子用戶

ia_3600000003.png

 原生SDK上傳

    @Test

    void upload() {

        // Endpoint以杭州為例,其它Region請按實際情況填寫。

        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";

        // 阿里云主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創(chuàng)建并使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創(chuàng)建RAM賬號。

        String accessKeyId = "LTAI4FzQD4543kCervA5vy";

        String accessKeySecret = "wmCFWidrtvJK08ZvAIukf0OexyGRZ";

        // 創(chuàng)建OSSClient實例。

        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 創(chuàng)建PutObjectRequest對象。

        String content = "C:\\Users\\asus\\Desktop\\node-disk-manager-amd64.tar";

        // <yourObjectName>表示上傳文件到OSS時需要指定包含文件后綴在內的完整路徑,例如abc/efg/123.jpg。

        PutObjectRequest putObjectRequest = new PutObjectRequest("gulimall-dalianpai", "k8s.tar", new ByteArrayInputStream(content.getBytes()));

        // 如果需要上傳時設置存儲類型與訪問權限,請參考以下示例代碼。

        // ObjectMetadata metadata = new ObjectMetadata();

        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());

        // metadata.setObjectAcl(CannedAccessControlList.Private);

        // putObjectRequest.setMetadata(metadata);

        // 上傳字符串。

        ossClient.putObject(putObjectRequest);

        // 關閉OSSClient。

        ossClient.shutdown();

    }  

 與SpringCloud整合上傳,注意這個官網API,我在上傳的時候,流會被截斷,上傳的不完整。

spring:

  application:

    name: gulimall-product

  cloud:

    nacos:

      discovery:

        server-addr: 192.168.1.118:8848

      config:

        server-addr: 192.168.1.118:8848

        namespace: 1a99a442-e66b-4fa6-8da7-e08cab3727de

        group: dev

        file-extension: yaml

    alicloud:

      access-key: LTAI4Fz32kWpSNkCervA5vy

      secret-key: wmCFWidt8YvJK32vAIukf0OexyGRZ

      oss:

        endpoint: oss-cn-beijing.aliyuncs.com

    @Test

    void upload2() throws FileNotFoundException {

        // 創(chuàng)建PutObjectRequest對象。

        InputStream fileInputStream = new FileInputStream("C:\\Users\\asus\\Desktop\\榮哥v1.docx");

        ossClient.putObject("gulimall-dalianpai-oss", "榮哥v1.docx",fileInputStream);

        ossClient.shutdown();

        System.out.println("上傳成功");

    }

ia_3600000004.png

版權聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/qq_29860591/article/details/106417565

立即登錄,閱讀全文
版權說明:
本文內容來自于CSDN,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家