How to use AWS SDK for PHP with MinIO Server
MinIO 서버와 함께 PHP용 AWS SDK를 사용하는 방법
aws-sdk-php is the official AWS SDK for the PHP programming language.
aws-sdk-php는 PHP 프로그래밍 언어용 공식 AWS SDK입니다.
In this recipe we will learn how to use aws-sdk-php with MinIO server.
이 레시피에서는 MinIO 서버와 함께 aws-sdk-php를 사용하는 방법을 배웁니다.
1. Prerequisites
1. 전제조건
Install MinIO Server from here.
여기에서 MinIO 서버를 설치하세요.
2. Installation
2. 설치
Install aws-sdk-php from AWS SDK for PHP official docs here.
여기에서 PHP용 AWS SDK 공식 문서의 aws-sdk-php를 설치하세요.
3. Use GetObject and PutObject
3. GetObject 및 PutObject 사용
Example below shows putObject and getObject operations on MinIO server using aws-sdk-php.
아래 예에서는 aws-sdk-php를 사용하는 MinIO 서버의 putObject 및 getObject 작업을 보여줍니다.
Please replace endpoint, key, secret, Bucket with your local setup in this example.php file.
example.php 파일에서 엔드포인트, 키, 비밀, 버킷을 로컬 설정으로 바꾸세요.
Note that we set use_path_style_endpoint to true to use MinIO with AWS SDK for PHP. Read more in the AWS SDK for PHP docs here.
PHP용 AWS SDK에서 MinIO를 사용하려면 use_path_style_endpoint를 true로 설정했습니다. 여기에서 PHP용 AWS SDK 문서를 자세히 읽어보세요.
// Include the SDK using the Composer autoloader
// Composer 자동 로더를 사용하여 SDK를 포함합니다
date_default_timezone_set('America/Los_Angeles');
require 'vendor/autoload.php';
'vendor/autoload.php'가 필요합니다;
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'endpoint' => 'http://localhost:9000',
'use_path_style_endpoint' => true,
'credentials' => [
'key' => 'YOUR-ACCESSKEYID',
'secret' => 'YOUR-SECRETACCESSKEY',
],
]);
// Send a PutObject request and get the result object.
// PutObject 요청을 보내고 결과 객체를 가져옵니다.
$insert = $s3->putObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'Body' => 'Hello from MinIO!!'
]);
// Download the contents of the object.
// 객체의 내용을 다운로드합니다.
$retrive = $s3->getObject([
'Bucket' => 'testbucket',
'Key' => 'testkey',
'SaveAs' => 'testkey_local'
]);
// Print the body of the result by indexing into the result object.
// 결과 객체를 인덱싱하여 결과 본문을 인쇄합니다.
echo $retrive['Body'];
After the file is updated, run the program
파일이 업데이트된 후 프로그램을 실행하세요
php example.php
Hello from MinIO!!
안녕하세요 MinIO입니다!!
4. Create a pre-signed URL
4. 사전 서명된 URL 생성
// Get a command object from the client
// 클라이언트에서 명령 객체를 가져옵니다
$command = $s3->getCommand('GetObject', [
'Bucket' => 'testbucket',
'Key' => 'testkey'
]);
// Create a pre-signed URL for a request with duration of 10 minutes
// 10 분 동안 요청에 대해 사전 서명된 URL을 생성합니다
$presignedRequest = $s3->createPresignedRequest($command, '+10 minutes');
// Get the actual presigned-url
// 실제 사전 서명된 URL을 가져옵니다
$presignedUrl = (string) $presignedRequest->getUri();
5. Get a plain URL
5. 일반 URL 얻기
To get a plain URL, you'll need to make your object/bucket accessible with public permission.
일반 URL을 얻으려면 공개 허가를 받아 객체/버킷에 액세스할 수 있도록 해야 합니다.
Also, note that you'll not get the URL with X-Amz-Algorithm=[...]&X-Amz-Credential=[...]&X-Amz-Date=[...]&X-Amz-Expires=[...]&X-Amz-SignedHeaders=[...]&X-Amz-Signature=[...]
또한 X-Amz-Algorithm=[...]&X-Amz-Credential=[...]&X-Amz-Date=[...]&X-Amz-Expires=[...]&X-Amz-SignedHeaders=[...]&X-Amz-Signature=[...]를 사용하면 URL을 얻을 수 없습니다.
getObjectUrl('testbucket', 'testkey');
6. Set a Bucket Policy
6. 버킷 정책 설정
// This policy sets the bucket to read only
// 이 정책은 버킷을 읽기 전용으로 설정합니다
$policyReadOnly = '{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Resource": [
"arn:aws:s3:::%s"
],
"Sid": ""
},
{
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Resource": [
"arn:aws:s3:::%s/*"
],
"Sid": ""
}
]
}
';
// If you want to put it on a specific folder you just change 'arn:aws:s3:::%s/*' to 'arn:aws:s3:::%s/folder/*'
// 특정 폴더에 저장하려면 'arn:aws:s3 :::%s/*'를 'arn:aws:s3:::%s/folder/*'로 변경하면 됩니다.
// Create a bucket
// 버킷 생성
$result = $s3->createBucket([
'Bucket' => $bucket,
]);
// Configure the policy
// 정책 구성
$s3->putBucketPolicy([
'Bucket' => $bucket,
'Policy' => sprintf($policyReadOnly, $bucket, $bucket),
]);