• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 完全掌握AWS S3在Laravel中的使用

完全掌握AWS S3在Laravel中的使用

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了AWS S3,Laravel中的使用等相关知识,希望对您有所帮助

本篇文章给大家带来了关于在Laravel中使用AWS S3的相关知识,AWS S3为我们提供了存储服务器文件的地方,在云中存储文件不需要占用太多的磁盘空间,希望对大家有帮助。


完全掌握AWS S3在Laravel中的使用


AWS S3 为我们提供了存储服务器文件的地方。 这样做有的好处是:

备份 / 冗余 - S3 和类似产品具有内置备份和冗余

扩展 - 在现代服务器(例如无服务器或容器化环境以及传统负载平衡环境)中,在服务器外保存文件成为了必要的

磁盘使用率 - 在云中存储文件时不需要太多的磁盘空间

功能 - S3(和其他云)具有一些很棒的功能,例如对文件的版本控制、删除旧文件(或以更便宜的方式存储它们)的生命周期规则、删除保护等等

现在使用 S3(即使在单服务器设置中)从长远来看可以减少麻烦。 这是你应该知道的!

配置

配置 S3 需要使用以下内容:

在 Laravel 中 - 通常通过 .env,但也可能在 config/filesystem.php 中

您的 AWS 账户


Laravel Config

如果您检查您的 config/filesystem.php 文件,您会发现已有 S3 选项。 它已经设置为 .env 文件中的环境变量!

除非您需要对此进行自定义,否则您可以不理会它,只需在 .env 文件中设置:

#(可选)将默认文件系统驱动设置为 S3FILESYSTEM_DRIVER=sqs# 添加基于 S3 的文件驱动所需的参数AWS_ACCESS_KEY_ID=xxxzzzAWS_SECRET_ACCESS_KEY=xxxyyyAWS_DEFAULT_REGION=us-east-2AWS_BUCKET=my-awesome-bucketAWS_USE_PATH_STYLE_ENDPOINT=false

config/filesystem.php 文件包含以下选项 :

return [    'disks' => [        // 'local' 和 'public' 省略...        's3' => [            'driver' => 's3',            'key' => env('AWS_ACCESS_KEY_ID'),            'secret' => env('AWS_SECRET_ACCESS_KEY'),            'region' => env('AWS_DEFAULT_REGION'),            'bucket' => env('AWS_BUCKET'),            'url' => env('AWS_URL'),            'endpoint' => env('AWS_ENDPOINT'),            'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),        ],    ],];

一些选项我们没有在 .env 文件中使用。例如,可以设置 AWS_URL,这对于使用具有 S3 兼容 API 的其他文件存储云是有用的,例如 CloudFlare 的 R2 或 Digital Ocean 的 Spaces。


AWS 配置

在 AWS 中,您需要做两件事:

在 S3 服务中创建存储桶

创建一个 IAM 用户以获取 Key 和 Secret Key,然后将策略附加到该用户以允许访问 S3 API。

与 AWS 中的任何东西一样,在 S3 中创建存储桶需要查看大量配置选项,并想知道您是否需要其中的任何一个。 对于大多数用例,您不需要!

前往 S3 控制台,创建一个存储桶名称(它必须是全局唯一的,而不仅仅是您的 AWS 账户唯一),选择您操作的区域,并保留所有默认值(包括标记为 “阻止公共访问设置” 的区域)。

其中一些选项是您可能想要使用的,但您可以稍后选择它们。

创建存储桶后,我们需要对其执行操作的权限。 假设我们创建了一个名为 my-awesome-bucket 的存储桶。

我们可以创建一个 IAM 用户,选择 “编程访问”,但不要附加任何策略或设置任何其他内容。 确保记录秘密访问密钥,因为他们只会显示一次。

我创建了一个视频,展示了在此处创建存储桶和设置 IAM 权限的过程: www.youtube.com/watch?v=FLIp6BLtwj...

访问 Access Key 和 Secret Access Key 应放入您的 .env 文件中。

接下来,单击 IAM 用户并添加内联策略。 使用 JSON 编辑器对其进行编辑,然后添加以下内容(来自 Flysystem 文档):

{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "Stmt1420044805001",            "Effect": "Allow",            "Action": [                "s3:ListBuckets",                "s3:GetObject",                "s3:GetObjectAcl",                "s3:PutObject",                "s3:PutObjectAcl",                "s3:ReplicateObject",                "s3:DeleteObject"            ],            "Resource": [                "arn:aws:s3:::my-awesome-bucket",                "arn:aws:s3:::my-awesome-bucket/*"            ]        }    ]}

这使我们能够在我们的新存储桶上执行所需的 S3 API 操作。


Laravel 用法

在 Laravel 中,你可以像这样使用文件存储:

# 如果您将 S3 设置为默认值:$contents = Storage::get('path/to/file.ext');Storage::put('path/to/file.ext', 'some-content');# 如果您没有将 S3 作为默认设置:$contents = Storage::disk('s3')->get('path/to/file.ext');Storage::disk('s3')->put('path/to/file.ext', 'some-content');

文件的路径(在 S3 中)被附加到存储桶名称中,因此名为 path/to/file.ext 的文件将存在于 s3://my-awesome-bucket/path/to/file.ext `。

从技术上讲,S3 中不存在目录。 在 S3 中,文件称为 “对象”,文件路径 + 名称是 “对象键”。 因此,在存储桶 my-awesome-bucket 中,我们刚刚创建了一个带有键 path/to/file.ext 的对象。

请务必查看 Laravel 文档的 Storage 以找到更多有用的使用 Storage 的方法,包括文件流和临时 URL。


价钱

S3 相当便宜 —— 我们大多数人每月会花费几美分到几美元。如果您在使用完文件后从 S3 中删除文件,或者设置生命周期规则以在设定的时间段后删除文件,则尤其如此。

定价(主要)由 3 个维度驱动。价格因地区和用途而异。下面是一个基于给定月份的 Chipper CI (我的 Laravel 应用程序的 CI)实际应用程序使用情况的示例,它在 S3 中存储了大量数据:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 完全掌握AWS S3在Laravel中的使用

相关文章

  • 百度统计、cnzz刷搜索词和来路链接原理,统计工具推广广告方法
  • PHPCMS模型字段单选复选只能填写不能使用SQL语句查询
  • Discuz论坛更换域名,详细文件修改步骤
  • ThinkPHP6对接微信扫码登录
  • phpMyadmin怎么使用空密码登入
  • Photoshop制作油漆溢出特效的艺术字教程
  • 关于thinkphp邮箱验证码前后台
  • vue.js如何实现可拖拽菜单
  • 简单常用技巧之React组件间通信(整理分享)
  • PHPcms v9安全教程:修改phpcms根目录下的phpcms目录名称

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 利用CSS如何实现全兼容的毛玻璃效果?
    • dedecms栏目30个关键字限制解决方法
    • PHPCMS系统mysql优化教程
    • 关于最新版ThinkORM对于时间字段的调整
    • uni-app介绍全局样式引入和底部导航栏开发
    • Sublime下怎么建立Node编译系统
    • 网站设计怎么才能真正体现企业形象
    • 浅谈bootstrapTable+jstree插件对树列表条件和查询条件的处理
    • Discuz手机端手机号注册无法写入common_member_profile表(手机号入库失败)
    • 18个你需要知道的JavaScript优化技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有