Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS SDK for S3 API로 설정하는 방법입니다

ToC

개요

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'])

예제 코드 실행 결과

Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS SDK for S3 API로 설정하는 방법
Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS SDK for S3 API로 설정하는 방법

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());
    }

?>

예제 코드 실행 결과

Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS SDK for S3 API로 설정하는 방법
Ncloud(네이버 클라우드)의 Object Storage Bucket CORS를 AWS SDK for S3 API로 설정하는 방법

참고 URL

  1. Ncloud Python용 AWS SDK (Boto3) 가이드
  2. PHP용 AWS SDK 가이드
  3. Object Storage Bucket에 CORS 설정하는 기본 방법
Tags: storage