浅谈
本章介绍一些基本的 oss 的咨询内容,问题是一直在补充的,不定期的进行更新;
问:cdn 结合 oss,oss 地址被暴露后如何处理
答:
- 暴露后无法组织别人访问你,先将 bucket private 设置为私有禁止读写。
- 在阿里 cdn 上开启私有回源 oss 功能,让所有请求只能通过 cdn 回源。
- cdn 上开启鉴权,所有访问必须携带授权的合法秘钥。
问:跨国访问超过 1s 优化建议?
答:
- 在国外北美或者亚太 region 新建一个海外的 bucket 。
- 如果方便的情况下,可以购买一台和 bucket 同 region 的 ECS 走内网上传,也会提升性能。
- bucket 初始化的代码把 crc64 关掉,也可以优化上传的性能。
- = oss2.Bucket(auth, 'endpoint', 'bucket',enable_crc=False)
问:oss bucket 怎么提高数量?
答:
- oss bucket 默认是 30 个,合理的利用 bucket preifx 和 RAM 策略可以给每一个用户配置一个单独的 prefix 即可,这样一劳永逸。
- 如果特殊业务需求提供工单到阿里云再分析处理。
问:ossutil64 有限速功能吗?
答:
- 可以通过两个参数控制下多文件的上传并发
-jobs
-parallel
- 限速功能是一个后期规划。
问:访问 OSS 比较慢有什么优化建议?
答:
- 使用内网地址访问 OSS
- CDN + OSS 的模式服务
- 大文件使用断点上传、下载(既能分片还能断点)
问:文件被删除怎么查
答:最好先开通 oss log 功能后自己查询,如果之前没有开启 log ,很难查到,可以尝试提交工单找到阿里云进行处理。
问:文件进行压缩的条件
答:
- Conetnt-Type 必须是以下几种之一:
“text/cache-manifest” “text/xml” “text/plain” “text/css” “application/javascript” “application/x-javascript” “application/rss+xml” - 客户端发起的请求中必须要含有 "content-Encoding:gzip" 头才可以。
问:事件通知不生效
- 如果是控制台上传必须要配置 postobject 通知类型,最好配置全部类型的事件通知,一劳永逸。
- 确认是否上传成功,标准是 oss 返回的上传状态码是 200 ,并且 response header 中必须有 requestID。
- 确认 oss 设置的 mns 通知队列或者 topic 是否正常,有没有写错,是否可以正常收到消息。
- 客户端的通知地址网络、应用是否正常。
- 设置的触发 prefix 是否正确。
问:You have no right to access this object because of bucket acl
答:
- OSS 私有的,用户没权限访问。
- 用户访问的文件是归档的没有解冻。
- OSS 私有的,用户访问携带的鉴权信息不对。
- 用户请求 OSS 是用子账号请求,子账号的策略不够。
问:浏览器播放视频有声音没视频,本地播放正常
答:
如果是本地播放起可以播放可以证明 oss 的文件没问题,就是浏览器兼容问题,可以通过这个工具检测一下 tool
问:InvalidPolicyDocument
答:用户的请求中出现一个非法操作参数 “Content-type” 请检查用户是否在策略中配置了。
问:本地计算的 MD5 源文件和 Content-MD5 一致 但是报 InvalidDigest
答:
- OSS 的接收到的 MD5 value 值必须是大写的
- OSS md5 要求是 128bit 的值然后经过 base64 编码得到 24 位。
- Content-MD5 要大写。
问:Header 签名中如何添加过期时间
答:OSS Header 签名的方式不支持定义过期时间。
问:Android-SDK 目前支持 Android9.0 ?
答:支持
问:OSS 生命周期生效时间
答:执行时间为不大于用户设置过期 Days + 2天 ,举例 ,当前上传了一个 文件 ,last-modify 是 11 19 号,12:00,保留时间 30 天 执行计划任务的时间就是,11 19 12:00 + 30 天 + 2天 = 12 21 号会执行删除(不超过这个时间点)
问:批量删除 OSS 的文件
答:
- 第一种,如果文件在不同的 prefix 下,prefix 彼此同级,可以多次调用 ossutil 去删除。
- 第二种,通过 SDK 删除,在程序中通过 thread 多线程调用 delete ,传入不通的 prefix 删除,可以参考。 删除
问:存在 OSS 的视频文件通过浏览器不能播放
答:
- 先把文件下载本地看是否能播放,本地可以播放,放到浏览器不行那就说明视频的编码可能出现问题浏览器不能解码导致。
- 可以用 ffprobe 或者 ffplay 播放一起看看有什么异常信息,如下视频出现 TNS 错误,浏览器无法解码播放。
问:The bucket you are attempting to access must be addressed using the specified endpoint.Please send all future requests to this endpoint.
答:
- 访问 CDN 的账号和 bucket 不是一个。
- 客户访问的 bucket 和 endpoint 写错。
- 客户通过域名访问,域名没有和 OSS 绑定。
- OSS 通过 CDN 访问,回原到 OSS 没有加 host 头信息。
问:访问 OSS 发生 301 跳转
答:
- 先直接固定 OSS 访问,使用 https 测试,如果发生了 301 ,再继续检查下自己的回原设置,如果设置匹配前缀后者其他目录规则的,就触发了 301 跳转,属于正常现象
- 如果客户没有设置 301 ,可以直接切成 https ,然后抓包看下是否被劫持了。
问:OSS 上传后没有回调没通知
答:
- 事件通知 10 分钟后才能生效;
- 控制台上传要配置 postobject 回调;
- 确认文件是否上传成功,只有返回 http.status==200 && requestID !=None 才算成功,其他并不保证是准确的判断;
- 如果以上都已经确认正常,那就是 mns 没有将消息发出去;
问:为什么 oss 的资源会自动加上 Content-Disposition
答:
- 由于网络安全的管理要求,所有存在 oss 的资源不能直接作为网页直接展示,必须要加上 Content-Disposition: attachment; filename={filename}
- 只有在 oss 绑定了自己备案的域名后才能在线展示出来。
绑定好域名后,oss 会自动将 Content-Disposition 去掉,不用手动操作。
问:阿里云oss browser上传文件如何跳过已经存在的。
答: 不支持
问:nginx proxy 到 OSS 异常
答:类似问题请检查下 OSS 控制台上,域名绑定是否已经关联了用户的域名,如果没有请绑定域名,否则访问会出现异常,或者用户将回源的 host 改为 OSS 的访问域名也可。