从AWS S3换成阿里云OSS存储所踩的坑

本文记录了将业务从AWS S3迁移到阿里云OSS过程中遇到的问题,包括开通服务、使用OSSBrowser验证、PHP SDK集成、代码移植中的常见错误及其解决方案,强调了两者接口设计和返回值的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因业务需要,AWS S3 不能使用了,要换成阿里云OSS存储和下载。简单作以记录,以作备忘。

1.参照https://help.aliyun.com/product/31815.html?spm=5176.2020520105.146.d500.30285e77DhksTQ 开通OSS服务并创建存储空间,得到访问的域名endpoint、AccessKeyID和AccessKeySecret;

2. 下载PC端ossbrowser工具,验证bucket建立、文件创建、上传和下载等基本操作,确保第1步正常;基于aws s3的大黄鸭CyberDuck访问阿里云oss bucket,总是报错,应该是两家工具不兼容;

3. 代码移植

根据不同的开发语言,到https://help.aliyun.com/product/31815.html?spm=5176.2020520105.146.d500.30285e77DhksTQ的SDK参考中打开对应语言的页面,如本例中是php的,页面如https://help.aliyun.com/document_detail/32099.html?spm=5176.product31815.6.758.u4tuGR

3.a  下载最新的php sdk https://github.com/aliyun/aliyun-oss-php-sdk?spm=5176.doc32099.2.4.mSN0jX, 目前是2.2.4

3.b   构建本地php开发环境,修改SDK中sample下的Config.php,即第1步中的域名、ak/sk, 然后运行 SDK中 samples下的RunAll.php 即可看到各case都能正常运行

3.c  根据示例程序了解OSS API, 可以是这里的例子 https://help.aliyun.com/document_detail/32101.html?spm=5176.doc32100.6.760.hd9tYF, 也可以是SDK中samples下的各个*.php,使用最多的是Object.php中的几个接口。网页中的一些接口描述尤其是返回值与samples中的有出入,

### 配置 WVP-GB28181-Pro 与云存储集成 #### 一、理解需求背景 WVP-GB28181-Pro 是一个用于高效集成 GB28181 协议的 jar 包,适用于视频监控系统、智能安防系统以及物联网设备管理等多种场景[^1]。为了增强数据的安全性和可访问性,通常会考虑将其与云存储服务相结合。 #### 二、选择合适的云存储提供商 在决定如何配置之前,需先选定一家可靠的云存储服务商。常见的选项包括阿里云 OSS (Object Storage Service),腾讯云 COS (Cloud Object Storage) 或者 AWS S3 (Simple Storage Service) 等。这些平台都提供了良好的 API 支持和服务质量保障。 #### 三、获取必要的API密钥 无论是哪家供应商,在开始前都需要创建账户并获得相应的 Access Key ID 和 Secret Access Key 。这两项信息对于后续操作至关重要,因为它们是用来验证身份并对云端资源执行读写权限控制的关键凭证。 #### 四、修改应用程序代码以支持上传至云存储 假设已经选择了阿里云作为目标云存储解决方案,则可以在 Java 应用程序中引入官方 SDK 来简化开发过程: ```java // 导入所需库 import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; public class CloudStorageIntegration { public static void main(String[] args){ String endpoint = "your-endpoint"; // 替换成实际区域对应的Endpoint String accessKeyId = "your-access-key-id"; String accessKeySecret = "your-access-key-secret"; String bucketName = "your-bucket-name"; try{ // 创建OSS客户端实例 OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId ,accessKeySecret); // 设置要保存到的目标路径和名称 String objectName="example.txt"; // 将本地文件上传到指定位置 File file=new File("/path/to/local/file"); PutObjectRequest putObjectRequest= new PutObjectRequest(bucketName,objectName,file); ossClient.putObject(putObjectRequest ); System.out.println("Upload succeeded."); // 关闭client ossClient.shutdown(); }catch(Exception e){ e.printStackTrace(); } } } ``` 这段代码展示了怎样利用阿里云提供的Java SDK来完成基本的对象存储功能——即把一个本地存在的文本文件上载到了远端服务器上的特定目录里去[^4]。 #### 五、调整 WVP-GB28181-Pro 参数设置 针对具体的业务逻辑,可能还需要进一步定制化参数设定。比如当涉及到录像资料自动备份时,可以参照如下方式编辑 `application.properties` 文件中的相关条目: ```properties # application.properties 中的部分配置示例 spring.cloud.alicloud.oss.endpoint=${endpoint} spring.cloud.alicloud.oss.bucket=${bucketName} spring.cloud.alicloud.credentials.access-key=${accessKeyId} spring.cloud.alicloud.credentials.secret-key=${accessKeySecret} video.record.auto-upload=true # 开启录制完成后立即上传开关 video.upload.path-pattern=/record/{year}/{month}/{day}/ # 定义上传后的相对路径模板 ``` 以上设置确保了每当有新的录音片段生成之后就会被及时同步到所选的云盘空间内,并按照日期分层存放以便日后检索查阅方便[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值