基于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 ...
随机推荐
- 在图片上加字符-base64转图片-图片转base64
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 代码空间项目 -- InstantiationException的异常
java.lang.InstantiationException实例化异常.当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常. 这次项目中查询type时 ...
- 【C++基础学习】成员对象与对象数组
第一部分 对象成员与对象数组 从一个简单的例子开始说起,首先定义一个Coordinate的类,里面有两个公有的成员变量m_iX和m_iY,分别代表横坐标和纵坐标. 接下来,定义一个对象数组cood和一 ...
- appium():PageObject&PageFactory
Appium Java client has facilities which components to Page Object design pattern and Selenium PageFa ...
- KeyChain相关参数的说明
#pragma mark- 密钥类型 //密钥类型键 //CFTypeRef kSecClass // //值 //CFTypeRef kSecClassGenericPassword ...
- 动态负载均衡(Nginx+Consul+UpSync)环境搭建
首先 安装好 Consul upsync 然后: 1.配置安装Nginx 需要做配置,包括分组之类的,创建目录,有些插件是需要存放在这些目录的 groupadd nginx useradd -g ng ...
- BZOJ2006:超级钢琴(ST表+堆求前K大区间和)
Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度 ...
- webpack安装后package-lock.json 的作用
这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新. 避免了依赖升级和当前项目不兼容!
- TX2上yolov3精度和速度优化方向
速度优化的方向: 1.减少输入图片的尺寸, 但是相应的准确率可能会有所下降2.优化darknet工程源代码(去掉一些不必要的运算量或者优化运算过程)3.剪枝和量化yolov3网络(压缩模型---> ...
- kvm详细介绍
KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...