本文介紹ossutil的一些配置操作,您可以通過本文了解如何更好地使用ossutil。
版本升級
推薦您使用全新升級的ossutil2.0,快速安裝并使用,請參見安裝ossutil。
ossutil2.0重點功能如下:
全新的命令組織結構:引入了多級命令支持,包括API級命令(例如
ossutil api put-bucket-acl
)和高級命令(如ossutil config
)。改進的配置管理機制:簡化了初始配置流程,用戶僅需提供AccessKey ID、AccessKey Secret及地域ID即可完成安裝后的基礎配置,并且支持通過
--profile
參數指定多個配置文件,增強了靈活性。豐富的過濾參數:對于批量處理命令(如
ls
、cp
、rm
等),新增了基于路徑、文件大小、修改時間以及對象元數據等多種過濾條件的支持,極大地提升了操作的精確性和效率。靈活的輸出格式調整:新增
--output-format
參數,允許用戶將輸出格式設定為JSON、YAML或XML,以便更好地適配不同的數據處理需求;同時引入了--output-query
選項,讓用戶能夠對輸出內容進行篩選,獲取所需信息。安全性增強:為了提高安全性,ossutil 2.0支持通過環境變量設置敏感參數,避免在命令行中直接暴露密鑰,減少了泄露風險;此外,新增的
--dry-run
選項使用戶能夠在實際執行命令前驗證其行為,確保操作無誤。
通過config命令進行快速配置
對于大多數情況,通過該命令可以快速設置您的ossutil工具。該命令提供了交互式方式生成配置文件。
以Linux環境為例進行說明。
輸入配置命令。
ossutil config
根據提示設置配置文件路徑。
您可以根據實際需要設置配置文件的路徑。默認情況下,配置文件保存到~/.ossutilconfig文件里, 直接按回車則使用默認配置。
請輸入配置文件名,文件名可以帶路徑(默認為:/home/user/.ossutilconfig,回車將使用默認路徑。 如果用戶設置為其他路徑,在使用命令時需要將--config-file選項設置為該路徑):
根據提示設置工具的語言。
請輸入語言CH或EN。工具使用的語言默認與操作系統保持一致。該配置項將在此次config命令設置成功后生效。
根據提示分別設置Endpoint、AccessKey ID、AccessKey Secret和STSToken參數。
參數說明如下:
參數
說明
endpoint
填寫Bucket所在地域的Endpoint。關于各地域Endpoint的更多信息,請參見OSS地域和訪問域名。
您也可以增加
http://
或https://
指定ossutil訪問OSS使用的協議,默認使用HTTP協議。例如,使用HTTPS協議訪問華東1(杭州)的Bucket,設置為https://oss-cn-hangzhou.aliyuncs.com
。accessKeyID
填寫賬號的AccessKey。
使用阿里云賬號或RAM用戶訪問時,AccessKey的獲取方式,請參見創建AccessKey。
使用STS臨時授權賬號訪問時,AccessKey的獲取方式,請參見AssumeRole - 獲取扮演角色的臨時身份憑證。
accessKeySecret
stsToken
使用STS臨時授權賬號訪問OSS時需要配置該項,否則置空即可。關于stsToken的生成方式,請參見AssumeRole - 獲取扮演角色的臨時身份憑證。
說明關于配置文件的更多信息,請參見config。
如果在步驟2設置了配置文件的路徑,則每次使用命令時需增加-c選項指定配置文件。
例如,配置文件保存為/home/config,使用ls時,命令格式如下:
ossutil -c /home/config ls oss://examplebucket
命令配置文件
您可以將常用的憑證信息和配置信息保存到配置文件里,以方便使用。配置文件采用了INI格式結構,以節(section)和鍵(key)構成, 配置參數保存在指定的節里。常用的配置參數如下:
配置參數 | 說明 | 示例代碼 |
language | 設置ossutil工具的語言。取值:
|
|
endpoint | 設置Bucket所在地域的域名信息。 |
|
accessKeyID | 訪問密鑰的一部分,用于標識用戶身份,以對命令請求進行身份驗證。 |
|
accessKeySecret | 訪問密鑰的一部分,用于驗證用戶的密鑰,以對命令請求進行身份驗證。 |
|
stsToken | 臨時密鑰的Token,以對命令請求進行身份驗證。 |
|
mode | 采用的鑒權模式,取值可以為AK、StsToken、RamRoleArn或者EcsRamRole。 |
|
ramRoleArn | 鑒權模式下的RAM角色ARN。 |
|
roleSessionName | 鑒權模式下的會話名稱,用于RamRoleArn模式。不設置時,會生成隨機值。 |
|
tokenTimeout | 表示Token的有效時間,單位為秒,默認值為3600,用于RamRoleArn模式。 |
|
ecsRoleName | EcsRamRole鑒權模式下的角色名稱。 |
|
更多命令配置參數,請參見編輯配置文件。
命令行選項
除了通過命令配置文件外,您還可以使用命令行參數設置相關的配置。命令行選項的優先級要高于命令配置文件。常用命令行選項如下:
選項 | 說明 | 示例代碼 |
--loglevel | 日志級別,默認為空,表示不輸出日志文件。取值:
|
|
--connect-timeout | 表示客戶端連接超時的時間,單位為秒,默認值為120。 |
|
--read-timeout | 表示客戶端讀超時的時間,單位為秒,默認值為1200。 |
|
--retry-times | 當錯誤發生時的重試次數,默認值為10。 |
|
-e, --endpoint | 請求的域名。 |
|
-i, --access-key-id | 訪問OSS使用的訪問憑證。 |
|
-k, --access-key-secret | 訪問OSS使用的訪問憑證。 |
|
-t, --sts-token | 訪問OSS使用的STSToken。 |
|
--mode | 表示鑒權模式,取值可以為AK、StsToken、RamRoleArn、EcsRamRole,默認值為空。 | 使用AK模式訪問的示例代碼如下:
|
--ram-role-arn | 鑒權模式下的RAM角色ARN。 |
|
--role-session-name | 鑒權模式下的會話名字。 |
|
--token-timeout | 表示Token的有效時間,單位為秒,默認值為3600。 |
|
--ecs-role-name | EcsRamRole鑒權模式下的角色名稱。 |
|
更多選項配置,請參見通用選項。
配置訪問憑證
您可以使用多種方式,通過配置文件或者命令行選項配置訪問憑證。
使用訪問密鑰訪問
以杭州地域名稱為example-bucket的Bucket為例進行說明。
通過配置文件
生成如下的配置文件,并保存在~/.myossutilconfig。
[Credentials] endpoint = oss-cn-hangzhou.aliyuncs.com accessKeyID = LTAI4Fw2NbDUCV8zYUzA**** accessKeySecret = 67DLVBkH7EamOjy2W5RVAHUY9H****
通過如下命令查詢Bucket中的對象。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket
通過命令行選項
您也可以直接將訪問密鑰通過命令行參數傳入,示例代碼如下:
ossutil64 -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H**** ls oss://example-bucket
重要通過命令行參數需要傳入訪問密鑰,可能會被日志系統記錄,存在密鑰泄露的風險,請謹慎使用。
使用臨時Token訪問
以杭州地域名稱為example-bucket的Bucket為例進行說明。
通過配置文件
生成如下的配置文件,并保存在~/.myossutilconfig。
[Credentials] endpoint = oss-cn-hangzhou.aliyuncs.com accessKeyID = STS.LTAI4Fw2NbDUCV8zYUzA**** accessKeySecret = 67DLVBkH7EamOjy2W5RVAHUY9H**** stsToken = yourSecurityToken
通過如下命令查詢Bucket中的對象。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket
通過命令行選項
您也可以直接將訪問密鑰通過命令行參數傳入,示例代碼如下:
ossutil64 -e oss-cn-hangzhou.aliyuncs.com -i STS.LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H**** -t yourSecurityToken ls oss://example-bucket
說明通過命令行參數需要傳入訪問密鑰,可能會被日志系統記錄,存在密鑰泄露的風險,請謹慎使用。
使用RAM角色訪問
以杭州地域名稱為example-bucket的Bucket,需要扮演的角色為ramRoleArnExample為例進行說明。
通過配置文件
生成如下的配置文件,并保存在~/.myossutilconfig。
[Credentials] endpoint = oss-cn-hangzhou.aliyuncs.com accessKeyID = LTAI4Fw2NbDUCV8zYUzA**** accessKeySecret = 67DLVBkH7EamOjy2W5RVAHUY9H**** mode = RamRoleArn ramRoleArn = acs:ram::137918634953****:role/Alice roleSessionName = session_name_example (可以不設置) tokenTimeout = 1800 (可以不設置)
通過如下命令查詢Bucket中的對象。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket
通過命令行選項
您也可以直接將訪問密鑰通過命令行參數傳入,示例代碼如下:
ossutil64 -e oss-cn-hangzhou.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H**** --mode RamRoleArn --ram-role-arn acs:ram::137918634953****:role/Alice ls oss://example-bucket
說明通過命令行參數需要傳入訪問密鑰,可能會被日志系統記錄,存在密鑰泄露的風險,請謹慎使用。
使用實例RAM角色訪問
在云服務器ECS上,您還可以通過實例RAM角色的方式來配置ossutil訪問憑證。實例RAM角色允許您將一個角色關聯到云服務器實例,在實例內部基于臨時憑證STS使用ossutil。臨時憑證由系統自動生成和更新,應用程序可以使用指定的實例元數據URL獲取臨時憑證,無需特別管理。借助于RAM,一方面保證AccessKey安全,另一方面實現權限的精細化控制和管理。
使用前請先在ECS上創建實例RAM角色。更多信息,請參見概述。
以杭州地域名稱為example-bucket的Bucket、ECS上創建的角色名稱為EcsRamRoleOss為例進行說明。
通過配置文件
生成如下的配置文件,并保存在~/.myossutilconfig。
[Credentials] endpoint = oss-cn-hangzhou.aliyuncs.com mode = EcsRamRole ecsRoleName = EcsRamRoleOss
通過如下命令查詢Bucket中的對象。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket
通過命令行選項
您也可以直接將訪問密鑰通過命令行參數傳入,示例代碼如下:
ossutil64 -e oss-cn-hangzhou.aliyuncs.com --mode EcsRamRole --ecs-role-name EcsRamRoleOss ls oss://example-bucket
為Bucket單獨配置Endpoint
在使用ossutil的過程中,您需要管理多個Bucket,此時需要對Bucket單獨配置Endpoint。您可以通過如下兩種方式進行配置:
通過配置文件
在配置文件里,增加一個[Bucket-Endpoint]配置段,為每個指定的Bucket單獨配置Endpoint,格式如下:
[Bucket-Endpoint] bucket1 = endpoint1 bucket2 = endpoint2 ...
以杭州地域Bucket(example-bucket-hz)、北京地域Bucket(example-bucket-bj)、上海地域Bucket(example-bucket-sh)為例進行說明。
生成如下的配置文件,并保存在~/.myossutilconfig。
[Credentials] endpoint = oss-cn-hangzhou.aliyuncs.com accessKeyID = LTAI4Fw2NbDUCV8zYUzA**** accessKeySecret = LTAI4Fw2NbDUCV8zYUzA**** [Bucket-Endpoint] example-bucket-hz=oss-cn-hangzhou.aliyuncs.com example-bucket-bj=oss-cn-beijing.aliyuncs.com example-bucket-sh=oss-cn-shanghai.aliyuncs.com
通過如下命令查詢Bucket中的對象。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket-hz ossutil64 -c ~/.myossutilconfig ls oss://example-bucket-bj ossutil64 -c ~/.myossutilconfig ls oss://example-bucket-sh
通過命令行選項
以杭州地域Bucket(example-bucket-hz)、北京地域Bucket(example-bucket-bj)、上海地域Bucket(example-bucket-sh)為例進行說明。
將賬號信息配置在~/.myossutilconfig中。
[Credentials] endpoint = oss-cn-hangzhou.aliyuncs.com accessKeyID = LTAI4Fw2NbDUCV8zYUzA**** accessKeySecret = 67DLVBkH7EamOjy2W5RVAHUY9H****
通過-e參數指定Endpoint。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket-hz ossutil64 -c ~/.myossutilconfig -e oss-cn-beijing.aliyuncs.com ls oss://example-bucket-bj ossutil64 -c ~/.myossutilconfig -e oss-cn-shanghai.aliyuncs.com ls oss://example-bucket-sh
配置自定義域名
ossutil支持通過自定義域名來訪問OSS資源。在使用之前,需要通過配置文件設置Bucket和自定義域名的映射關系。
在配置文件里,增加一個[Bucket-Cname]
配置段,為每個指定的Bucket單獨配置Endpoint,格式如下:
[Bucket-Cname]
bucket1 = cname1
bucket2 = cname2
...
以杭州地域名稱為example-bucket的Bucket、通過cname.example-***.com自定義域名訪問為例進行說明。
生成如下的配置文件,并保存在~/.myossutilconfig。
[Credentials]
accessKeyID = LTAI4Fw2NbDUCV8zYUzA****
accessKeySecret = 67DLVBkH7EamOjy2W5RVAHUY9H****
[Bucket-Cname]
example-bucket=cname.example-***.com
通過如下命令查詢Bucket中的對象。
ossutil64 -c ~/.myossutilconfig ls oss://example-bucket