阿里雲OSS並測試上傳


 什么是對象存儲 OSS

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

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

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

相關概念

  • 存儲類型(Storage Class)

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

  • 存儲空間(Bucket)

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

  • 對象/文件(Object)

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

  • 地域(Region)

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

  • 訪問域名(Endpoint)

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

  • 訪問密鑰(AccessKey)

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

相關服務

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

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

  • 圖片處理(IMG):對存儲在 OSS 上的圖片進行格式轉換、縮放、裁剪、旋轉、添加水印等各種操作。請參見快速使用 OSS 圖片處理服務。
  • 雲服務器(ECS):提供簡單高效、處理能力可彈性伸縮的雲端計算服務。請參見 ECS 產品詳情頁面。
  • 內容分發網絡(CDN):將 OSS 資源緩存到各區域的邊緣節點,利用邊緣節點緩存的數據,提升同一個文件,被邊緣節點客戶大量重復下載的體驗。請參見 CDN 產品詳情頁面。
  • E-MapReduce:構建於 ECS 上的大數據處理的系統解決方案,基於開源的 Apache Hadoop 和 Apache Spark,方便您分析和處理自己的數據。請參見 E-MapReduce 產品詳情頁面。
  • 媒體處理:將存儲於 OSS 的音視頻轉碼成適合在 PC、TV 以及移動終端上播放的格式。並基於海量數據深度學習,對音視頻的內容、文字、語音、場景多模態分析,實現智能審核、內容理解、智能編輯。請參見媒體處理產品詳情頁面。

管理 OSS

  • 通過 OSS 控制台管理 OSS

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

  • 通過 API 或 SDK 管理 OSS

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

  • 通過工具管理 OSS

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

 基本概念

存儲空間(Bucket)

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

  • 同一個存儲空間的內部是扁平的,沒有文件系統的目錄等概念,所有的對象都直接隸屬於其對應的存儲空間。
  • 每個用戶可以擁有多個存儲空間。
  • 存儲空間的名稱在 OSS 范圍內必須是全局唯一的,一旦創建之后無法修改名稱。
  • 存儲空間內部的對象數目沒有限制。

存儲空間的命名規范如下:

  • 只能包括小寫字母、數字和短橫線(-)。
  • 必須以小寫字母或者數字開頭和結尾。
  • 長度必須在 3–63 字節之間。

對象/文件(Object)

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

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

對象的命名規范如下:

  • 使用 UTF-8 編碼。
  • 長度必須在 1–1023 字節之間。
  • 不能以正斜線(/)或者反斜線(\)開頭。
     
    說明 對象名稱需要區分大小寫。如無特殊說明,本文檔中的對象、文件稱謂等同於 Object。

Region(地域)

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

Region 是在創建 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 對稱加密的方法來驗證某個請求的發送者身份。AccessKeyId 用於標識用戶;AccessKeySecret 是用戶用於加密簽名字符串和 OSS 用來驗證簽名字符串的密鑰,必須保密。對於 OSS 來說,AccessKey 的來源有:

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

創建OSS

 

 

 

 創建子用戶

 

 原生SDK上傳

    @Test
    void upload() {
        // Endpoint以杭州為例,其它Region請按實際情況填寫。
        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。
        String accessKeyId = "LTAI4FzQD4543kCervA5vy";
        String accessKeySecret = "wmCFWidrtvJK08ZvAIukf0OexyGRZ";

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

        // 創建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 {
        // 創建PutObjectRequest對象。
        InputStream fileInputStream = new FileInputStream("C:\\Users\\asus\\Desktop\\榮哥v1.docx");
        ossClient.putObject("gulimall-dalianpai-oss", "榮哥v1.docx",fileInputStream);
        ossClient.shutdown();
        System.out.println("上傳成功");
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM