本文介绍OSS返回409错误的原因和解决方案。

BucketAlreadyExists

  • 错误消息:The requested bucket name is not available.

    问题原因:该Bucket已存在或被其他用户占用。

    解决方案:请使用新的Bucket名称创建Bucket。创建Bucket的详情,请参见创建存储空间

  • 错误消息:Bucket already exists can't modify location.

    问题原因:不允许修改已创建Bucket所在的地域。

    解决方案:重新创建Bucket,并在创建过程中指定Bucket所在的地域。

  • 错误消息:Cannot modify existing bucket's storage class.Bucket already exists can't modify storage type.

    问题原因:不允许修改已创建Bucket的存储类型。

    解决方案:重新创建Bucket,并在创建过程中指定Bucket的存储类型。

  • 错误消息:Bucket already exists can't modify data redundancy type.

    问题原因:不允许修改已创建Bucket的数据容灾类型。

    解决方案:重新创建Bucket,并在创建过程中指定Bucket的数据容灾类型。

BucketNotEmpty

  • 错误消息:The bucket you tried to delete is not empty.
  • 问题原因:要删除的Bucket中存在未删除的Object、未完成的分片上传任务或Livechannel。
  • 解决方案:
    • 删除Bucket中所有的文件(Object)。

      删除文件的操作,请参见删除文件。如果文件数量较多,推荐结合生命周期规则批量删除文件,请参见设置生命周期规则

    • 删除Bucket中因分片上传或断点续传产生的碎片(Part)。

      删除碎片的操作,请参见管理碎片

    • 删除Bucket中所有的Livechannel。

      删除Livechannel的操作,请参见DeleteLiveChannel。有关Livechannel的信息,请参见RTMP推流上传

PositionNotEqualToLength

  • 错误消息:Position is not equal to file length.
  • 问题原因:
    • Position的值和当前Object的长度不一致。
    • Position值为0时,如果没有同名的Appendable Object,或者同名Appendable Object长度为0,则请求成功;其他情况均视为Position和Object长度不匹配的情形,返回此错误码。
  • 解决方案:您可以通过响应头x-oss-next-append-position得到下一次Position的值,并再次发起请求。由于并发的关系,即使把Position的值设置为x-oss-next-append-position,该请求依然可能因为PositionNotEqualToLength而失败。请参见AppendObject进行排查。

FileAlreadyExists

  • 错误消息:The object you specified already exists and can not be overwritten.
  • 问题原因:当请求的Header中携带x-oss-forbid-overwrite=true时,表示禁止覆盖同名文件。如果文件已存在,则返回该错误。
  • 解决方案:

    您可以通过以下两种方式在简单上传、拷贝文件、分片上传等场景中覆盖同名文件:

    • 不携带x-oss-forbid-overwrite参数,或将此参数设置为false。
    • 对Bucket开启版本控制,此时被覆盖的文件会以历史版本的形式保存下来,您可以随时恢复任意历史版本文件。

LiveChannelDisabled

  • 错误消息:Live channel is disabled by owner.
  • 问题原因:LiveChannel处于disabled状态时,OSS会禁止您对该LiveChannel进行推流操作。如果您正在向该LiveChannel推流,那么推流的客户端会被强制断开(会有10s左右的延迟)。
  • 解决方案:请确保LiveChannel处于enabled状态时,再对该LiveChannel进行推流操作。详情请参见PutLiveChannelStatus

ChannelStillLive

  • 错误消息:Live channel couldn't be updated or deleted when channel is live.
  • 问题原因:LiveChannel处于Live状态,即连接上推流地址后客户端处于推流中的状态时,不允许更新或删除LiveChannel等操作。
  • 解决方案:请在客户端停止推流后进行更新或删除LiveChannel等操作。

FileImmutable

  • 错误消息:The object you specified is immutable.
  • 问题原因:您试图删除或修改Bucket内处于保护状态的Object。
  • 解决方案:在Bucket的合规保留策略的保留周期内,不允许删除或修改Bucket内的Object。保留周期到期后,您可以删除或修改Bucket内的Object。请通过GetBucketWorm获取保留周期。

RestoreAlreadyInProgress

  • 错误消息:The restore operation is in progress.
  • 问题原因:您已经成功提交RestoreObject请求,且服务端正在执行解冻操作。
  • 解决方案:请不要重复提交RestoreObject请求。

KeyDisabled

  • 错误消息:The request was rejected because the key state is Disabled.
  • 问题原因:KMS服务密钥已被禁用。
  • 解决方案:调用EnableKey接口启用指定的主密钥进行加解密。

KeyPendingDeletion

  • 错误消息:The request was rejected because the key state is PendingDeletion.
  • 问题原因:KMS服务密钥处于待删除状态。
  • 解决方案:密钥状态处于待删除状态时,无法用于加密、解密、生成数据密钥操作。主密钥一旦删除,将无法恢复,使用该主密钥加密的内容及产生的数据密钥也将无法解密。因此,对于主密钥的删除,KMS只提供申请删除的方式,而不提供直接删除的方式,详情请参见ScheduleKeyDeletion。如果您有删除密钥方面的需求,可以通过DisableKey禁用密钥。

KeyPendingImport

  • 错误消息:The request was rejected because the key state is PendingImport.
  • 问题原因:KMS服务密钥正处于预导入状态。
  • 解决方案:KMS服务密钥正处于预导入状态时,无法用于加密、解密、生成数据密钥操作。请调用ImportKeyMaterial接口完成密钥材料的导入。

WORMConfigurationAlreadyExists

  • 错误消息:The WORM Configuration already exists.
  • 问题原因:合规保留策略已存在。
  • 解决方案:仅支持为目标Bucket配置一条合规保留策略。合规保留策略未锁定前,您可以删除该策略,然后新建策略。详情请参见合规保留策略

InventoryConfigurationAlreadyExists

  • 错误消息:The Inventory Configuration already exists.
  • 问题原因:Bucket清单规则已存在。
  • 解决方案:为目标Bucket配置清单规则时,确保清单名称在当前Bucket下全局唯一。您可以通过GetBucketInventory获取已配置的清单规则。