近几天用到了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. [通信]Linux User层和Kernel层常用的通信方式

    转自:https://bbs.csdn.net/topics/390991551?page=1 netlink:https://blog.csdn.net/stone8761/article/deta ...

  2. EF 编程经验

    http://blog.csdn.net/itmaxin/article/details/47662151 这篇文章里有一下东西可以参考,但是弟二个方法明显是不可行的,因为我做了实验直接attach ...

  3. Intellij IDEA 修改代码后自动编译更新

    Intellij IDEA 一些不为人知的技巧 问题描述: Intellij IDEA 调试修改时,改动页面和 java 文件后,无法立刻看到变化,需要手动重启服务. 问题原因: 在 IDEA tom ...

  4. 管中窥Vue

    博客文章链接:管中窥Vue Vue和Angular.React.js的相同点和不同点? 与React的相同: 都使用了Virtual DOM 提供了响应式和组件化的视图组件 将注意力集中保持在核心库, ...

  5. Gym - 100283F F. Bakkar In The Army —— 二分

    题目链接:http://codeforces.com/gym/100283/problem/F F. Bakkar In The Army time limit per test 2 seconds ...

  6. 步入C编程的第一天

    我想学ruby以后开发网站,但ruby是高级语言,隐藏了许多底层的东西,因此先熟悉c语言 首先c程序的文件名是以.c结尾的 c程序的格式: 第一行#include<stdio.h> #是一 ...

  7. Notepad++安装xml插件

    环境: win7 64位 Notepad++7.3.3 原生的Notepad++不自带xml文件的插件,所以在显示xml文件时并不分行(如下图所示),对于用户编辑,查看的操作而言,并不友好,所以需要安 ...

  8. 「LuoguP2420」 让我们异或吧(树上前缀和

    P2420 让我们异或吧-洛谷 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor ...

  9. hibernate学习二 基本用法

    一  映射文件User.hbm.xml 定义了持久化类实例是如何存储和加载的,这个文件定义了持久化类和表的映射. 根据映射文件,Hibernate可以生成足够的信息以产生所有的SQL语句,也就是类的实 ...

  10. 机器学习之PCA主成分分析

    前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的 信息较多.在很 ...