基于php的AWS存储服务
近几天用到了aws的s3存储服务,公司内部的完全兼容aws并对其进行了封装,之前也用过,现在把经验总结一下。
既然要用,首先需要安装sdk,下边提供了几种安装方法
方法一:使用composer安装
curl -sS https://getcomposer.org/installer | php
php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
<?php
require '/opt/s3/vendor/autoload.php'
?>
curl -sS https://getcomposer.org/installer | php
该命令完成之后会生成composer.phar文件
2.在/opt/s3下创建composer.json,添加如下代码
{
"require": {
"aws/aws-sdk-php": "2.*" //此处如果添加2.*版本如是填,如添加3.*版本,改成3.*即可
}
}
3.安装
php composer.phar install
4.在代码中包含进去
<?php
require '/opt/s3/vendor/autoload.php'
?>
<?php require '/opt/s3/aws.phar'; ?>
方法四:使用zip文件安装
下载.zip文件,解压到/opt/s3目录
<?php require '/opt/s3/aws-autoloader.php'; ?>
安装完成之后,只是基础工作,然后在代码使用如下,本人用的yii框架
<?php
namespace app\commands;
require '/opt/s3/vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException; class TestController extends Controller
{
public function actionBucket()
{
$options = [
'region' => 'bjcc', //此处填区域
'version' => '2006-03-01',
'signature_version' => 'v4',
'use_path_style_endpoint' => true,
'endpoint' => 'http://zeppelin-gateway-host', //此处填文件存储在哪里的地址
'credentials' => [
'key' => '**********',
'secret' => '**************' //填上申请的key和secret
]
]; $s3 = new S3Client($options);
$result = $s3->putObject([
'Bucket' => 'test',
'Key' => 'yang',
'Body' => 'hello'
]);
print_r($result); }
基于yii框架的使用:(本人的项目用的yii框架)
进入到代码目录 比如 /data/www/xxx,这个目录自带vendor目录,都是第三方库,直接再这里执行方法一,完成之后会在里边生成aws的目录,然后调用直接使用即可。
可以写个通用类:
常用的api
1.获取objecturl
$url = $s3Client->getObjectUrl('my-bucket', 'my-key');
2.创建bucket
$result = $s3Client->createBucket(array('Bucket' => $testbk));
3.put object
$result = $s3Client->putObject(array(
'Bucket' => $testbk,
'Key' => $testkey,
'Body' => 'hello'
));
4.get Object
$result = $s3Client->getObject(array(
'Bucket' => $testbk,
'Key' => $testkey
));
5.delete object
$result = $s3Client->deleteObject(array(
'Bucket' => $testbk,
'Key' => $testkey
));
6.delete bucket
$result = $s3Client->deleteBucket(array(
'Bucket' => $testbk,
));
7.上传
$uploader = new MultipartUploader($s3, self::PATH.$n, [
'bucket' => BT,
'key' => $n
]);
try {
$result = $uploader->upload();
} catch (MultipartUploadException $e) {
echo $e->getMessage();
}
官网参考文档:https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html
http://easydoc.qihoo.net/doc?project=1d1b49835cbb989968925b2553243a0a&doc=700b7f4cde1360f7e24a9868ad517ca0&config=title_menu_toc
基于php的AWS存储服务的更多相关文章
- SpringBoot 搭建基于 MinIO 的高性能存储服务
1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储.它与Amazon S3云存储服务兼容.使用MinIO构建用于机器学习,分析和应用程序数据工作负载的 ...
- AWS 存储服务(三)
目录 AWS S3 业务场景 挑战 解决方案 S3的好处 S3 属性 存储桶 Buckets 对象 Object S3 特性 S3 操作 可用性和持久性 一致性 S3 定价策略 S3高级功能 存储级别 ...
- 搭建基于 HDFS 碎片文件存储服务
安装 JDK HDFS 依赖 Java 环境,这里我们使用 yum 安装 JDK 8,在终端中键入如下命令: yum -y install java-1.8.0-openjdk* 使用如下命令查看下 ...
- 玩转Windows Azure存储服务——网盘
存储服务是除了计算服务之外最重要的云服务之一.说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工 ...
- 如何使用AWS和Azure的配置存储服务保存读取配置
原文:Want to yank configuration values from your .NET Core apps? 作者:pauljwheeler 译文:https://www.cnblog ...
- 服务注册发现consul之四: 分布式锁之四:基于Consul的KV存储和分布式信号量实现分布式锁
一.基于key/value实现 我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问.这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如: ...
- openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 四
openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...
- openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三
openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...
- openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 二
openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...
随机推荐
- 解决express video 手机无法播放的问题
http://stackoverflow.com/questions/24976123/streaming-a-video-file-to-an-html5-video-player-with-nod ...
- 获取app-package和app-activity的值
方法一 原文链接:http://mp.weixin.qq.com/s/KTkfmibSoaGOmDazJmZ8Sw 利用appium图形界面和已有的apk文件获取package和activity. 点 ...
- view 视图生命周期
layout控制当前view的布局,onlayout控制子view的布局,容器ui会用到 onIntercept在父亲这执行拦截,子视图可通过requestDisallow请求父亲不要拦截
- SDUT OJ 进制转换
进制转换 Time Limit: 1000MS Memory limit: 65536K 题目描述 输入一个十进制数N,将它转换成R进制数输出. 输入 输入数据包含多个测试实例,每个测试实例包含两个整 ...
- HTML5 Canvas 时钟
1. [图片] QQ截图20120712130049.png 2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" &g ...
- SQL server 备份/恢复/压缩 进度查询
第一步,用 sp_who2 查出备份的sid(或在窗口中的连接属性中看) exec sp_who2 第二步,用以下查询获得运行情况(看 percent_complete列) SELECT sessio ...
- Junit单元测试类
/*package zxdc.web; import static org.junit.Assert.*; import java.io.IOException; import javax.servl ...
- 23.java方法的深入
深入: public class MethodTest05{ public static void main(String[] args){ int i=m1(ture); System.out.pr ...
- shell脚本自动部署nignx反向代理及web服务器,共享存储
#!/bin/bash systemctl status nginx var=$? ] then yum install epel-release -y ] then echo "epel库 ...
- 八大排序算法java代码
1.冒泡排序 public static void main(String[] args) { int[] arr = {1,4,2,9,5,7,6}; System.out.println(&quo ...