如何使用V4签名访问OBS
OBS支持V4签名算法。
约束与限制
V4仅支持UNSIGNED-PAYLOAD、STREAMING-AWS4-HMAC-SHA256-PAYLOAD 2种模式。
boto3 如何使用V4签名访问OBS
- 如果是boto3 1.36.0及以上版本的,请参见以下进行配置:
custom_config = Config( signature_version='s3v4', request_checksum_calculation="WHEN_REQUIRED", response_checksum_validation="WHEN_REQUIRED" ) - 如果是boto3 1.36.0以下版本的,请参见以下进行配置:
custom_config = Config( signature_version='s3v4' )
常见问题
- 当配置过程中出现“SignatureDoesNotMatch”报错信息,表示服务端计算的签名与客户端提供的签名不匹配,请参考以下方法排查并解决问题:
- 检查endpoint
正确的endpoint格式为obs.regionID.myhuaweicloud.com,当用户将endpoint错误地填写为桶访问域名(bucketname.obs.regionID.myhuaweicloud.com),即在endpoint前多加了桶名,也会报签名不匹配错误。
- 检查AK、SK
请确保AK、SK输入正确,成对匹配,且与请求所用AK、SK保持一致。获取AK/SK的方法请参见如何获取AK/SK。
- boto 3版本差异
由于OBS仅支持UNSIGNED-PAYLOAD、STREAMING-AWS4-HMAC-SHA256-PAYLOAD,不同版本的boto 3,其配置方式也有所差异,具体请参见boto3 如何使用V4签名访问OBS。
- 检查endpoint
- 当配置过程中出现“RequestTimeTooSkewed”报错信息时,表示服务器与签名使用的时间戳有偏差,请参考以下方法排查并解决问题:
因为服务器时钟偏差,签名使用的时间戳和OBS服务端时间戳超过15分钟,所有请求都会被拒绝。可以通过date -u命令检查服务器的UTC时间,如果时间不准确,使用ntpdate或系统时间同步服务校正时间。

