AWSS3在Laravel中如何使用

今天小編給大家分享一下AWS S3在Laravel中如何使用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

在武義等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作專業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),武義網(wǎng)站建設(shè)費(fèi)用合理。

AWS S3 為我們提供了存儲(chǔ)服務(wù)器文件的地方。 這樣做有的好處是:

  • 備份 / 冗余- S3 和類(lèi)似產(chǎn)品具有內(nèi)置備份和冗余

  • 擴(kuò)展- 在現(xiàn)代服務(wù)器(例如無(wú)服務(wù)器或容器化環(huán)境以及傳統(tǒng)負(fù)載平衡環(huán)境)中,在服務(wù)器外保存文件成為了必要的

  • 磁盤(pán)使用率- 在云中存儲(chǔ)文件時(shí)不需要太多的磁盤(pán)空間

  • 功能- S3(和其他云)具有一些很棒的功能,例如對(duì)文件的版本控制、刪除舊文件(或以更便宜的方式存儲(chǔ)它們)的生命周期規(guī)則、刪除保護(hù)等等

現(xiàn)在使用 S3(即使在單服務(wù)器設(shè)置中)從長(zhǎng)遠(yuǎn)來(lái)看可以減少麻煩。 這是你應(yīng)該知道的!

配置

配置 S3 需要使用以下內(nèi)容:

  • 在 Laravel 中 - 通常通過(guò) .env,但也可能在 config/filesystem.php 中

  • 您的 AWS 賬戶

Laravel Config

如果您檢查您的 config/filesystem.php 文件,您會(huì)發(fā)現(xiàn)已有 S3 選項(xiàng)。 它已經(jīng)設(shè)置為 .env 文件中的環(huán)境變量!

除非您需要對(duì)此進(jìn)行自定義,否則您可以不理會(huì)它,只需在 .env 文件中設(shè)置:

#(可選)將默認(rèn)文件系統(tǒng)驅(qū)動(dòng)設(shè)置為 S3
FILESYSTEM_DRIVER=sqs
# 添加基于 S3 的文件驅(qū)動(dòng)所需的參數(shù)
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 文件包含以下選項(xiàng) :

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),
        ],
    ],
];

一些選項(xiàng)我們沒(méi)有在 .env 文件中使用。例如,可以設(shè)置 AWS_URL,這對(duì)于使用具有 S3 兼容 API 的其他文件存儲(chǔ)云是有用的,例如 CloudFlare 的 R2 或 Digital Ocean 的 Spaces。

AWS 配置

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

  • 在 S3 服務(wù)中創(chuàng)建存儲(chǔ)桶

  • 創(chuàng)建一個(gè) IAM 用戶以獲取 Key 和 Secret Key,然后將策略附加到該用戶以允許訪問(wèn) S3 API。

與 AWS 中的任何東西一樣,在 S3 中創(chuàng)建存儲(chǔ)桶需要查看大量配置選項(xiàng),并想知道您是否需要其中的任何一個(gè)。 對(duì)于大多數(shù)用例,您不需要!

前往 S3 控制臺(tái),創(chuàng)建一個(gè)存儲(chǔ)桶名稱(它必須是全局唯一的,而不僅僅是您的 AWS 賬戶唯一),選擇您操作的區(qū)域,并保留所有默認(rèn)值(包括標(biāo)記為 “阻止公共訪問(wèn)設(shè)置” 的區(qū)域)。

其中一些選項(xiàng)是您可能想要使用的,但您可以稍后選擇它們。

創(chuàng)建存儲(chǔ)桶后,我們需要對(duì)其執(zhí)行操作的權(quán)限。 假設(shè)我們創(chuàng)建了一個(gè)名為 my-awesome-bucket 的存儲(chǔ)桶。

我們可以創(chuàng)建一個(gè) IAM 用戶,選擇 “編程訪問(wèn)”,但不要附加任何策略或設(shè)置任何其他內(nèi)容。 確保記錄秘密訪問(wèn)密鑰,因?yàn)樗麄冎粫?huì)顯示一次。

我創(chuàng)建了一個(gè)視頻,展示了在此處創(chuàng)建存儲(chǔ)桶和設(shè)置 IAM 權(quán)限的過(guò)程: www.youtube.com/watch?v=FLIp6BLtwj...

訪問(wèn) Access KeySecret Access Key 應(yīng)放入您的 .env 文件中。

接下來(lái),單擊 IAM 用戶并添加內(nèi)聯(lián)策略。 使用 JSON 編輯器對(duì)其進(jìn)行編輯,然后添加以下內(nèi)容(來(lái)自 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/*"
            ]
        }
    ]
}

這使我們能夠在我們的新存儲(chǔ)桶上執(zhí)行所需的 S3 API 操作。

Laravel 用法

在 Laravel 中,你可以像這樣使用文件存儲(chǔ):

# 如果您將 S3 設(shè)置為默認(rèn)值:
$contents = Storage::get('path/to/file.ext');
Storage::put('path/to/file.ext', 'some-content');
# 如果您沒(méi)有將 S3 作為默認(rèn)設(shè)置:
$contents = Storage::disk('s3')->get('path/to/file.ext');
Storage::disk('s3')->put('path/to/file.ext', 'some-content');

文件的路徑(在 S3 中)被附加到存儲(chǔ)桶名稱中,因此名為 path/to/file.ext 的文件將存在于 s3://my-awesome-bucket/path/to/file.ext `。

從技術(shù)上講,S3 中不存在目錄。 在 S3 中,文件稱為 “對(duì)象”,文件路徑 + 名稱是 “對(duì)象鍵”。 因此,在存儲(chǔ)桶 my-awesome-bucket 中,我們剛剛創(chuàng)建了一個(gè)帶有鍵 path/to/file.ext 的對(duì)象。

關(guān)于 S3 的有用信息

如果您的 AWS 設(shè)置在私有網(wǎng)絡(luò)中有服務(wù)器,并使用 NAT 網(wǎng)關(guān),請(qǐng)務(wù)必創(chuàng)建一個(gè) S3 端點(diǎn)(網(wǎng)關(guān)類(lèi)型)。這是在 VPC 服務(wù)的 Endpoints 部分中完成的。這允許向 / 來(lái)自 S3 的調(diào)用繞過(guò) NAT 網(wǎng)關(guān),從而避免額外的帶寬費(fèi)用。使用它不需要額外費(fèi)用。

如果您擔(dān)心文件被覆蓋或刪除,請(qǐng)考慮在您的 S3 存儲(chǔ)桶中啟用 版本控制

考慮在您的 S3 存儲(chǔ)桶中啟用 Intelligent Tiering ,以幫助節(jié)省您在舊文件后可能不會(huì)再次交互的文件的存儲(chǔ)成本

請(qǐng)注意, 刪除大存儲(chǔ)桶(大量文件)可能會(huì)花錢(qián)!這是由于您必須進(jìn)行大量 API 調(diào)用才能刪除文件。

以上就是“AWS S3在Laravel中如何使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享題目:AWSS3在Laravel中如何使用
本文URL:http://muchs.cn/article12/jpdsgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司搜索引擎優(yōu)化、標(biāo)簽優(yōu)化、網(wǎng)站改版、小程序開(kāi)發(fā)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)