阿里云内容设计中心

阿里云产品优质内容聚集地。各种最佳实践,问答,产品体验活动等你来发现~

1

回答

OSS是分布式存储产品,通过数据自动多重冗余备份保证数据的持久性。因此正常情况下,OSS本身是不会导致数据出现丢失的情况的。

以下情况可能会导致您的数据被删除:

  • 生命周期规则

若您配置过自动删除文件的生命周期规则,生命周期会根据您设置的周期自动删除数据。建议您根据您的需求合理配置生命周期规则。详情请参见生命周期规则介绍

  • Bucket设置为允许所有人读写

Bucket的读写权限为公共读写:Bucket的读写权限设置为公共读写后,所有人都可以读写Bucket内的文件,建议您非必要情况下,不要设置Bucket的读写权限为公共读写。详情请参见设置存储空间读写权限(ACL)

Bucket Policy设置允许所有人读写Bucket内文件:Bucket设置了允许所有人读写的策略后,所有人都可以读写Bucket内的文件,建议您非必要情况下,不要设置这样的策略。详情请参见通过Bucket Policy授权用户访问指定资源

  • 拥有Bucket管理权限的账号泄露:拥有Bucket管理权限的账号和密码、AccessKey泄露后,获得账号的人员可以随意操作您Bucket内的文件。建议您在日常管理时使用RAM用户,并给予RAM用户最小够用的管理权限。发现账号泄露的第一时间要修改RAM用户的密码,禁用AccessKey,防止损失进一步扩大。详情请参见RAM用户概览

  • 管理人员误删:OSS内文件一旦被删除,将无法找回。为防止数据误覆盖、删除,建议您使用以下功能。

跨区域复制:将您Bucket内的数据备份到其他地域的其他存储空间中,源Bucket的文件被删除,还可以在备份的Bucket内找到备份文件。详情请参见跨区域复制介绍

定时备份:开启定时备份功能后,OSS会定期将您的数据备份至混合云备份服务中,并在您出现文件丢失时,及时恢复。详情请参见设置定时备份

版本控制:开启版本控制功能后,OSS会在文件被覆盖或删除时,将文件以历史版本的形式保存下来,并在您需要的时候恢复。详情请参见版本控制介绍

合规保留策略:对于非常重要的数据,您可以开启合规保留策略,文件在保留周期内无法被覆盖、删除。详情请参见合规保留策略

cattt 评论 0

OSS的Bucket不支持重命名。若需要其他名称,建议您重新创建Bucket,将原Bucket的文件迁移到新创建的Bucket后,删除原文件和原Bucket即可。

若您原Bucket内的文件较少,您可以通过拷贝文件的方式迁移您的数据。详情请参见拷贝文件

若您原Bucket内的文件较多,可以使用以下方式迁移您的数据:

cattt 评论 0

当您的文件(Object)设置为公共读后,所有用户都可以访问您的Object。但以下设置会导致匿名用户无法访问公共读的Object。

设置了请求者付费模式

开启请求者付费模式后,读取存储空间(Bucket)内数据时产生的流量费用和请求费用由请求者支付,Bucket拥有者仅支付存储费用。所以请求方必须提供身份验证信息,以便OSS能够识别请求方,从而对请求方而非Bucket拥有者收取请求所产生的费用。匿名用户访问时不会携带身份验证信息,所以会导致匿名用户访问失败。详情请参见请求者付费模式

解决方案:

  • 由Bucket拥有者生成一个带签名的文件URL给匿名用户访问,详情请参见上传Object后如何获取访问URL?。

  • 关闭请求者付费模式,详情请参见设置请求者付费模式。

设置了Bucket Policy

Bucket Policy是阿里云OSS推出的针对Bucket的授权策略,您可以通过Bucket Policy禁止或允许其他用户访问您的OSS资源。所以,若您Bucket Policy设置了某些影响匿名用户访问的策略,也会导致匿名用户无法访问。Bucket Policy介绍请参见使用Bucket Policy授权其他用户访问OSS资源

解决方案:

排查您的Bucket Policy,修改或删除影响匿名用户访问的策略。

cattt 评论 0

在OSS控制台或者使用SDK上传的视频如何播放

OSS对象存储服务,是通过公共接口对外提供接口服务的,上传成功后,可以通过SDK的URL生成方法生成访问地址,详情请参见上传文件到OSS后如何获取访问URL。也可以登录OSS控制台,参见以下操作获取在线播放的访问地址:

说明:使用浏览器访问OSS资源,如出现OSS资源被强制下载的情况,请参见访问OSS资源后资源被强制下载排查处理。

1、登录OSS管理控制台。

2、单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。

3、单击左侧导航栏的文件管理,然后单击目标文件的文件名或其右侧的详情。

4、在详情面板,单击复制文件URL,直接访问即可。

RTMP推流上传到OSS的视频如何播放

RTMP推流上传到OSS的音视频数据如何获取播放地址,请参见以下场景:

直播场景

在推流的过程中,可以通过HLS协议播放正在推送的内容。各个平台的播放方法如下:

  • 在Android、iOS等移动平台,直接在浏览器输入LiveChannel对应的播放地址即可,如何获取对应的推流地址,请参见ListLiveChannel

  • Mac OS可以使用Safari浏览器进行播放。

  • PC端可以安装VLC播放器进行播放。

点播场景

推流的过程中,OSS总是以直播流的方式推送/更新M3U8文件。所以对于点播的场景,需要在推流结束后,调用PostVodPlaylist接口来组装一个点播用的M3U8文件,然后使用该文件地址来播放,PostVodPlaylist接口的使用方法请参见PostVodPlaylist

说明:对于点播的场景,可以设置较大的GOP来减少TS文件数,降低码率。

cattt 评论 0

报错信息1

<Error>

  <Code>CallbackFailed</Code>

  <Message>Response body is not valid json format.</Message>

  <RequestId>587C81A125F797621829923D</RequestId>

  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>

</Error>

问题原因:回调服务器返回给OSS的消息体非Json格式。

解决方法:您可以通过curl -d "<Content>" <CallbackServerURL> -v或抓包确认内容。Windows下推荐使用Wireshark工具抓包,Linux下使用tcpdump工具抓包,详情请参见网络异常时如何抓取数据包。一些非法返回消息体如OK,\357\273\277{"Status":"OK"}(即含有ef bb bf三个字节的BOM头)等。

报错信息2

<Error>

  <Code>CallbackFailed</Code>

  <Message>Error status : -1.OSS can not connect to your callbackUrl, please check it.</Message>

  <RequestId>587C8735355BE8694A8E9100</RequestId>

  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>

</Error>

问题原因:回调服务器处理时间超过5秒,OSS认为超时。

解决方法:建议回调服务器的处理逻辑修改为异步,保证在5秒内处理完毕并返回结果给OSS。

报错信息3

<Error>

  <Code>CallbackFailed</Code>

  <Message>Error status : -1 8.8.8.8:9090 reply timeout, cost:5000ms, timeout:5000ms (err -4, errno115)</Message>

  <RequestId>587C8D382AE0B92FA3EEF62C</RequestId>

  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>

</Error>

问题原因:回调服务器处理时间超过5秒,OSS认为超时。

报错信息4

<Error>

  <Code>CallbackFailed</Code>

  <Message>Error status : 400.</Message>

  <RequestId>587C89A02AE0B92FA3C7981D</RequestId>

  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>

</Error>

问题原因:回调服务器返回给OSS的消息的状态码是400。

解决方法:请检查回调服务器的处理逻辑。

报错信息5

<Error>

  <Code>CallbackFailed</Code>

  <Message>Error status : 502.</Message>

  <RequestId>587C8D382AE0B92FA3EEF62C</RequestId>

  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>

</Error>

问题原因:回调服务器未启动,或者缺少上传回调参数中的CallbackUrl,或者OSS与回调服务器的网络不通。

解决方法:推荐在ECS上部署回调服务器,与OSS同属内网可以节省流量费用,同时保证网络质量。

cattt 评论 0

回调参数设置错误,或参数格式错误。常见的错误是ArgumentValue之间的回调参数,不是有效Json格式。在Json中"是转义字符,如"callbackBody":"{"bucket":${bucket},"object":${object}}"应该为"callbackBody":"{\"bucket\":${bucket},\"object\":${object}}"。针对具体的SDK,请参见对应的上传回调示例,详情请参考SDK使用示例部分

<Error>
  <Code>InvalidArgument</Code>
  <Message>The callback configuration is not json format.</Message>
  <RequestId>587C79A3DD373E2676F73ECE</RequestId>
  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>
  <ArgumentName>callback</ArgumentName>
  <ArgumentValue>{"callbackUrl":"8.8.8.8:9090","callbackBody":"{"bucket":${bucket},"object":${object}}","callbackBodyType":"application/json"}</ArgumentValue>
</Error>

3.jpg

cattt 评论 0

出于安全考虑,从2019年9月23日起,针对之后新建的Bucket,直接使用OSS提供的默认域名,从互联网访问OSS上该Bucket的图片类型文件时,Content-Type(Mime-Type)为image/jpeg、image/gif、image/tiff、image/png、image/webp、image/svg+xml、image/bmp、image/x-ms-bmp、image/x-cmu-raster、image/exr、image/x-icon、image/heic,扩展名包括jpg、jpeg、jpe、png、tif、tiff、gif、svg、bmp、ico、ras、dib、svgz、webp、bm、jfif、x-png、exr、heic时,Response Header中会自动加上Content-Disposition:'attachment=filename;'。即从浏览器访问图片类型文件时,会以附件形式进行下载。建议您可以使用自定义域名访问OSS请求,如何绑定自定义域名请参见绑定自定义域名,默认情况下不会强制下载。详情请参见OSS升级通知

说明:2019年9月23日0点之前已创建的Bucket不在影响范围以内。

若您使用自定义域名还是出现强制下载问题时,可以参考以下步骤解决问题:

1、在浏览器中可以查看Header的设置。如Chrome浏览器,按键盘F12打开开发者工具,在Network中查看具体请求携带的Content-Type和Content-Disposition的设置。

注意: a.Content-Disposition如果设置为attachment,就是会强制下载;设置为inline,则会在线打开。 b.Content-Type如果设置为application/octet-stream也会导致强制下载,这个是二进制的下载流。已上传到OSS中的文件如何修改Content-Type,请参见set-meta(管理文件元信息),使用ossutil工具进行修改,也可执行下一步,在控制台进行修改。 6.png

2、登录OSS管理控制台,单击目标Bucket,然后单击文件管理,找到需要设置的资源,依次单击右侧对应的更多>设置 HTTP 头。

7.png

3、然后设置准确的Content-Type,并且取消Content-Disposition的设置,然后单击确认即可,具体如何设置HTTP头请参见设置文件HTTP头

8.png

4、如果问题没有解决且对应的资源开启了CDN加速,源资源的Content-Type设置正确,但是未设置Content-Disposition,说明可能是CDN缓存了错误的Content-Type或者Content-Disposition。那么可以参见刷新缓存,更新缓存信息。

5、如果问题还是没有解决,那么判断是浏览器不支持对应格式资源的展示。如果是Web应用,建议添加对应的控件,支持对应格式资源的展示。

cattt 评论 0

OSS后端的冗余机制是针对服务器、硬件等出现故障进行数据恢复。阿里云无法恢复经您手动删除、覆盖或者配置规则自动删除的OSS数据。

数据删除和覆盖说明

OSS服务条款与服务等级协议中关于数据删除和覆盖的说明如下:

  • 服务条款中关于“用户业务数据”的说明如下:

您可自行对您的用户业务数据进行删除、更改等操作。如您自行释放服务或删除数据的,阿里云将删除您的数据,按照您的指令不再保留该数据。

用户业务数据一经删除,即不可恢复;您应自行承担数据因此被删除所引发的后果和责任,您理解并同意,阿里云没有继续保留、导出或者返还用户业务数据的义务。

  • 服务等级协议中关于“数据可销毁性”服务要求如下:

在用户主动删除数据或用户服务期满后需要销毁数据时,阿里云将自动清除对应物理服务器上磁盘和内存数据,使得数据无法恢复。

可能会造成数据删除或覆盖的操作

以下方式可能导致您的数据被删除或覆盖,请慎重操作。

如何避免误删或误覆盖

您可以通过以下方式避免文件被误删或误覆盖:

  • 开启版本控制

开启版本控制功能后,误删除、误覆盖的文件会以历史版本的形式存储在Bucket中,您可以随时恢复历史版本。详情请参见版本控制介绍

  • 使用跨区域复制备份文件

您可以使用跨区域复制的增/改同步功能,将数据备份到不同地域的另一个Bucket中。详情请参见设置跨区域复制

  • 使用定时备份功能定时备份文件

您可以配置定时备份功能,将您的文件定时备份到混合云备份中。当您的文件丢失时,可第一时间恢复您的文件。详情请参见定时备份

  • 配置正确的访问权限

为Bucket的访问者配置正确的访问权限,配置时注意遵循以下原则:

a.不使用主账号访问OSS。

b.读写分离,对于只需要读数据的业务,只使用具有读权限的子账号或STS临时凭证。

c.开放给临时用户访问时,推荐使用STS的临时凭证来访问OSS。

d.针对不同的业务,授予“够用且最小的范围”的OSS权限。

e.妥善保管数据访问的凭据,如阿里云账号密码、RAM子账号访问凭据。

权限配置详情请参见访问控制概述

cattt 评论 0

1

回答

如果您的用户域名需要通过HTTPS的方式访问OSS服务,必须购买相应的数字证书并进行证书托管。详情请参见证书托管

OSS默认支持HTTP和HTTPS两种访问方式。如果Bucket Owner(UID为175708322470****)需要强制匿名用户对目标存储空间examplebucket内资源的所有请求访问方式为HTTPS,请通过策略语法的方式配置以下Bucket Policy:

{
  "Version": "1",
  "Statement": [{
      "Effect": "Deny",
      "Action": [
        "oss:*"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:175708322470****:examplebucket",
        "acs:oss:*:175708322470****:examplebucket/*"
      ],
      "Condition": {
        "Bool": {
          "acs:SecureTransport": [
            "false"
          ]
        }
      }
    }
      ]
  }

有关策略语法涉及的各个元素的说明,请参见RAM Policy概述

有关Bucket Policy的配置详情,请参见通过Bucket Policy授权用户访问指定资源

cattt 评论 0

批量上传

您可以使用以下方法,批量上传文件:

  • ossimport工具

支持从服务器本地、第三方云存储(S3、Azure、腾讯COS等)、OSS等数据源将数据批量迁移到OSS,特别适合数据量很大的情况。详情请参见说明及配置

  • ossutil工具

使用ossutil工具的cp命令,结合-r(--recursive)选项,可批量上传文件到OSS。详情请参见上传文件

  • ossbrowser工具

使用ossbrowser工具批量选中文件后上传到OSS。详情请参见上传文件

  • OSS控制台

使用OSS控制台批量选中文件后上传到OSS。详情请参见上传文件

批量下载

您可以使用以下方法,批量下载文件:

  • ossutil工具

使用ossutil工具的cp命令,结合-r(--recursive)选项,将指定文件目录内的文件批量下载到本地。详情请参见下载文件

  • ossbrowser工具

使用ossbrowser工具勾选多个文件或文件目录,将文件或文件目录批量下载到本地。详情请参见下载文件

  • OSS控制台

使用OSS控制台勾选多个文件,将文件批量下载到本地。详情请参见下载文件

  • 文件打包后下载

结合函数计算服务,您可以将批量文件打包后下载到本地。详情请参见使用函数计算打包下载OSS文件

批量复制

您可以使用以下方法,批量复制文件:

  • 跨区域复制

通过跨区域复制可以对指定前缀文件进行批量复制。您还可以选择是否同步历史数据、是否同步删除操作。详情请参见设置跨区域复制

  • ossutil工具

使用ossutil工具的cp命令,结合-r(--recursive)选项,将指定文件目录内的文件批量复制到另一个文件目录或同账号下的另一个存储空间内。详情请参见复制文件

  • ossbrowser工具

使用ossbrowser工具勾选多个文件夹或文件,将一个或多个文件复制到另一个文件目录或同账号下另一个存储空间内。详情请参见复制文件

批量删除

您可以使用以下方法,批量删除文件:

警告:文件删除后不可恢复,请谨慎操作。

  • OSS SDK

使用SDK批量删除文件。

Java SDKPython SDKGo SDKC++ SDK,更多语言的SDK示例请参见SDK 参考

  • OSS API

通过OSS的DeleteMultipleObjects接口可批量删除文件。详情请参见DeleteMultipleObjects

  • ossutil工具

使用ossutil的rm命令,结合-r(--recursive)选项,将指定前缀的文件批量删除。详情请参见删除文件

  • ossbrowser工具

使用ossbrowser工具勾选多个文件或文件目录,批量删除。详情请参见删除文件

  • OSS控制台

使用OSS控制台勾选多个文件,批量删除。详情请参见删除文件。 您也可以直接删除某个文件目录,文件目录内的文件会同时被删除。

使用OSS控制台的碎片管理功能,批量删除碎片。详情请参见管理碎片

  • 生命周期规则

通过生命周期规则批量自动删除您的文件。详情请参见生命周期规则介绍

批量修改文件存储类型

您可以使用以下方法,批量修改文件的存储类型:

  • ossutil工具

使用ossutil的set-meta命令,结合-r(--recursive)选项,批量修改指定文件的存储类型。详情请参见set-meta

  • 生命周期规则

通过生命周期规则批量自动修改文件的存储类型。详情请参见生命周期规则介绍

批量修改文件访问权限(ACL)

您可以通过ossutil工具批量修改文件ACL:

  • 使用set-acl命令,结合-r(--recursive)选项,批量修改指定文件的ACL。详情请参见set-acl

  • 使用set-meta命令结合-r(--recursive)选项,通过修改指定文件的meta信息来修改文件的ACL。详情请参见set-meta

批量解冻文件

您可以使用以下方法,批量将归档存储“冷冻”状态的文件恢复为可读:

  • ossutil工具

使用restore命令,结合-r(--recursive)选项,批量恢复冷冻状态的文件为可读状态。详情请参见restore

  • ossbrowser工具

使用ossbrowser工具勾选需要解冻的文件,批量解冻。

批量设置文件Meta信息

您可以使用以下方法,批量修改文件的Meta信息:

  • ossutil工具

使用ossutil的set-meta命令,结合-r(--recursive)选项,批量修改指定文件的meta信息。详情请参见set-meta。此命令可用于批量修改文件的存储类型及文件访问权限。

  • OSS控制台 在控制台上勾选需要修改Http head信息的文件,批量设置文件的Meta信息。详情请参见设置文件HTTP头
cattt 评论 0

阿里云OSS的数据模型为扁平型结构,所有文件(Object)都直接隶属于其对应的存储空间(Bucket)。因此,OSS缺少文件系统中类似于文件夹与子文件夹的层次结构。为了方便管理,OSS管理控制台将所有文件名以正斜线(/)结尾的文件显示为文件夹,实现类似于Windows文件夹的基本功能。

例如abc/efg/123.jpg这个路径的文件,在OSS管理控制台上看起来就是123.jgp存放在abc文件夹下的efg子文件夹中。

您可以通过以下方法上传或下载文件夹:

  • OSS管理控制台:图形化管理工具,提供类似Windows资源管理器的功能,使用简单。

上传文件夹:在上传时,直接将文件夹拖拽到上传区域,即可保留文件夹的结构。详情请参见上传文件

下载文件夹:OSS控制台暂不支持直接下载文件夹,您可以在本地创建文件夹后,将Bucket中的文件批量下载到指定文件夹中。操作方式请参见下载文件

  • ossbrowser:图形化管理工具,提供类似Windows资源管理器的功能,使用简单。

上传文件夹:在指定的Bucket或目录内,单击目录,之后选中需要上传的文件夹即可。您也可以直接将文件夹拖拽到ossbrowser中。详情请参见上传文件

下载文件夹:单击指定文件夹右侧的下载,即可下载文件夹。操作方式请参见下载文件

  • ossutil:命令行管理工具,提供方便、简洁、丰富的OSS管理命令,操作性能好。

上传文件夹:在上传文件时携带-r选项可上传文件夹。详情请参见上传文件

下载文件夹:在下载文件时携带-r选项可下载文件夹。详情请参见下载文件

  • SDK:提供丰富、完整的各类语言SDK demo,易于开发。

上传文件夹:SDK不支持直接上传文件夹,您可以在上传时设置相同的文件名前缀,并使用正斜线(/)隔开。例如的上传a.txt、b.txt、c.txt三个文件到abc文件夹,在上传时设置ObjectName为abc/a.txt、abc/b.txt、abc/c.txt即可。

下载文件夹:SDK不支持直接下载文件夹,您可以在下载时将文件下载到同一个本地文件夹中。

cattt 评论 0

公共读Object

如果文件的读写权限ACL为公共读,即该文件允许匿名访问,那么文件URL的格式为https://BucketName.Endpoint/ObjectName。其中,ObjectName需填写包含文件夹以及文件后缀在内的该文件的完整路径。各地域的Endpoint信息介绍,请参见访问域名和数据中心

例如华东1(杭州)地域下名为bucketexample的Bucket下有名为example的文件夹,文件夹内有个名为example.jpg的文件。则该文件URL为:

  • 外网访问URL:https://bucketexample.oss-cn-hangzhou.aliyuncs.com/example/example.jpg

  • 内网访问URL(供同地域ECS实例访问):https://bucketexample.oss-cn-hangzhou-internal.aliyuncs.com/example/example.jpg

注意 如需确保通过文件URL访问文件时是预览行为,您需要绑定自定义域名并添加CNAME记录。详情请参见使用自有域名访问OSS资源

私有Object

如果文件读写权限ACL为私有,则必须进行签名操作。私有文件URL的格式为https://BucketName.Endpoint/Object?签名参数。您可以通过以下任意方法获取文件URL并设置URL的有效时长。

  • 控制台

您可以通过OSS控制台获取文件URL。具体操作,请参见分享文件。文件URL的有效时长因账号类型存在差异。例如,阿里云账号可设置的文件URL有效时长最大为32400秒(9小时),RAM用户以及STS用户可设置的文件URL有效时长最大为3600秒(1小时)。如需获取更长时效的文件URL,请使用命令行工具ossutil、图形化工具ossbrowser或SDK。

  • 命令行工具ossutil

请参见ossutil-sign

  • 图形化工具ossbrowser

请参见ossbrowser快速入门

  • SDK

请参见:JavaPythonGoPHPC.NETAndroidiOSNode.jsBrowser.js

自有域名Object

如果文件所在的Bucket绑定了自定义域名,则文件URL的格式为https://YourDomainName/ObjectName,其中ObjectName需填写包含文件夹以及文件后缀在内的该文件的完整路径。

例如您在华东1(杭州)地域下的存储空间bucketexample,绑定了自有域名img.example.com。且该bucket下有名为example的文件夹,文件夹内有名为example.jpg的文件,则该文件URL为https://img.example.com/example/example.jpg。

cattt 评论 0

1

回答

使用OSS进行数据的上传、下载等操作,对于带宽和每秒请求数QPS有一定的限制。

您可以通过ossutil工具的probe命令检测网络状态,详情请参见probe(探测状态)

带宽:

中国内地各地域10 Gbit/s、其他地域5 Gbit/s。如达到该阈值,请求会被流控。

说明:当请求被流控时,请求返回的Header中会携带x-oss-qos-delay-time: number。其中number为请求被流控的时长,单位为ms。 上传类请求会返回精确的被流控的时长;下载类请求会返回根据流控程度和文件大小估算出的被流控的时长。

如果您的业务(如大数据离线处理等)有更大的带宽(10 Gbit/s~100 Gbit/s)需求,请联系技术支持

每秒请求数QPS(Query Per Second):

单个账号的总QPS为10,000,但在不同的读写方式下,实际能达到的值如下:

  • 顺序读写:2,000

如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),可能会出现大量文件索引集中存储于存储空间中某个特定分区的情况,此时如果您的请求速率过大,会导致请求速率下降。建议您在上传大量文件时,不要使用顺序前缀的文件名。关于如何将顺序前缀改为随机性前缀的方法,请参见OSS性能与扩展性最佳实践

  • 非顺序读写:10,000

如您的业务有更大的QPS需求,请联系技术支持

cattt 评论 0

不同的问题原因对应的解决方法不同,建议先清除浏览器缓存进行测试。如果仍然报错,请参见以下步骤排查CORS跨域规则是否设置正确:

1、登录OSS管理控制台。

2、单击Bucket列表,单击目标Bucket,进入Bucket概览页面。

3、在左侧导航栏中选择权限管理>跨域设置,然后单击设置。

2.png

4、将来源设置为*,允许Methods全部勾选,允许Headers设置为*,暴露Headers设置为Etag和x-oss-request-id,缓存时间设置为0,选中返回Vary: Origin。关于如何设置跨域规则,请参见设置跨域访问

注意:选中返回Vary: Origin以避免本地缓存错乱,可能会造成浏览器访问次数或者CDN回源次数增加。

3.png

5、若问题仍然未解决,请任意登录一台服务器,执行以下命令,查看跨域请求头。

curl -voa '[$URL1]' -H 'Origin:[$URL2]'

说明: [$URL1]为需要请求的OSS资源链接。 [$URL2]为您配置跨域规则的来源地址。

系统显示类似如下。

4.png

a.如果出现返回结果存在一个跨域头且符合您配置的跨域头,那么出现跨域问题,可能是由于缓存问题导致,请参考以下解决方法:

您第一次请求没有触发跨域,返回的数据被本地缓存,而第二次触发跨域的请求没有请求服务器端,而是直接获取本地的缓存,导致跨域校验失败。

在浏览器页面单击Ctrl+F5,清理浏览器缓存,然后在测试跨域问题是否还存在。

您将该OSS资源跨域配置的缓存时间设置为0,这样可避免该资源在客户端进行缓存,每次请求都会重新在服务器端获取鉴权信息。

说明:您可以在上传文件时设置文件的cache-control为no-cache,已经上传的文件可以使用ossutil工具进行更改,如何设置cache-control请参见set-meta(管理文件元信息)

使用https://help.aliyun.com/document_detail/40183.htm?spm=a2c4g.11186623.0.0.7cac376cn2iMxC链接地址),这样CDN所有请求都会返回CORS头。

b.如果出现返回结果存在两个跨域头Respons Headers或者不符合您在OSS配置的跨域头,那么出现跨域问题,可能是由于使用了CDN加速OSS:

登录CDN控制台,临时取消CDN加速OSS,确认跨域问题不存在。

确认后,单击具体的域名,依次单击缓存配置>自定义HTTP响应头。

根据您的实际情况,设定自定义HTTP响应头,详情请参见CDN如何通过HTTP头配置跨域资源共享(CORS)

6、若跨域问题还是没有解决,请参见OSS跨域资源共享(CORS)出现的常见错误及解决方案进一步排查处理。

cattt 评论 0

由于删除Bucket后数据不可恢复,请您确保数据备份完成后,删除该Bucket下的所有文件(Object)、碎片(Part)以及Livechannel,再次操作删除Bucket,请参见以下操作删除Bucket:

检查Bucket中是否存在未删除的文件和碎片

如何删除的Bucket中不存在文件和碎片,具体操作如下:

1、登录OSS管理控制台。

2、单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。

3、在文件管理页签下,查看下是否存在文件。

a.如果存在,可以选择一个或多个文件,选择批量操作>删除,删除文件。或者通过工具ossuti删除,详情请参见使用ossutil工具删除Bucket、文件和碎片。

b.如果不存在,请继续执行下一步。

4、单击碎片管理,在碎片管理页面,删除碎片文件。

a.如果要删除该存储空间所有的碎片文件,单击删除所有。

b.如果要删除部分碎片文件,选择或搜索碎片文件,然后单击删除。

5、使用ossutil工具,执行以下命令,删除Bucket。如果还是存在Bucket不为空的报错,请继续执行下一步。

./ossutil rm oss://[$Bucket_Name] -bar

说明:[$Bucket_Name]为Bucket名称。

检查是否存在历史版本Object

版本控制是针对存储空间(Bucket)级别的数据保护功能。开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。在错误覆盖或者删除文件(Object)后,您可以将Bucket中存储的Object恢复至任意时刻的历史版本。但是通过控制台和工具查看(不指定版本号的查询)只显示最新数据,历史版本不显示。删除历史版本Object的方法如下:

  • 在OSS管理控制台删除

1、登录OSS管理控制台。

2、单击Bucket列表,然后单击目标Bucket名称。

3、在左侧导航栏,选择冗余与容错>版本控制,检查是否开启了版本控制功能。如果开启了版本控制功能,请执行以下操作,删除历史版本Object。

a.在Bucket管理页面,单击文件管理。

b.找到不再需要的历史版本Object,单击右侧的彻底删除。您也可以批量选中待删除的历史版本,单击批量操作>彻底删除。

c.单击确定。

4、执行完以上操作后,可以尝试删除Bucket,测试是否可以删除成功,如果还是报错,请执行排查Bucket中是否存在LiveChannel。

  • 使用ossutil工具查看

1、通过执行以下命令查看是否开启版本控制功能,详情请参见bucket-versioning(版本控制)。

./ossutil bucket-versioning --method get oss://[$Bucket_Name]

系统显示类似如下。

bucket versioning status:Enabled

如果开启了版本控制功能,则返回结果为Enabled,可执行以下命令,删除Bucket中的历史版本Object数据。

./ossutil rm oss://[$Bucket_Name]/ --all-versions -r

系统显示类似如下。

1.png

如果未开启版本控制功能,则返回结果为Disable。

执行完以上操作后,可以尝试删除Bucket,测试是否可以删除成功,如果还是报错,请执行排查Bucket中是否存在LiveChannel。

排查Bucket中是否存在LiveChannel

Bucket的LiveChannel查看和删除暂不支持通过工具和控制台操作,可以使用接口或者是SDK来实现操作,请参见DeleteLiveChannel,删除指定的LiveChannel。示例代码如下:

import java.util.List;
import com.alibaba.fastjson.JSON;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CreateLiveChannelRequest;
import com.aliyun.oss.model.CreateLiveChannelResult;
import com.aliyun.oss.model.ListLiveChannelsRequest;
import com.aliyun.oss.model.LiveChannelGenericRequest;
import com.aliyun.oss.model.LiveChannelListing;
import com.aliyun.oss.model.LiveChannelStatus;
import com.aliyun.oss.model.LiveChannelTarget;
import com.aliyun.oss.model.LiveChannel;

public class DeleteLiveChannel {
     private static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
     // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。
     // 强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com,创建RAM账号。
     private static String accessKeyId = "xx";
     private static String accessKeySecret = "xx";
     private static String bucketName = "bucktname";
    
    public static void createLiveChannel() {

        // 创建OSSClient实例。
        String liveChannelName = "liveChannelName1";
        OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        CreateLiveChannelRequest request = new CreateLiveChannelRequest(bucketName,
                liveChannelName, "desc", LiveChannelStatus.Enabled, new LiveChannelTarget());
        CreateLiveChannelResult result = oss.createLiveChannel(request);

        //获取推流地址。
        List<String> publishUrls = result.getPublishUrls();
        for (String item : publishUrls) {
            System.out.println(item);
        }

        //获取播放地址。
        List<String> playUrls = result.getPlayUrls();
        for (String item : playUrls) {
            System.out.println(item);
        }

        oss.shutdown();
    }
    public static void listLiveChannels() {
       

        // 创建OSSClient实例。
        OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        ListLiveChannelsRequest request = new ListLiveChannelsRequest(bucketName);
        LiveChannelListing liveChannelListing = oss.listLiveChannels(request);
        List<LiveChannel> list = liveChannelListing.getLiveChannels();
        for(LiveChannel i:list){
            deleteLiveChannel(i.getName());
        }
        oss.shutdown();
    }
    public static void deleteLiveChannel(String liveChannelName) {

        // 创建OSSClient实例。
        OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        LiveChannelGenericRequest request = new LiveChannelGenericRequest(bucketName, liveChannelName);
        System.out.println("Delete liveChanne "+liveChannelName+" Done");
        try {
            oss.deleteLiveChannel(request);
        } catch (OSSException ex) {
            ex.printStackTrace();
        } catch (ClientException ex) {
            ex.printStackTrace();
        } finally {
            oss.shutdown();
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DeleteLiveChannel.listLiveChannels();
    }

}
cattt 评论 0

1

回答

云上猫猫 2022-01-18 1162浏览量 回答数 1

您可以提交工单申请取消已购买的资源包,但必须同时符合以下所有条件:

  • 该资源包未使用。

  • 该资源包新购不足5天。

  • 该资源包不是通过升级或续费购买的。

cattt 评论 0

1、登录对象存储OSS控制台

2、在概览页的基础数据区域,从存储用量下拉列表中选择ECS快照存储即可查看ECS快照容量。

cattt 评论 0

使用ECS快照存储服务,有两种付费方式:

说明 购买存储包前请您注意: 1、请认真核对您资源所在的地域,不要跨地域购买存储包,不同地域的存储包不通用,会导致您资源用量抵扣不成功。

2、同地域的存储包,在同一时间段内不能重复购买。如果当前时间段内已有存储包,您需要在开通时间选择中指定新存储包开始生效时间,应晚于当前存储包到期时间(该场景适用于存储包续费)。

  • 按量付费:按快照实际大小进行计量计费,每小时进行扣费。更多信息请参考快照计费
cattt 评论 0

公告

阿里云内容设计团队出没于此,一大波优质阿里云相关内容随时袭来~

展开