OSS網域名稱構成規則

針對OSS的網路請求,除了GetService這個API以外,其他所有請求的網域名稱都是帶有指定Bucket資訊的第三層網域名組成的。

訪問網域名稱規則:BucketName.Endpoint。其中Endpoint表示OSS對外服務的訪問網域名稱。OSS以HTTP RESTful API的形式對外提供服務,當訪問不同的Region的時候,需要不同的訪問網域名稱。Endpoint分內網和外網訪問網域名稱。例如華東1 Region的外網Endpoint是oss-cn-hangzhou.aliyuncs.com,內網Endpoint是oss-cn-hangzhou-internal.aliyuncs.com,Region和Endpoint對照表請參考訪問網域名稱和資料中心

如何通過外網訪問OSS服務

這裡的外網指的是互連網。通過外網訪問產生的流入流量(寫)是免費的,流出流量(讀)是收費的。詳情請閱讀OSS服務價格頁

外網訪問OSS有如下兩種方式:

  • 訪問方式1:在訪問的時候以URL的形式來表示OSS的資源的。OSS的URL構成如下。
    <Schema>://<Bucket>.<外網Endpoint>/<Object> 第三層網域名訪問方式
      Schema:值為HTTP或者為HTTPS
      Bucket:用戶的OSS儲存空間
      Endpoint:用戶的Bucket所在資料中心的訪問網域名稱,這裡您需要填寫外網Endpoint
      Object:用戶上傳在OSS上的檔案

    樣本:如您在Region為華東1,Bucketname為abc,Object為myfile/aaa.txt,那麼您的外網訪問地址為:

    abc.oss-cn-hangzhou.aliyuncs.com/myfile/aaa.txt

    您還可以直接將Object的URL連結放入HTML中使用,如下所示:

    <img class="img-responsive"src="https://abc.oss-cn-hangzhou.aliyuncs.com/mypng/aaa.png" />
  • 訪問方式2: 通過OSS SDK配置外網訪問網域名稱。

    OSS SDK會幫助用戶對每一個操作拼接訪問網域名稱。但用戶在對不同區域的Bucket進行操作的時候需要設定不同的Endpoint。

    以Java SDK為例,準備對華東1節點的Bucket進行操作時,需要在對類實例化時設定Endpoint:

    String accessKeyId = "<key>";
      String accessKeySecret = "<secret>";
      String endpoint = "oss-cn-hangzhou.aliyuncs.com";
      OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);

如何通過內網訪問OSS服務

這裡的內網指的是阿里雲產品之間的內網通訊網路,例如您通過ECS雲端服務器訪問OSS服務。內網產生的流入流出流量均是免費的。

內網訪問OSS有如下兩種方式:

  • 訪問方式1:在訪問的時候以URL的形式來表示OSS的資源的。OSS的URL構成如下。
    <Schema>://<Bucket>.<內網Endpoint>/<Object> 第三層網域名訪問方式
      Schema:值為HTTP或者為HTTPS
      Bucket:用戶的OSS儲存空間
      Endpoint:用戶的Bucket所在資料中心的訪問網域名稱,這裡您需要填寫內網Endpoint。
      Object:用戶上傳在OSS上的檔案
    樣本:如您在Region為華東1,Bucketname為abc ,Object為myfile/aaa.txt,那麼您的內網訪問地址為:
    abc.oss-cn-hangzhou-internal.aliyuncs.com/myfile/aaa.txt
  • 訪問方式2:通過ECS使用OSS SDK配置內網訪問網域名稱。
    例如在ECS雲端服務器上的JAVA SDK的例子中配置內網Endpoint進行簡單修改:
    String accessKeyId = "<key>";
      String accessKeySecret = "<secret>";
      String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";
      OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    说明
    在同一個Region的ECS和OSS之間內網是互通的,不同Region的ECS和OSS之間內網不互通。

    例如您購買了華北2(cn-beijing)的ECS,其OSS有兩個Bucket:

    • 其中一個Bucket叫beijingres,Region為華北2,那麼在華北2的ECS中可以使用beijingres.oss-cn-beijing-internal.aliyuncs.com去訪問 beijingres 的資源。

    • 另外一個Bucket叫qingdaores,Region為華北1,那麼在華北2的ECS用內網地址qingdaores.oss-cn-qingdao-internal.aliyuncs.com是無法訪問OSS的,必須使用外網地址qingdaores.oss-cn-qingdao.aliyuncs.com