
# 如何使用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](https://support.huaweicloud.com/api-obs/obs_04_0116.html)。
    
  
  - boto 3版本差异 由于OBS仅支持UNSIGNED-PAYLOAD、STREAMING-AWS4-HMAC-SHA256-PAYLOAD，不同版本的boto 3，其配置方式也有所差异，具体请参见[boto3 如何使用V4签名访问OBS]。
    
   
- 当配置过程中出现"RequestTimeTooSkewed"报错信息时，表示服务器与签名使用的时间戳有偏差，请参考以下方法排查并解决问题： 因为服务器时钟偏差，签名使用的时间戳和OBS服务端时间戳超过15分钟，所有请求都会被拒绝。可以通过date -u命令检查服务器的UTC时间，如果时间不准确，使用ntpdate或系统时间同步服务校正时间。
  
 
