近几天用到了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. BNUOJ 34978 汉诺塔 (概率dp)

    题目分析:对于 i 个盘 , 须要移动多少步,取决于最大的盘子在哪个杆上.在C杆上,则最大的盘不须要移动,由于初始状态一定是满足盘由下到上盘子依次变小的,仅仅须要移动i - 1个盘.假设在A杆上,则首 ...

  2. ubuntu搜狗拼音安装

    1.官方下载deb 2.双击安装 3.终端im-config,选择fcitx 4.重启 5.输入法设置中add一下sougoupinyin

  3. jvm调试

    https://www.usenix.org/legacy/events/jvm01/full_papers/russell/russell_html/index.html

  4. Ubuntu 下安装Source Insight [转]

    本文转载自:http://blog.csdn.net/yunfeiyang62/article/details/46662633 安装Source Insight之前需要先安装Wine,然后用Wine ...

  5. HTML5 实现文件拖放上传

    1. [图片] 5375acf5gw1dusqsscfksj.jpg ​2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" ...

  6. iOS 键盘遮挡输入框万能解决方案(多个输入框)

    效果图如下: 思路分析: 代码: 知识点: 问题: 效果图如下: 思路分析: 当我们有很多输入框时,有时候键盘弹出来会遮挡着输入框.我们需要获取输入框和键盘相对于最外层视图的位置来判断是否遮挡,如果遮 ...

  7. codeforces 463C. Gargari and Bishops 解题报告

    题目链接:http://codeforces.com/contest/463/problem/C 题目意思:要在一个 n * n 大小的棋盘上放置两个bishop,bishop可以攻击的所有位置是包括 ...

  8. Java网络编程InetAddress类

    InetAddress用来代表IP地址.一个InetAdress的对象就代表着一个IP地址, getByName(String host):在给定主机名的情况下确定主机的 IP 地址,主机名可以是机器 ...

  9. Python: PS 滤镜--素描

    本文用 Python 实现 PS 滤镜中的素描特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/386 ...

  10. 光流 LK 金字塔

    文章转载自:https://blog.csdn.net/sgfmby1994/article/details/68489944 光流是图像亮度的运动信息描述,这种运动模式指的是由一个观察者(比如摄像头 ...