本文介绍使用OSS Media-C SDK的常见问题及解决方法。

OSS Media-C SDK和OSS C SDK有怎样的联系?

OSS Media-C SDK依赖于OSS C SDK,OSS Media-C SDK中的上传和下载等功能是通过调用OSS C SDK的接口实现的。

OSS Media-C SDK是否支持Windows?

目前还不支持。

是否支持追加写文件?

支持,调用oss_media_file_open时使用“a”模式,然后通过调用oss_media_file_write接口实现追加写。

什么是role arn?如何获取role arn?

role arn表示需要扮演角色的ID。

您可以在RAM访问控制管理控制台,选择RAM角色管理,然后单击已经创建的角色名称。在基本信息区域中查看ARN,其值格式为acs:ram::xxxx:role/yyyyy。如果还没有已创建的角色,需要在角色管理页面创建一个新的用户角色和其他相应角色,并赋予新的用户角色AliyunSTSAssumeRoleAccess权限,更多信息,请参见RAM的文档

如何运行sample?

修改sample/config.c文件,赋予AccessKey ID、AccessKey Secret、Bucket等值,完成编译后在bin目录下可以找到sample的可执行文件。

运行sample时报错error:Couldn't resolve host name [code=-990, message=HttpIoError]

修改sample/config.c文件,配置相关参数值,然后重新编译即可。

客户端和服务端的AccessKey ID,AccessKey Secret,token配置之间的差异和注意点?

  • 服务端只需要配置AccessKey ID和AccessKey Secret,这两个值可以是阿里云账号的AccessKey,也可以是阿里云账号生成的RAM用户的AccessKey。
  • 客户端有两种配置方式:第一种是和服务端一样,只配置阿里云账号或者RAM用户的AccessKey ID、AccessKey Secret;第二种是配置AccessKey ID、AccessKey Secret和token三个值,这三个值都是服务端通过oss_media_get_token或者oss_media_get_token_from_policy获取的临时AccessKey和token,该AccessKey和token有时间期限,超过有效期后,不能再次使用。

执行sample获取token的时候出现以下错误http_code=500, error_code=GetSTSTokenError, error_message=Internal Error

  • 原因:安装的libcurl不支持HTTPS协议,导致无法访问STS服务。具体过程是机器上没有安装openssl-devel等SSL的开发包,在编译libcurl时找不到SSL,libcurl会自动禁止HTTPS协议,导致编译出来的libcurl库不支持HTTPS,最终访问STS失败。
  • 解决办法:先安装openssl-devel等SSL开发包,然后重新安装libcurl。安装libcurl时执行了./configure后,检查并确认最后一行Protocols里已包含HTTPS。