中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AWS S3在Laravel中如何使用

發布時間:2022-02-14 15:21:49 來源:億速云 閱讀:209 作者:iii 欄目:編程語言

今天小編給大家分享一下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 的對象。

關于 S3 的有用信息

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

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

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

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

以上就是“AWS S3在Laravel中如何使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清新县| 灌云县| 庆阳市| 深泽县| 特克斯县| 邯郸县| 裕民县| 万山特区| 宝丰县| 安达市| 都江堰市| 沭阳县| 乡城县| 蛟河市| 天门市| 漾濞| 原平市| 全椒县| 阳新县| 台南市| 晋州市| 山西省| 政和县| 四会市| 汝阳县| 高安市| 寿宁县| 宜黄县| 奈曼旗| 北流市| 东明县| 常熟市| 两当县| 利川市| 东乌| 隆昌县| 新建县| 康乐县| 木兰县| 梓潼县| 榆中县|