全部產品
Search
文件中心

Object Storage Service:ECS執行個體通過OSS內網地址訪問OSS資源

更新時間:Jun 19, 2024

當您通過OSS內網地址訪問OSS資源時,不收取流量費用。本文介紹ECS執行個體如何通過OSS內網地址訪問OSS資源。

通過OSS內網地址訪問OSS資源有以下兩種方式:

  • 與OSS同地區ECS執行個體可以直接通過內網訪問有許可權的OSS資源。

  • 與OSS不同地區的ECS執行個體或公網使用者可通過配置ECS反向 Proxy,間接實現通過OSS內網地址訪問OSS資源。

擷取OSS內網地址

  • 通過OSS控制台擷取

    1. 登入OSS管理主控台

    2. 單擊Bucket列表,然後單擊目標Bucket名稱。

    3. 在左側導覽列,單擊概覽

    4. 訪問連接埠地區,查看Bucket的Endpoint和Bucket網域名稱。訪問連接埠

  • 通過固定格式擷取

    OSS的訪問地址為固定格式:BucketName.Endpoint。其中,BucketName為您的儲存空間名稱,Endpoint為儲存空間所在的地區對應的訪問網域名稱。詳情請參見OSS訪問網域名稱使用規則

同地區ECS執行個體訪問OSS資源

與OSS同地區的ECS執行個體可以通過以下方式使用內網訪問OSS資源:

  • 通過URL直接存取OSS資源

    您可以直接使用OSS資源的內網地址訪問有許可權的OSS資源。例如,杭州地區某Bucket名為test,根目錄下有個Object名為1.jpg,處於公用讀取狀態。此時,杭州地區的ECS執行個體均可以使用http://test.oss-cn-hangzhou-internal.aliyuncs.com/1.jpg訪問此Object。因此,您可以將OSS資源的訪問URL嵌入到您的網站中,提供給同地區的ECS使用者或已通過專線接入到與OSS同地區內網的使用者訪問。

    警告

    為了您的資料安全,不建議您將OSS資源設定為公用讀取或公用讀寫,您可以通過Bucket Policy授權給指定使用者訪問您的資源。

  • 通過ossbrowser訪問OSS資源

    您可以在配置ossbrowser訪問參數的時候,將Endpoint設定為自訂,並填寫OSS的內網Endpoint地址。詳情請參見ossbrowser

  • 通過ossutil訪問OSS資源

    您可以在配置ossutil訪問參數的時候,將Endpoint設定為OSS的內網Endpoint地址。詳情請參見ossutil

  • 通過SDK訪問OSS資源

    SDK初始化client的時候,Endpoint配置OSS內網對應的Endpoint即可。

    • Java SDK

      String endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";//以華東 1為例
      String accessKeyId = "<yourAccessKeyId>";
      String accessKeySecret = "<yourAccessKeySecret>";
      OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);          

      更多詳情請參見Java SDK初始化

    • PHP SDK

      $accessKeyId = "<yourAccessKeyId>";
      $accessKeySecret = "<yourAccessKeySecret>";
      $endpoint = "<您選定的OSS資料中心訪問網域名稱,例如http://oss-cn-hangzhou-internal.aliyuncs.com>";           

      更多詳情請參見PHP SDK初始化

    • Python SDK

      auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
      endpoint = 'http://oss-cn-hangzhou-internal.aliyuncs.com' # 您選定的OSS資料中心訪問網域名稱,假設Bucket處於杭州地區
      bucket = oss2.Bucket(auth, endpoint, 'BucketName')         

      更多詳情請參見Python SDK初始化

    • .NET SDK

      const string accessKeyId = "<yourAccessKeyId>";
      const string accessKeySecret = "<yourAccessKeySecret>";
      const string endpoint = "http://oss-cn-hangzhou-internal.aliyuncs.com";
      var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);   

      更多詳情請參見.NET SDK初始化

    • C SDK

      options->config = oss_config_create(options->pool);
      aos_str_set(&options->config->endpoint, "http://oss-cn-hangzhou-internal.aliyuncs.com");
      aos_str_set(&options->config->access_key_id, "<yourAccessKeyId>");
      aos_str_set(&options->config->access_key_secret, "<yourAccessKeySecret>");
      options->config->is_cname = 0;
      options->ctl = aos_http_controller_create(options->pool, 0);         

      更多詳情請參見C SDK初始化

通過ECS反向 Proxy訪問OSS資源

不同地區的ECS執行個體或外網使用者是無法直接通過OSS內網地址訪問OSS資源的,但是您可以通過配置ECS反向 Proxy來間接實現:

  1. 在OSS同地區建立一個有公網地址的ECS執行個體。詳情請參見建立ECS執行個體

  2. 在ECS執行個體上配置反向 Proxy。詳情請參見基於CentOS的ECS執行個體實現OSS反向 Proxy基於Ubuntu的ECS執行個體實現OSS反向 Proxy基於Windows的ECS執行個體實現OSS反向 Proxy

  3. OSS配置Bucket Policy,允許該ECS執行個體的內網地址訪問OSS資源。詳情請參見通過Bucket Policy授權使用者訪問指定資源

以上步驟配置完成後,您的使用者將通過您的ECS公網地址訪問您的OSS資源。當使用者訪問時,ECS執行個體通過內網向OSS請求資源,之後再返回給使用者。