本文介绍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