0

0

使用 S3 配置适用于 PHP 的 AWS 开发工具包

王林

王林

发布时间:2024-08-26 09:13:41

|

547人浏览过

|

来源于dev.to

转载

亚马逊网络服务(aws)是一个强大的平台,为开发人员和企业提供广泛的服务。在这些服务中,amazon simple storage service (s3) 是最受欢迎且使用最广泛的服务之一。要以编程方式与 s3 交互,您可以使用适用于 php 的 aws 开发工具包。在本文中,我们将指导您完成使用 s3 配置适用于 php 的 aws 开发工具包的过程。

使用 S3 配置适用于 PHP 的 AWS 开发工具包

先决条件

在我们开始之前,请确保您具备以下条件:

  • aws 账户
  • aws 访问密钥 id 和秘密访问密钥
  • php 5.6 或更高版本
  • 作曲家已安装

安装

要安装适用于 php 的 aws 开发工具包,您可以使用 composer。在终端中运行以下命令:

composer require aws/aws-sdk-php

此命令将在您的项目中安装最新版本的适用于 php 的 aws 开发工具包。

配置

安装 sdk 后,您需要使用您的 aws 访问密钥 id 和秘密访问密钥对其进行配置。您可以通过创建配置文件或设置环境变量来做到这一点。

立即学习PHP免费学习笔记(深入)”;

配置文件

在项目中创建一个名为 config.php 的新文件,并添加以下代码:

 'us-east-1',
    'version' => 'latest',
    'credentials' => [
        'key' => 'your_access_key_id',
        'secret' => 'your_secret_access_key',
    ]
]);

$s3client = $sdk->creates3();

将 your_access_key_id 和 your_secret_access_key 替换为您的实际 aws 访问密钥 id 和秘密访问密钥。

环境变量

或者,您可以将 aws access key id 和 secret access key 设置为环境变量:

export aws_access_key_id=your_access_key_id
export aws_secret_access_key=your_secret_access_key

然后,创建s3客户端如下:

 'us-east-1',
    'version' => 'latest',
]);

$s3client = $sdk->creates3();
准备好了解有关 aws 和 php 的更多信息了吗?查看我们关于 aws 配置 sso 和修复 laravel 权限被拒绝错误的其他文章。

用法

现在您已经使用 s3 配置了适用于 php 的 aws 开发工具包,您可以开始使用它与 s3 存储桶进行交互。以下是如何列出帐户中所有存储桶的示例:

$buckets = $s3client->listbuckets();
foreach ($buckets['buckets'] as $bucket) {
    echo $bucket['name'] . php_eol;
}

当然,这里有一些将适用于 php 的 aws 开发工具包与 s3 结合使用的其他示例和最佳实践。

上传文件

要将文件上传到s3存储桶,您可以使用putobject方法。这是一个例子:

MediPro网上书店系统
MediPro网上书店系统

基于PHP+MYSQL开发,除了网上书店必备的商品管理、配送支付管理、订单管理、会员分组、会员管理、查询统计和多项商品促销功能,还具有完整的文章、图文、下载、单页、广告发布等网站内容管理功能。系统具有静态HTML生成、UTF-8多语言支持、可视化模版引擎等技术特点,支持多频道调用不同模版和任意设置频道首页,适合建立各种规模的网上书店。系统具有以下主要功能模块: 网站参数设置 - 对网站的一些参数进

下载
$bucketname = 'my-bucket';
$keyname = 'my-file.txt';
$filepath = '/path/to/my-file.txt';

$result = $s3client->putobject([
    'bucket' => $bucketname,
    'key' => $keyname,
    'sourcefile' => $filepath,
]);

echo $result['objecturl'] . php_eol;

此代码会将位于 /path/to/my-file.txt 的文件上传到 my-bucket 存储桶,并打印上传文件的 url。

下载文件

要从 s3 存储桶下载文件,可以使用 getobject 方法。这是一个例子:

$bucketname = 'my-bucket';
$keyname = 'my-file.txt';
$filepath = '/path/to/downloaded-file.txt';

$result = $s3client->getobject([
    'bucket' => $bucketname,
    'key' => $keyname,
    'saveas' => $filepath,
]);

echo $result['contentlength'] . ' bytes downloaded.' . php_eol;

此代码将从 my-bucket 存储桶中下载带有 my-file.txt 密钥的文件,并将其保存到 /path/to/downloaded-file.txt。

列出对象

要列出s3存储桶中的对象,可以使用listobjects方法。这是一个例子:

$bucketname = 'my-bucket';

$result = $s3client->listobjects([
    'bucket' => $bucketname,
]);

foreach ($result['contents'] as $object) {
    echo $object['key'] . php_eol;
}

此代码将列出 my-bucket 存储桶中的所有对象并打印它们的密钥。

最佳实践 - aws sdk + php + s3

以下是将适用于 php 的 aws 开发工具包与 s3 结合使用时需要记住的一些最佳实践:

  • 使用 iam 角色和策略来管理对 s3 资源的访问。
  • 使用版本控制来保留对象的多个版本并防止意外删除。
  • 使用生命周期策略自动管理对象的存储和保留。
  • 使用传输加速来提高上传和下载的性能。
  • 使用服务器端加密来保护您的静态数据。
  • 使用事件通知根据 s3 对象的更改触发操作。

当然,这里有一些关于在 laravel 中使用 aws sdk for php 和 s3 的其他技巧。

将适用于 php 的 aws 开发工具包与 laravel 结合使用

laravel 内置了对 aws sdk for php 的支持,这使得您可以在 laravel 应用程序中轻松使用 s3。以下是在 laravel 中使用 sdk 的一些技巧:

  • 通过 composer 安装适用于 php 的 aws 开发工具包:
composer require aws/aws-sdk-php
  • 在 .env 文件中配置您的 aws 凭证:
aws_access_key_id=your_access_key_id
aws_secret_access_key=your_secret_access_key
aws_default_region=your_region
  • 使用 storage 外观与 s3 交互:
use illuminate\support\facades\storage;

// upload a file
storage::disk('s3')->put('my-file.txt', file_get_contents('/path/to/my-file.txt'));

// download a file
storage::disk('s3')->download('my-file.txt', '/path/to/downloaded-file.txt');

// list the objects in a bucket
$objects = storage::disk('s3')->listcontents('my-bucket');

foreach ($objects as $object) {
    echo $object['path'] . php_eol;
}
  • 使用 laravel 的 flysystem 适配器来自定义 storage facade 的行为:
use illuminate\support\serviceprovider;
use league\flysystem\awss3v3\awss3v3adapter;
use aws\s3\s3client;

class s3serviceprovider extends serviceprovider
{
    public function register()
    {
        $this->app->singleton('filesystems.disks.s3', function ($app) {
            return new awss3v3adapter(
                new s3client([
                    'region' => config('filesystems.disks.s3.region'),
                    'version' => 'latest',
                    'credentials' => [
                        'key' => config('filesystems.disks.s3.key'),
                        'secret' => config('filesystems.disks.s3.secret'),
                    ],
                ]),
                config('filesystems.disks.s3.bucket')
            );
        });
    }
}
  • 使用laravel的队列系统异步执行s3操作:
use Illuminate\Support\Facades\Storage;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class UploadFile implements ShouldQueue
{
    use InteractsWithQueue;

    protected $filePath;

    public function __construct($filePath)
    {
        $this->filePath = $filePath;
    }

    public function handle()
    {
        Storage::disk('s3')->put('my-file.txt', file_get_contents($this->filePath));
    }
}

最佳实践 - aws sdk + php + laravel

在 laravel 中将适用于 php 的 aws 开发工具包与 s3 结合使用时,请记住以下一些最佳实践:

  • 使用 laravel 对 aws sdk for php 的内置支持来简化您的代码并减少需要编写的样板代码量。
  • 使用 laravel 的队列系统异步执行 s3 操作,这可以提高 laravel 应用程序的性能和可扩展性。
  • 使用 laravel 的 flysystem 适配器自定义 storage facade 的行为,并将 s3 与其他 laravel 功能集成,例如 laravel 的缓存系统。
  • 使用 laravel 的队列系统异步执行 s3 操作,这可以提高 laravel 应用程序的性能和可扩展性。
  • 使用 laravel 的加密功能对敏感数据进行加密,然后再将其存储在 s3 中。
  • 使用 laravel 的日志记录功能来记录将适用于 php 的 aws 开发工具包与 s3 结合使用时发生的任何错误或异常。

结论

在本文中,我们介绍了使用 s3 配置适用于 php 的 aws 开发工具包的基础知识,并提供了一些使用该开发工具包与 s3 的其他示例和最佳实践。我们还提供了一些有关在 laravel 中将 sdk 与 s3 一起使用的额外提示。通过遵循这些准则,您可以确保您的 php 应用程序安全、高效且可扩展。


想要了解有关 aws 和 php 的更多信息?查看我们关于 devops mind 的其他文章。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2899

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1734

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1567

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

1120

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1546

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1277

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1669

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1310

2023.11.13

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

31

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号