PHP 용 AWS SDK 빠른 설치 이미지를 사용하여 업로드
15일차 기사는 @opy 기고한 PHP로 제작된 아날로그 슬라이드 및 모바일 컨트롤러,
17일째 보도는 @iamyukihiro씨가 투고한 것Linux 서버에서 PHP 내장 서버를 설계하는 이야기이다.
본문 개요
AWS SDK for PHP를 사용하여 S3의 지정된 통에 이미지를 업로드합니다.
1. 도입
이번에 사용한 프로그램 라이브러리를 가져옵니다.
PHP 용 AWS SDK 가져오기
참조: Installing the AWS SDK for PHP Version 3 - AWS SDK for PHP
도입 방법은 여러 가지가 있는데 이번에는 정통Composer을 사용했다.
방법이 간단하여 프로젝트의 기본 디렉터리에
composer require aws/aws-sdk-php
명령만 실행합니다.실행 후
composer show -i
등이 표시한 포장 일람표에 aws/aws-sdk-php
가 추가되면 성공이다.phpdotenv 가져오기
환경 변수 설정 라이브러리.
후술한 코드에서 사용했다phpdotenv
가져오지 않은 사람
composer require vlucas/phpdotenv
를 참고하십시오.2. S3에서 물통 만들기
구간을 만듭니다.
AWS 관리 콘솔에 들어가면 S3를 열고 물통을 만든다.
여기 통 이름은
php-advent2021-sdk-upload
입니다.독특한 이름이 필요해서 "쓰고 있어요!"이렇게 욕을 먹으면 다른 이름을 설정하세요.
구역은 어디든지 가능하니 어느 구역을 설정했는지 기억하세요.
다른 설정은 기본값으로 해도 됩니다.
확인되면 만들어 봐.
3. AWS에 접근한 키 정보 얻기
참조: IAM 사용자의 액세스 키 관리 - AWS Identity 및 Access 관리
S3에 연결할 수 있도록.
보안 인증 정보 화면을 열고 액세스 키(액세스 키 ID 및 비밀 액세스 키) 영역을 엽니다.
새 액세스 키를 만든 후 키 파일을 다운로드합니다.
rootkey.csv
이런 파일은 다운로드할 수 있다파일을 열어 액세스 키 ID와 비밀 액세스 키 정보를 확인합니다.
env 파일 만들기
상기 방문 정보를 기술한 파일
.env
을 제작하여 프로젝트 디렉터리에 미리 설정합니다.AWS_ACCESS_KEY_ID="XXXXXXXXXXXXXXXXXXXX"
AWS_SECRET_ACCESS_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
액세스 키 IDAWS_ACCESS_KEY_ID
비밀 접근 키AWS_SECRET_ACCESS_KEY
라는 메시지를 남겼다.4. 설치
참조: Creating and Using Amazon S3 Buckets with the AWS SDK for PHP Version 3 - AWS SDK for PHP
다음은 실제 코드입니다.
<?php
require './vendor/autoload.php';
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->safeLoad();
function main()
{
$credentials = [
'key' => $_ENV['AWS_ACCESS_KEY_ID'],
'secret' => $_ENV['AWS_SECRET_ACCESS_KEY'],
];
$bucket = 'php-advent2021-sdk-upload';
$srcFilePath = 'ソースファイルのディレクトリパスをここに記述';
$extension = pathinfo($srcFilePath, PATHINFO_EXTENSION);
$key = 'test' . '.' . $extension;
try {
$s3Client = new S3Client([
'region' => 'ap-northeast-1',
'version' => '2006-03-01',
'credentials' => $credentials,
]);
$result = $s3Client->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $srcFilePath,
]);
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
}
main();
$bucket
업로드하려는 이미지 파일의 디렉토리 경로를 $srcFilePath
에 기술하십시오.해설
필수 코드 블록은 두 개입니다.
S3에 대한 연결
$s3Client = new S3Client([
'region' => 'ap-northeast-1',
'version' => '2006-03-01',
'credentials' => $credentials,
]);
region
구간을 생성한 구역을 기술한다.version
에 버전을 지정합니다.슬롯 설정을 사용한 것 이외에 이 상태를 유지할 수 있습니다.credentials
에 액세스 키 ID와 비밀 액세스 키를 입력합니다.S3 섹션에 업로드
$result = $s3Client->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $srcFilePath,
]);
Bucket
에는 올릴 통 이름이 기술되어 있다.Key
통 아래의 파일 경로와 파일 이름을 설정합니다.이렇게 하면 확장자가 없는 파일이 업로드되기 때문에 pathinfo로 확장자
$extension
를 만들어서 저장합니다.SourceFile
업로드할 파일의 절대 경로를 지정합니다.그런 다음 이미지가 S3 구간에 업로드되었습니다.
총결산
이 기사의 코드를 적용하면
고객이 이미지 경로 POST를 보낸 후 업로드할 수 있는 API
꼭 활용하세요.
참고로 이 설정에서는 브라우저에서 업로드된 이미지를 확인할 수 없습니다.
S3 청크에 대한 공용 액세스 설정을 적절하게 설정할 필요가 있습니다.
(기본적으로 공용 액세스는 차단됨)
이미지에 대한 확인은 읽기 전용 접근 허가만 주면 된다.
※ 요청이 많으면 이 점을 자세히 정리해 보고 싶습니다.
액세스 설정 참조:
Reference
이 문제에 관하여(PHP 용 AWS SDK 빠른 설치 이미지를 사용하여 업로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Rone_Loreto/items/219cad33725b092d4768텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)