Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS SDK for S3 API로 설정하는 방법입니다
개요
Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS S3에서 제공하는 [SDK for S3 API]로 설정하는 방법을 소개합니다. 여기서 소개할 SDK는 [Python용 SDK for S3 API]와 [PHP용 SDK for S3 API] 두가지입니다.
CORS 설정 기본 방법
Object Storage Bucket에 CORS를 설정하는 기본 방법인 CLI와 외부 Client Tool에 대한 것은 아래 문서에서 확인 가능합니다.
Python용 SDK for S3 API
SDK 설치
Python용 SDK를 설치하는 방법은 기본 설치방법과 특정 버전을 설치하는 방법이 있습니다.
# 기본 설치
pip install boto3
# 특정 버전 설치
pip install boto3==1.6.19
예제 코드
아래 예제 코드는 버킷에 CORS를 설정하는 방법과 설정된 CORS를 조회하는 방법입니다.
import boto3
service_name = 's3'
endpoint_url = 'https://kr.object.ncloudstorage.com'
region_name = 'kr-standard'
access_key = '{ACCESS_KEY_ID}'
secret_key = '{SECRET_KEY}'
if __name__ == "__main__":
s3 = boto3.client(service_name, endpoint_url=endpoint_url,
aws_access_key_id=access_key, aws_secret_access_key=secret_key)
bucket_name = '{버킷명}'
# Define the configuration rules
cors_configuration = {
'CORSRules': [{
'AllowedHeaders': ['*'],
'AllowedMethods': ['GET', 'PUT'],
'AllowedOrigins': ['http://cors-test.com'],
'MaxAgeSeconds': 3000
}]
}
# Set CORS configuration
response = s3.put_bucket_cors(Bucket=bucket_name, CORSConfiguration=cors_configuration)
print(response['ResponseMetadata'])
# Get CORS configuration
response = s3.get_bucket_cors(Bucket=bucket_name)
print(response['CORSRules'])
예제 코드 실행 결과


PHP용 SDK for S3 API
PHP용 SDK는 아래 2가지 방법 중에서 한가지를 선택해서 사용할 수 있습니다.
1. SDK 설치
우선 composer를 이용해서 설치하는 방법입니다.
composer require aws/aws-sdk-php
- 설치 후에 아래 코드를 추가해서 SDK를 불러옵니다.
<?php
require '{경로}/vendor/autoload.php';
?>
2. SDK 다운로드
2번째 방법은 SDK Zip파일을 다운로드 받아 사용하는 방법입니다.
- 압축을 풀고 필요한 경로에 복사한 후 아래 코드를 추가해서 SDK를 불러옵니다.
<?php
require '{경로}/aws-autoloader.php';
?>
예제 코드
아래 예제 코드는 버킷에 CORS를 설정하는 방법과 설정된 CORS를 조회하는 방법입니다.
<?php
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
$s3Client = new S3Client ([
'endpoint' => 'https://kr.object.ncloudstorage.com',
'region' => 'kr-standard',
'credentials' => array(
'key' => '{ACCESS_KEY_ID}',
'secret' => '{SECRET_KEY}'
),
'version' => 'latest'
]);
$bucketName = "{버킷명}";
# Set CORS configuration
try
{
$result = $s3Client->putBucketCors([
'Bucket' => $bucketName, // REQUIRED
'CORSConfiguration' => [ // REQUIRED
'CORSRules' => [ // REQUIRED
[
'AllowedHeaders' => ['*'],
'AllowedMethods' => ['GET', 'PUT'], // REQUIRED
'AllowedOrigins' => ['http://cors-test.com'], // REQUIRED
'ExposeHeaders' => [],
'MaxAgeSeconds' => 3000
],
],
]
]);
var_dump($result["@metadata"]);
}
catch (AwsException $e)
{ // output error message if fails
error_log($e->getMessage());
}
echo("<hr />");
# Get CORS configuration
try
{
$result = $s3Client->getBucketCors([
'Bucket' => $bucketName, // REQUIRED
]);
var_dump($result["CORSRules"]);
}
catch (AwsException $e)
{ // output error message if fails
error_log($e->getMessage());
}
?>
예제 코드 실행 결과


참고 URL
- Ncloud Python용 AWS SDK (Boto3) 가이드
- PHP용 AWS SDK 가이드
- Object Storage Bucket에 CORS 설정하는 기본 방법