全部產品
Search
文件中心

Object Storage Service:配置用戶端(Swift SDK)

更新時間:Mar 19, 2026

使用Swift SDK V2發起OSS請求時,您需要初始化一個OSS Client執行個體,並根據需要修改預設配置項。

注意事項

  • 初始化OSS Client前,您需要配置訪問憑證,本文以從環境變數讀取存取憑證為例,更多配置樣本請參見配置訪問憑證(Swift SDK)

  • 關於OSS支援的Region與Endpoint的對應關係,請參見地區和Endpoint

前置條件

重要

在配置用戶端前,您需要先使用RAM使用者AccessKey完成配置環境變數。

  1. 建立有OSS系統管理權限的RAM使用者AccessKey

    使用ROS指令碼快速建立有OSS系統管理權限的RAM使用者AccessKey

    在Resource Orchestration Service控制台的建立資源棧頁面的安全確認下,勾選確認,然後單擊建立

    1.png

    建立完成後,在輸出中,複製建立的AccessKey。

    image

  2. 使用RAM使用者AccessKey配置環境變數。

    Linux

    1. 在命令列介面執行以下命令來將環境變數設定追加到~/.bashrc 檔案中。

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
      1. 執行以下命令使變更生效。

        source ~/.bashrc
      2. 執行以下命令檢查環境變數是否生效。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. 在終端中執行以下命令,查看預設Shell類型。

      echo $SHELL
      1. 根據預設Shell類型進行操作。

        Zsh

        1. 執行以下命令來將環境變數設定追加到 ~/.zshrc 檔案中。

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
        2. 執行以下命令使變更生效。

          source ~/.zshrc
        3. 執行以下命令檢查環境變數是否生效。

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. 執行以下命令來將環境變數設定追加到 ~/.bash_profile 檔案中。

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
        2. 執行以下命令使變更生效。

          source ~/.bash_profile
        3. 執行以下命令檢查環境變數是否生效。

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. 在CMD中運行以下命令。

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. 運行以下命令,檢查環境變數是否生效。

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. 在PowerShell中運行以下命令。

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      1. 運行以下命令,檢查環境變數是否生效。

        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

  3. 參考上述方式修改系統內容變數後,請重啟或重新整理您的編譯運行環境,包括IDE、命令列介面、其他傳統型應用程式及後台服務,以確保最新的系統內容變數成功載入。

預設配置樣本

重要
  • Swift SDK V2預設使用V4簽名,在初始化Client時,您需要指定阿里雲通用Region ID作為發起請求地區的標識,本範例程式碼使用華東1(杭州)Region ID:cn-hangzhou。如需查詢其它Region ID請參見地區和Endpoint

  • Swift SDK V2可以通過Endpoint參數,自訂服務要求的訪問網域名稱。當不指定時,SDK預設根據Region資訊,構造公網訪問網域名稱。例如當Region為'cn-hangzhou'時,構造出來的訪問網域名稱為'https://oss-cn-hangzhou.aliyuncs.com'。

  • Swift SDK V2構造訪問網域名稱時預設採用HTTPS協議,如需採用HTTP協議,請在指定網域名稱時指定為HTTP,例如'http://oss-cn-hangzhou.aliyuncs.com'。

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        // 填寫Bucket所在地區(樣本:華東1為cn-hangzhou)
        let region = "cn-hangzhou"
        // 可選項,指定訪問OSS服務的網域名稱。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com
        let endpoint: String? = nil

        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        let credentialsProvider = EnvironmentCredentialsProvider()

        // 配置OSS用戶端參數
        let config = Configuration.default()
            .withRegion(region)        // 設定Bucket所在地區
            .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
            
        // 設定自訂Endpoint
        if let endpoint = endpoint {
            config.withEndpoint(endpoint)
        }
        
        // 建立OSS用戶端執行個體
        let client = Client(config)
    }
}

常見情境配置樣本

內網網域名稱配置樣本

當您的應用部署在阿里雲的ECS執行個體上,並且需要頻繁訪問同地區的OSS資源時,使用內網網域名稱可以降低流量成本並提高訪問速度。

以下是使用OSS內網網域名稱配置OSSClient的範例程式碼。

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        // 填寫Bucket所在地區(樣本:華東1為cn-hangzhou)
        let region = "cn-hangzhou"
        let endpoint: String? = "https://oss-cn-hangzhou-internal.aliyuncs.com" // 可選項,指定訪問OSS服務的內網網域名稱。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou-internal.aliyuncs.com

        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        let credentialsProvider = EnvironmentCredentialsProvider()

        // 配置OSS用戶端參數
        let config = Configuration.default()
            .withRegion(region)        // 設定Bucket所在地區
            .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
        // 您也可以無需指定內網endpoint,直接設定useInternalEndpoint = true配置內網網域名稱
        //    .withUseInternalEndpoint(true)
            
        // 設定自訂Endpoint
        if let endpoint = endpoint {
            config.withEndpoint(endpoint)
        }
        
        // 建立OSS用戶端執行個體
        let client = Client(config)
    }
}

自訂網域名配置樣本

當您有多個不同的OSS Bucket用於不同的目的時,可以通過為每個Bucket設定不同的子網域名稱來更好地管理和組織資源。

以下是使用自訂網域名配置OSSClient的範例程式碼。

警告

您需要先將自訂網域名綁定至Bucket預設網域名稱,否則將引發報錯!關於綁定自訂網域名的詳細操作,請參見通過自訂網域名訪問OSS

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        // 填寫Bucket所在地區(樣本:華東1為cn-hangzhou)
        let region = "cn-hangzhou"
        let endpoint: String? = "https://www.example-***.com"  // 必須項,請填寫您的自訂網域名。例如www.example-***.com

        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        let credentialsProvider = EnvironmentCredentialsProvider()

        // 配置OSS用戶端參數
        let config = Configuration.default()
            .withRegion(region)        // 設定Bucket所在地區
            .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
            .withUseCname(true)		// 請注意,設定true開啟CNAME選項,否則無法使用自訂網域名
            
        // 設定自訂Endpoint
        if let endpoint = endpoint {
            config.withEndpoint(endpoint)
        }
        
        // 建立OSS用戶端執行個體
        let client = Client(config)
    }
}

傳輸加速網域名稱配置樣本

以下是使用傳輸加速網域名稱配置OSSClient的範例程式碼。

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        // 填寫Bucket所在地區(樣本:華東1為cn-hangzhou)
        let region = "cn-hangzhou"
        let endpoint: String? = "https://oss-accelerate.aliyuncs.com" // 可選項,填寫Bucket所在地區對應的傳輸加速Endpoint。以華東1(杭州)為例,Endpoint填寫為'https://oss-accelerate.aliyuncs.com'

        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        let credentialsProvider = EnvironmentCredentialsProvider()

        // 配置OSS用戶端參數
        let config = Configuration.default()
            .withRegion(region)        // 設定Bucket所在地區
            .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
        // 您也可以無需指定傳輸加速endpoint,直接設定useAccelerateEndpoint = true配置傳輸加速網域名稱
        //    .withUseAccelerateEndpoint(true)
            
        // 設定自訂Endpoint
        if let endpoint = endpoint {
            config.withEndpoint(endpoint)
        }
        
        // 建立OSS用戶端執行個體
        let client = Client(config)
    }
}

專有網域設定樣本

以下是使用專有網域設定OSSClient的範例程式碼。

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        // 填寫Bucket所在地區(樣本:華東1為cn-hangzhou)
        let region = "cn-hangzhou"
        let endpoint: String? = "https://service.corp.example.com"  // 必須項,請填寫您的專有域。例如:https://service.corp.example.com

        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        let credentialsProvider = EnvironmentCredentialsProvider()

        // 配置OSS用戶端參數
        let config = Configuration.default()
            .withRegion(region)        // 設定Bucket所在地區
            .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
            
        // 設定自訂Endpoint
        if let endpoint = endpoint {
            config.withEndpoint(endpoint)
        }
        
        // 建立OSS用戶端執行個體
        let client = Client(config)
    }
}

政務雲配置樣本

以下是使用政務雲網域名稱配置OSSClient的範例程式碼。

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        // 填寫Bucket所在地區。以華北2 阿里政務雲1為例,Region填寫為cn-north-2-gov-1
        let region = "cn-north-2-gov-1"
        // 必須項, 填寫Bucket所在地區對應的內網Endpoint。以華北2 阿里政務雲1為例,Endpoint填寫為'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'
        let endpoint: String? = "https://oss-cn-north-2-gov-1-internal.aliyuncs.com"  

        // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        let credentialsProvider = EnvironmentCredentialsProvider()

        // 配置OSS用戶端參數
        let config = Configuration.default()
            .withRegion(region)        // 設定Bucket所在地區
            .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
            
        // 設定自訂Endpoint
        if let endpoint = endpoint {
            config.withEndpoint(endpoint)
        }
        
        // 建立OSS用戶端執行個體
        let client = Client(config)
    }
}

OSSClient配置參數匯總

參數名

說明

樣本

region

(必選)請求發送的地區

Configuration.region = "cn-hangzhou"

endpoint

訪問網域名稱

Configuration.endpoint = "oss-cn-hangzhou.aliyuncs.com"

retryMaxAttempts

失敗請求的最大重試次數

Configuration.retryMaxAttempts = 5

retryer

HTTP請求時的重試實現

Configuration.retryer = customRetryer

logger

設定日誌列印介面

Configuration.HttpTransport = customLogger

credentialsProvider

(必選)設定訪問憑證

Configuration.credentialsProvider = EnvironmentCredentialsProvider()

usePathStyle

使用路徑請求風格,即次層網域請求風格,預設為bucket託管網域名稱

Configuration.usePathStyle = true

useCName

是否使用自訂網域名訪問,預設不使用

Configuration.useCName = true

timeoutIntervalForRequest

請求逾時時間, 預設值為 15 秒

Configuration.timeoutIntervalForRequest = 30

timeoutIntervalForResource

資源請求允許花費的最長時間, 預設值為 24 小時

Configuration.timeoutIntervalForResource = 60 * 60

enableTLSVerify

是否跳過SSL認證校正,預設檢查SSL認證

Configuration.enableTLSVerify = true

enableFollowRedirect

是否開啟HTTP重新導向, 預設不開啟

Configuration.enableFollowRedirect = true

maxConnectionsPerHost

單host最大串連數

Configuration.maxConnectionsPerHost = 5

signerVersion

簽名版本,預設值為v4

Configuration.signerVersion = "v4"

httpProtocal

HTTP協議,預設使用HTTPS

Configuration.httpProtocal = .https

useDualStackEndpoint

是否使用雙棧網域名稱訪問,預設不使用

Configuration.useDualStackEndpoint = true

useAccelerateEndpoint

是否使用傳輸加速網域名稱訪問,預設不使用

Configuration.useAccelerateEndpoint = true

useInternalEndpoint

是否使用內網網域名稱訪問,預設不使用

Configuration.useInternalEndpoint = true

enableUploadCRC64Validation

上傳時開啟CRC64校正,預設開啟CRC64校正

Configuration.enableUploadCRC64Validation = true

enableDownloadCRC64Validation

下載時開啟CRC64校正,預設開啟CRC64校正

Configuration.enableDownloadCRC64Validation = true

additionalHeaders

指定額外的簽章要求頭,V4簽名下有效

Configuration.additionalHeaders = ["x-oss-meta-*"]

userAgent

指定額外的User-Agent資訊

Configuration.userAgent = "MyApp/1.0"

常見問題

如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,如何提升傳輸速度?

當您的使用情境對上傳速度有要求時,建議您通過與OSS同地區的其他阿里雲產品(如ECS伺服器)訪問OSS,並且請改成使用內網Endpoint進行訪問,請參見ECS執行個體通過OSS內網地址訪問OSS資源

如何查看RAM使用者的AK資訊?

  1. 如需查看RAM使用者的AK,請直接登入RAM控制台選擇具體使用者查看AK資訊。

  2. RAM使用者的AccessKey Secret僅在建立時顯示,之後無法查看,若已經遺忘了的話無法找回。您可以直接存取RAM控制台選擇具體使用者,並建立新的AccessKey進行輪換。具體操作請參見建立AccessKey

如果遇到報錯問題該如何查詢具體的錯誤類型?

關於錯誤類型的查詢,OSS文檔提供了EC錯誤碼供您參閱,例如關於認證方面的常見報錯問題,可參見02-AUTH