이 기사에서는 Laravel에서 AWS S3를 사용하는 방법에 대해 설명합니다. AWS S3는 서버 파일을 저장할 수 있는 공간을 제공하므로 디스크 공간을 많이 차지하지 않습니다. . 모두가 도움이 됩니다.
AWS S3는 서버 파일을 저장할 수 있는 장소를 제공합니다. 이렇게 하면 다음과 같은 이점이 있습니다.
백업/이중화 - S3 및 유사 제품에는 백업 및 중복성이 내장되어 있습니다.
Scale - 서버리스 또는 컨테이너화된 환경과 같은 최신 서버와 기존 워크로드에서 균형 잡힌 환경), 서버 외부에 파일을 저장하는 것이 필수가 됩니다
Disk Usage - 클라우드에 파일을 저장할 때 디스크 공간이 많이 필요하지 않습니다
특징- 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. 예를 들어 CloudFlare의 R2 또는 Digital Ocean의 Spaces와 같은 S3 호환 API가 있는 다른 파일 스토리지 클라우드를 사용하는 데 유용한 AWS_URL을 설정할 수 있습니다.
AWS에서는 다음 두 가지 작업을 수행해야 합니다.
S3 서비스에서 버킷 생성
IAM 사용자를 생성하여 키와 비밀 키를 가져온 다음 해당 사용자에게 정책을 연결합니다. 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에서는 다음과 같이 파일 저장소를 사용할 수 있습니다:
# 如果您将 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 키를 사용하여 객체를 생성했습니다.
파일 스트림 및 임시 URL을 포함하여 Storage를 사용하는 더 유용한 방법을 찾으려면 Storage에 대한 Laravel 설명서를 확인하세요.
S3는 꽤 저렴합니다. 대부분의 사람들은 한 달에 몇 센트에서 몇 달러를 지출합니다. 파일 사용을 마친 후 S3에서 파일을 삭제하거나 일정 기간이 지난 후 파일을 삭제하도록 수명 주기 규칙을 설정한 경우 특히 그렇습니다.
가격은 (주로) 3차원에 따라 결정됩니다. 가격은 지역과 용도에 따라 다릅니다. 다음은 S3에 대량의 데이터를 저장하는 Chipper CI(내 Laravel 애플리케이션의 CI)를 사용하여 특정 달의 실제 애플리케이션 사용량을 기반으로 한 예입니다.
Storage: GB당 $0.023, ~ 992GB ~= $22.82
API 호출 번호: ~7백만 요청 ~ = $12
대역폭 사용량: 이는 매우 부정확합니다. 데이터 전송 비용은 약 $23이지만 여기에는 EC2 기반 대역폭 요금이 포함되지 않습니다.
AWS 설정에 프라이빗 네트워크에 서버가 있고 NAT 게이트웨이를 사용하는 경우 S3 엔드포인트(게이트웨이 유형)를 생성해야 합니다. 이는 VPC 서비스의 엔드포인트 섹션에서 수행됩니다. 이를 통해 S3와의 통화가 NAT 게이트웨이를 우회할 수 있으므로 추가 대역폭 요금이 부과되지 않습니다. 사용하는데 따른 추가 비용은 없습니다.
파일을 덮어쓰거나 삭제하는 것이 걱정된다면 S3 버킷에서 버전 관리 활성화를 고려하세요.
S3 버킷에서 지능형 계층화를 활성화하면 다시 상호 작용할 수 없는 오래된 파일을 저장하는 데 도움이 됩니다. 파일의 스토리지 비용
참고하세요 큰 버킷(많은 파일)을 삭제하면 비용이 발생할 수 있습니다! 이는 파일을 삭제하기 위해 수행해야 하는 API 호출 수가 많기 때문입니다.
관련 추천: Laravel 비디오 튜토리얼
위 내용은 Laravel에서 AWS S3 사용을 완전히 마스터하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!