Server/AWS , Cloud
네이버 클라우드(NCP) Object Storage 파일 업로드
즐겁게 하하하
2022. 9. 20. 10:01
728x90
Object Storage 와 AWS S3 을 이용하여 MOUNT 하는 작업이 선행 되어야 한다.
aws 의 s3 을 이용하여 Object Storage 를 연동해야 한다/
--------------------
Access Key ID :
Secret Key :
Ncloud API URL (default:https://ncloud.apigw.ntruss.com)
정적 웹 사이트 엔드포인트( 네이버 클라우드 버킷 정보에 있음 )
http://test-bucket1.s3-website.kr.object.ncloudstorage.com
--------------------
============================================================
[ Linux CentOS 7에 파이썬 pip3 설치하기 ] - https://earthconquest.tistory.com/224
yum update
[root@localhost ~]# yum install epel-release //pip를 설치하려면 epel저장소를 활성화 시켜야한다.
[root@localhost ~]# yum install python3-pip //pip3 설치
[root@localhost ~]# rpm -qa | grep -i python3-pip
python3-pip-9.0.3-7.el7_7.noarch
[root@localhost ~]# pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
[Object Storage CLI] https://cli.ncloud-docs.com/docs/guide-objectstorage
#aws cli설치
pip3 install awscli==1.15.85
#Metadata API timeout을 늘려주기
export AWS_METADATA_SERVICE_TIMEOUT=10
# aws 보안 설정
aws configure
# 버킷 목록을 조회
aws --endpoint-url=http://kr.object.ncloudstorage.com s3 ls
aws --endpoint-url=http://kr.object.ncloudstorage.com s3api list-buckets
============================================================
============================================================
[마운트 s3 버캣] Fuse를 이용하여 Object Storage 쉽게 사용하기
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=n_cloudplatform&logNo=221533132870
# S3FS-Fuse 설치
yum install automake fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel
git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
./autogen.sh
./configure
make
make install
echo q2f0E5ziHDA4ZeUxVHUW:g9G2xOb1O9jWoGxZk9PwUmV5NBnjEFKw2LH1aF2Z > /etc/passwd-s3fs
chmod 600 /etc/passwd-s3fs
#마운트할 디렉토리 생성
mkdir /test-objstorage
# 'test-bucket'버캣명으로 마운트함
s3fs test-bucket /TEST-objstorage -o url=https://kr.object.ncloudstorage.com
============================================================
============================================================
[Ncloud CLI 설정] - https://cli.ncloud-docs.com/docs/guide-userguide
./ncloud server getRegionList
============================================================
https://guide.ncloud-docs.com/docs/storage-storage-8-1
Java용 AWS SDK - Amazon S3 API 활용 예제
guide.ncloud-docs.com
context - common.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="defaultEncoding" value="EUC-KR" />
<property name="maxUploadSize" value="10000000" />
<property name="maxInMemorySize" value="10485760" />
</bean>
Controller
@RequestMapping(value = "/aa/bb/savecc.do", method = RequestMethod.POST)
@ResponseBody
public ModelAndView saveBcnc(
@RequestParam HashMap<String ,Object> paramMap,
@ModelAttribute("searchVO") SearchVO searchVO,
ModelAndView mv, HttpServletRequest request) throws Exception {
// ************************************************
// Object Storage 직접 Upload 하는 기능 2022-09-20
// ************************************************
MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
File file = null;
Iterator<String> itr = req.getFileNames();
while(itr.hasNext()) {
MultipartFile mfile = req.getFile(itr.next());
file = new File(mfile.getOriginalFilename());
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write(mfile.getBytes());
fos.close();
}
System.out.println(">>>>>>>>>>>>> NCP Object Storage File upload !! =====> " + file.getName());
boolean uploads = s3ObjectFile.ObjectFileUpload( "버킷명" , "testFolder" , file.getName() , file );
}
S3ObjectFile.java
import java.io.ByteArrayInputStream;
import java.io.File;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
public class S3ObjectFile {
public static boolean ObjectFileUpload( String bucketName , String folderName , String objectName , File file ) {
final String endPoint = "https://kr.object.ncloudstorage.com";
final String regionName = "kr-standard";
final String accessKey = "작성하기";
final String secretKey = "작성하기";
// S3 client
final AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endPoint, regionName))
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey)))
.build();
// create folder
String newPath = folderName + "/";
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(0L);
objectMetadata.setContentType("application/x-directory");
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, newPath , new ByteArrayInputStream(new byte[0]), objectMetadata);
try {
s3.putObject(putObjectRequest);
System.out.format(">>>>>>>>>> Folder %s has been created.\n", folderName);
} catch (AmazonS3Exception e) {
e.printStackTrace();
} catch(SdkClientException e) {
e.printStackTrace();
}
// upload local file
newPath = folderName + "/" + objectName;
try {
//s3.putObject(bucketName, objectName, new File(filePath));
s3.putObject(bucketName, newPath, file);
System.out.format(">>>>>>>>>> Object %s has been created.\n", objectName);
} catch (AmazonS3Exception e) {
e.printStackTrace();
} catch(SdkClientException e) {
e.printStackTrace();
}
return true;
}
}
728x90