近几天用到了aws的s3存储服务,公司内部的完全兼容aws并对其进行了封装,之前也用过,现在把经验总结一下。

既然要用,首先需要安装sdk,下边提供了几种安装方法

方法一:使用composer安装

1.先建立个安装目录,/opt/s3,本程序运行的实际工作目录是项目路径 /data/www/XXX,运行的其实是该目录下的vendor
然后进到该目录 ,下载并安装composer , 因是在linux下,执行
curl -sS https://getcomposer.org/installer | php
如果是windows,参考官网安装
 
2.键入Composer命令,安装开发工具包的最新稳定版本
php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
 
3.在代码中包含进去
<?php
require '/opt/s3/vendor/autoload.php'
?>
安装完成之后,会自动在/opt/s3目录下生成vendor目录
 
方法二:也是使用composer安装
1.下载并安装composer  ,在自己打算安装的目录,本文都以/opt/s3为例
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'
?>
 
方法三:使用打包的phar进行安装
下载打包的phar 包含到代码中
<?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存储服务的更多相关文章

  1. SpringBoot 搭建基于 MinIO 的高性能存储服务

    1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储.它与Amazon S3云存储服务兼容.使用MinIO构建用于机器学习,分析和应用程序数据工作负载的 ...

  2. AWS 存储服务(三)

    目录 AWS S3 业务场景 挑战 解决方案 S3的好处 S3 属性 存储桶 Buckets 对象 Object S3 特性 S3 操作 可用性和持久性 一致性 S3 定价策略 S3高级功能 存储级别 ...

  3. 搭建基于 HDFS 碎片文件存储服务

    安装 JDK HDFS 依赖 Java 环境,这里我们使用 yum 安装 JDK 8,在终端中键入如下命令: yum -y install java-1.8.0-openjdk* 使用如下命令查看下 ...

  4. 玩转Windows Azure存储服务——网盘

    存储服务是除了计算服务之外最重要的云服务之一.说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工 ...

  5. 如何使用AWS和Azure的配置存储服务保存读取配置

    原文:Want to yank configuration values from your .NET Core apps? 作者:pauljwheeler 译文:https://www.cnblog ...

  6. 服务注册发现consul之四: 分布式锁之四:基于Consul的KV存储和分布式信号量实现分布式锁

    一.基于key/value实现 我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问.这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如: ...

  7. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 四

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  8. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

  9. openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 二

    openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...

随机推荐

  1. 在图片上加字符-base64转图片-图片转base64

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 代码空间项目 -- InstantiationException的异常

    java.lang.InstantiationException实例化异常.当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常. 这次项目中查询type时 ...

  3. 【C++基础学习】成员对象与对象数组

    第一部分 对象成员与对象数组 从一个简单的例子开始说起,首先定义一个Coordinate的类,里面有两个公有的成员变量m_iX和m_iY,分别代表横坐标和纵坐标. 接下来,定义一个对象数组cood和一 ...

  4. appium():PageObject&PageFactory

    Appium Java client has facilities which components to Page Object design pattern and Selenium PageFa ...

  5. KeyChain相关参数的说明

    #pragma mark- 密钥类型 //密钥类型键 //CFTypeRef kSecClass // //值 //CFTypeRef kSecClassGenericPassword         ...

  6. 动态负载均衡(Nginx+Consul+UpSync)环境搭建

    首先 安装好 Consul upsync 然后: 1.配置安装Nginx 需要做配置,包括分组之类的,创建目录,有些插件是需要存放在这些目录的 groupadd nginx useradd -g ng ...

  7. BZOJ2006:超级钢琴(ST表+堆求前K大区间和)

    Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度 ...

  8. webpack安装后package-lock.json 的作用

    这个文件主要功能是确定当前安装的包的依赖,以便后续重新安装的时候生成相同的依赖,而忽略项目开发过程中有些依赖已经发生的更新. 避免了依赖升级和当前项目不兼容!

  9. TX2上yolov3精度和速度优化方向

    速度优化的方向: 1.减少输入图片的尺寸, 但是相应的准确率可能会有所下降2.优化darknet工程源代码(去掉一些不必要的运算量或者优化运算过程)3.剪枝和量化yolov3网络(压缩模型---> ...

  10. kvm详细介绍

    KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...