搜尋
首頁php框架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 檔案中設定:

#(可选)将默认文件系统驱动设置为 S3
FILESYSTEM_DRIVER=sqs
# 添加基于 S3 的文件驱动所需的参数
AWS_ACCESS_KEY_ID=xxxzzz
AWS_SECRET_ACCESS_KEY=xxxyyy
AWS_DEFAULT_REGION=us-east-2
AWS_BUCKET=my-awesome-bucket
AWS_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 KeySecret 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 中儲存了大量資料:

  • 儲存: 每GB 0.023 美元,~992GB ~= $22.82 美元

  • API 呼叫數量: 約700 萬個請求~= $12

  • 頻寬使用: 這是非常不精確的。資料傳輸費用約為 23 美元,但這不包括基於 EC2 的頻寬費用。

關於S3 的有用資訊

如果您的AWS 設定在私有網路中有伺服器,並使用NAT 網關,請務必建立一個S3 端點(網關類型) 。這是在 VPC 服務的 Endpoints 部分中完成的。這允許向 / 來自 S3 的呼叫繞過 NAT 網關,從而避免額外的頻寬費用。使用它不需要額外費用。

如果您擔心檔案被覆蓋或刪除,請考慮在您的S3 儲存桶中啟用版本控制 

考慮在您的S3 儲存桶中啟用Intelligent Tiering ,以幫助節省您在舊文件後可能不會再次互動的文件的儲存成本

請注意, 刪除大儲存桶(大量文件)可能會花錢!這是由於您必須進行大量 API 呼叫才能刪除檔案。

相關推薦:Laravel影片教學

#

以上是完全掌握AWS S3在Laravel的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
將JavaScript框架(React,Vue,Angular)與Laravel Backend集成將JavaScript框架(React,Vue,Angular)與Laravel Backend集成May 03, 2025 am 12:20 AM

React,vue,andangularCanBeintegratedWithLaravelByFollowingSpecificetUpSteps.1)forreact:installReactusingLaravelui,setUpComponentsInapp.js.js.js.js.2)forvue:uselaravel'sbuilt'sbuilt'sbuilt invuesupport,configureinapp.js.3)forangular forangular setuplare setulare sereptery sereptry and parkuly sereftery secparroughtery secparroughtery secparroughtery

任務管理工具:遠程項目的優先級和跟踪進度任務管理工具:遠程項目的優先級和跟踪進度May 02, 2025 am 12:25 AM

taskManagementsToolSareEssentialForefectiverMototeprojectManagementbyPrioritizingTaskSandTrackingProgress.1)USETOOLSLIKETRELLOANDASANATASANATOSETPRIORITIONTAGS.2)

最新的Laravel版本如何提高性能?最新的Laravel版本如何提高性能?May 02, 2025 am 12:24 AM

Laravel10enhancesPerformancEthroughSeveralKeyKeyFeatures.1)itintroducesquereBuilderCachingTordorcachingTordOuctedSataBaseload.2)itoptimiesseloizeseloquentmodelloAdingwithlazyproxies.3)

全棧Laravel應用程序的部署策略全棧Laravel應用程序的部署策略May 02, 2025 am 12:22 AM

最佳的全棧Laravel應用部署策略包括:1.零停機部署,2.藍綠部署,3.持續部署,4.金絲雀發布。 1.零停機部署使用Envoy或Deployer自動化部署過程,確保應用在更新時保持可用。 2.藍綠部署通過維護兩個環境實現無停機部署,並允許快速回滾。 3.持續部署通過GitHubActions或GitLabCI/CD自動化整個部署流程。 4.金絲雀發布通過Nginx配置,將新版本逐步推廣給用戶,確保性能優化和快速回滾。

擴展全堆棧Laravel應用程序:最佳實踐和技術擴展全堆棧Laravel應用程序:最佳實踐和技術May 02, 2025 am 12:22 AM

toscalealaravelApplication有效,焦點databaseSharding,緩存,負載平衡和microservices.1)實現DataBasEshardingTodistaCripedataCrossmultipledataBasesForimProvesforimPrevperformance.2)uselaravel'scachingsystemystemystemystemywithredsormememememememcachedtebachedtebab

沉默的鬥爭:克服分佈式團隊中的溝通障礙沉默的鬥爭:克服分佈式團隊中的溝通障礙May 02, 2025 am 12:20 AM

doovercomecommunicationbarriersIndistributedTeams,使用:1)VideoCallSforface-to-Faceinteraction,2)setClearresponsEtimepections,3)chooseappropropropraproproprapropropriatecommunicationTools,4)CreatseateAteAteAteamCommunicationGuide和5)建立PemersonalBoundariestAriestOpeopReventBreventBurniationBurnication.the

使用Laravel Blade在全棧項目中進行前端模板使用Laravel Blade在全棧項目中進行前端模板May 01, 2025 am 12:24 AM

laravelbladeenhancesfrontendtemplatinginflatinginflationll-stackprojectsbyferingCleanSyntaxandaxandpoperfelfulfeatures.1)itallowsforeasyvariableasyvariabledisplayandControlstructures.2)bladesuportsuportsuportscreatingingingingingingingingingingangingandredreingscomponents components components components,aidinginmanagingcomplexuis.3)

使用Laravel:實用教程構建全堆棧應用程序使用Laravel:實用教程構建全堆棧應用程序May 01, 2025 am 12:23 AM

laravelisidealforll-stackapplicationsduetoitselegantsyntax,complastissionecosystem和perperatedfulfeatures.1)useeloquentormforintuivelbackenddatamanipulation,butavoidn 1queryissues.2)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。