예초, 벌초 플랫폼 서비스 양도합니다.
관심 있으신 분은 댓글에 메일 남겨주세요.
예초, 벌초 플랫폼 서비스 양도합니다.
관심 있으신 분은 댓글에 메일 남겨주세요.
최근에 oracle cloud를 사용하면서 aws s3와 호환되는 oracle object storage를 연동하였는데
oracle에서 공식적으로 제공하는 php 라이브러리가 없고 github에 있는 프로젝트도 애매해서 좀 찾아보고 직접 설정하였다.
어렵진 않지만 간단한 거에서 막히거나 한글문서가 없는 등 breakpoint가 많아 따로 글을 작성한다.
주요 목차와 진행 순서는 아래와 같다.
버킷 생성방법은 다른 문서도 많으므로 간단하게만 다룬다.
생성이 완료된 후 확인해야 할 정보는 리전과 버킷 이름, 네임스페이스 3가지이며. 스크린샷 기준으로는 다음과 같다.
console 화면이 바뀌어서인지 찾는데 정말 한참 걸렸다.
내 계정이 아닌 다른 계정으로 생성이 필요하면 [ID 도메인 - 사용자]로 들어가서도 설정이 가능하다.
키를 생성하면 비밀번호(secret)가 1회에 한해 표시된다.
생성이 완료되면 아래 형식과 같은 접근 KEY가 생긴다.
주의사항: 주 계정에다가 접근 KEY를 생성하면 cloud의 다른 기능에도 접근이 가능할 수 있으므로 보안이 중요하다면 공식 매뉴얼을 확인하여 접근 제어를 반드시 해야 한다.
프로젝트 루트에서 composer를 이용해 아래와 같이 모듈을 설치한다.
composer require aws/aws-sdk-php
혹은 aws 문서를 참고하여 php sdk 모듈을 로드한다.
<?php
// composer 기준 autoload
include 'vendor/autoload.php';
use \Aws\Exception\AwsException;
use \Aws\S3\S3Client;
// cloud 환경에 맞게 설정
$region = '[REGION]';
$key = '[ACCESS_KEY]';
$secret = '[ACCESS_SECRET]';
$namespace = '[STORAGE_NAMESPACE]';
$bucket = '[STORAGE_BUCKET]';
$s3Client = new S3Client([
'region' => $region,
'version' => '2006-03-01',
'credentials' => [
'key' => $key,
'secret' => $secret,
],
'bucket_endpoint' => true,
'endpoint' => "https://{$namespace}.compat.objectstorage.{$region}.oraclecloud.com/{$bucket}"
]);
$filePath = 'README.md'; // 업로드 대상 파일
$uploadPath = 'sample/' . $filePath; // 업로드할 서버 경로
try {
$result = $s3Client->putObject(array(
'Bucket' => $namespace,
'Key' => $uploadPath,
'SourceFile' => $filePath,
));
} catch (AwsException $e) {
echo '업로드에 실패했습니다. - ' . $e->getMessage();
}
// 파일 URL 출력
echo $result['ObjectURL'] . PHP_EOL;
코드를 실행하면 업로드 수행 후 URL을 출력한다.
aws s3와 다른 점은 다음과 같다.
여러 번 테스트해가며 동작되는 endpoint와 namespace를 찾은 건데, 다른 방법이 있다면 댓글 부탁드립니다.
끝.
이클립스 설치 후 Tomcat 설정하고 실행하니 다음과 같은 오류가 발생했다.
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap
구글링 해보니 JAVA_HOME을 설정해야 한다, tomcat의 startup.bat를 실행해봐라 등 알수 없는 방법들이 가득 ㅠ
해결하려고 삽질하다가 project의 maven update를 실행하고 나니 해결되었다.
블로그 포스팅용으로 프로젝트 소스파일 초기화하여 다시 해보는데 이번엔 재현안됨........
오랜만에 만져봤지만서도 여전히 알수 없는 eclipse 환경 -_-;