- HOME
- 네이버 클라우드 플랫폼 사용 환경
- Compute
- Server
- Server 개요
- Server 시나리오
- VPC
- Server 사용 준비
- Server 시작
- Server 사용
- Server 접속
- Server 권한 관리
- Server 반납
- 커널 업데이트
- Server 문제 해결
- Server 문제 해결
- KVM Guest Agent 점검(Linux)
- Virtio Win 및 KVM Guest Agent 점검(Windows)
- 서버이미지(OS) 라이프사이클
- 강제정지 및 강제반납
- Server Status Check(VPC)
- Xentools 재설치(Windows)
- Xentools 재설치 (Linux)
- Server 복구
- DNS 설정 점검
- 시간 동기화 설정 점검
- Ncloud Tool Kit 점검 (Linux)
- Ncloud Tool Kit 점검 (Windows)
- 서버 원격 접속 오류 지원 가이드(Linux)
- 서버 원격 접속 오류 지원 가이드(Windows)
- 진단 인터럽트
- fstab 사용
- VPC 서버 접속 환경 구성
- 서버 복구 가이드
- 파일시스템 오류 복구 가이드
- Linux OS Repository 설정 점검
- 패키지 명령어 이슈 점검 (Linux)
- Classic
- Server 활용 툴
- 데이터 마이그레이션
- Server 릴리스 노트
- Auto Scaling
- Cloud Functions
- Server
- Containers
- Container Registry
- Ncloud Kubernetes Service (VPC)
- Ncloud Kubernetes Service 개요
- Ncloud Kubernetes Service 사용 준비
- Ncloud Kubernetes Service 시작
- Ncloud Kubernetes Service 사용
- Ncloud Kubernetes Service 활용 예제
- Ncloud Kubernetes Service 문제 해결
- Ncloud Kubernetes Service 권한 관리
- Ncloud Kubernetes Service 릴리스 노트
- Storage
- Networking
- VPC
- VPC 개요
- VPC 사용 준비
- VPC 개념
- VPC 시나리오
- VPC 시작
- VPC 사용
- VPC 예제
- VPC 권한 관리
- VPC 리소스 관리
- VPC 용어
- VPC 문제 해결
- VPC 릴리스 노트
- Load Balancer
- IPsec VPN
- Global DNS
- Classic Path
- Global Traffic Manager
- VPC
- Database
- Cloud DB for MySQL
- Cloud DB for MongoDB
- Cloud DB for Redis
- Cloud DB for MSSQL
- Cloud DB for PostgreSQL
- Database Migration Service
- MSSQL
- MySQL
- CUBRID
- Tibero
- eXperDB
- Security
- Secure Zone
- Basic Security
- File Safer
- Web Security Checker
- System Security Checker
- Security Monitoring
- SSL VPN
- Certificate Manager
- Key Management Service
- Webshell Behaivor Detector (VPC)
- Private CA
- Hardware Security Module
- Cloud Security Watcher
- Secure Access
- AI Services
- CLOVA Chatbot
- CLOVA OCR
- CLOVA Studio
- Papago Translation
- Papago Image Translation
- TensorFlow
- AI·NAVER API
- Application Services
- GeoLocation
- Simple & Easy Notification Service
- Simple & Easy Notification Service 개요
- Simple & Easy Notification Service 사용 준비
- Simple & Easy Notification Service 시나리오
- Simple & Easy Notification Service 시작
- Simple & Easy Notification Service 사용
- Simple & Easy Notification Service 권한 관리
- Simple & Easy Notification Service 용어
- Simple & Easy Notification Service 릴리스 노트
- API Gateway
- Ncloud Simple RabbitMQ
- Cloud Outbound Mailer
- Big Data & Analytics
- Cloud Hadoop (VPC)
- Cloud Hadoop 개요
- Cloud Hadoop 이용 시나리오
- Cloud Hadoop 사용 준비
- Cloud Hadoop 시작
- Cloud Hadoop 사용
- Cloud Hadoop ecosystem 활용
- Ambari UI
- Ambari REST API 사용
- Apache Livy로 Spark Job 제출
- Custom Alerts 설정
- Hive 사용
- Hive UDF 실행
- Hive External Table로 CSV 파일 연동
- Hive External Table로 json 파일 연동
- Hue 사용
- Impala 사용
- Kudu 사용
- MySQL Stored Procedure로 DB 생성 및 계정 관리
- OpenTSDB 사용
- Presto(Trino) 사용
- Presto(Trino)로 Hive warehouse 데이터 분석
- Ranger Plugin으로 접근제어 설정
- Ranger를 통한 사용자별 HDFS 접근권한 관리
- Spark Scala Job 제출
- Sqoop 사용
- Sqoop + Oozie Workflow를 활용한 MySQL 8.0 마이그레이션
- Zeppelin 사용
- Iceberg 사용
- NiFi 사용
- Cloud Hadoop 연동
- Cloud Hadoop 리소스 관리
- Cloud Hadoop 권한 관리
- Cloud Hadoop 릴리스 노트
- Cloud Hadoop
- Cloud Hadoop 개요
- Cloud Hadoop 이용 시나리오
- Cloud Hadoop 사용 준비
- Cloud Hadoop 시작
- Cloud Hadoop 사용
- Cloud Hadoop ecosystem 사용
- Ambari UI
- Ambari REST API 사용
- Apache Livy로 Spark Job 제출
- Hive 사용
- Hive UDF 실행
- Hive External Table로 CSV 파일 연동
- Hive External Table로 json 파일 연동
- Hue 사용
- MySQL Stored Procedure로 DB 생성 및 계정 관리
- OpenTSDB 사용
- Presto(Trino) 사용
- Presto(Trino)로 Hive Warehouse 데이터 분석
- Spark Scala Job 제출
- Sqoop 사용
- Zeppelin 사용
- Iceberg 사용
- NiFi 사용
- Cloud Hadoop 연동
- Cloud Hadoop 권한 관리
- Cloud Hadoop 릴리스 노트
- Cloud Search
- Search Engine Service
- Search Engine Service 개요
- Search Engine Service 개념
- Search Engine Service 시나리오
- Search Engine Service 사용 준비
- VPC
- Search Engine Service FAQ
- Search Engine Service 용어
- Search Engine Service 릴리스 노트
- Cloud Data Streaming Service
- Cloud Hadoop (VPC)
- Business Applications
- Content Delivery
- Developer Tools
- Hybrid & Private Cloud
- Internet of Things
- Management & Governance
- Cloud Log Analytics
- Sub Account
- Service Quota
- Cost Explorer
- Web Service Monitoring System
- Cloud Activity Tracer
- Resource Manager
- Organization
- Cloud Insight
- Notification Recipient
- Ncloud Single Sign-On
- Media
- VOD Station
- One Click Multi DRM
- Video Player Enhancement
- Video Player Enhancement 개요
- Video Player Enhancement 사용 준비
- Video Player Enhancement 시나리오
- Video Player Enhancement 시작
- Video Player Enhancement 사용
- Video Player Enhancement 예제
- Video Player Enhancement 리소스 관리
- Video Player Enhancement 권한 관리
- Video Player Enhancement 용어
- Video Player Enhancement 문제 해결
- Video Player Enhancement 릴리스 노트
- Tools
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
Classic/VPC 환경에서 이용 가능합니다.
Java SDK for Swift API
openstack4j 라이브러리를 이용하여 네이버 클라우드 플랫폼[공공기관용] Archive Storage를 사용하는 방법을 설명합니다.
이 문서는 openstack4j 3.1.0 버전을 기준으로 작성되었습니다.
설치
라이브러리를 직접 다운로드 받거나 Apache Maven을 이용하여 사용할 수 있습니다.
라이브러리 다운로드
- 3.1.0 버전 : https://search.maven.org/remotecontent?filepath=org/pacesys/openstack4j/3.1.0/openstack4j-3.1.0.jar
Apache Maven으로 이용하기
pom.xml
<dependency>
<groupId>org.pacesys</groupId>
<artifactId>openstack4j</artifactId>
<version>3.1.0</version>
</dependency>
Plain text
예제
예제에서 사용하는 user, password는 포탈 마이페이지 > 계정 관리 > 인증키 관리에서 생성한 API 인증키를 사용합니다. (Access Key ID는 user, Secret Key는 password)
projectId와 domainId 정보는 Archive Storage 콘솔에서 이용 신청 후 [API 이용 정보 확인] 버튼을 통해 확인할 수 있습니다.
클라이언트 생성
인증정보를 통해 생성된 토큰 객체로 OS클라이언트를 생성합니다. 클라이언트에서 토큰이 유효하지 않거나 만료되면 자동으로 갱신합니다. 멀티 쓰레드 환경에서 토큰 객체를 공유하여 불필요한 인증 절차를 줄일 수 있습니다.
final String endpoint = "https://kr.archive.gov-ncloudstorage.com:5000/v3";
final String user = "ACCESS_KEY_ID";
final String password = "SECRET_KEY";
final String domainId = "DOMAIN_ID";
final String projectId = "PROJECT_ID";
Token token = OSFactory.builderV3()
.endpoint(endpoint)
.credentials(user, password, Identifier.byId(domainId))
.scopeToProject(Identifier.byId(projectId), Identifier.byId(domainId))
.authenticate()
.getToken();
OSClientV3 client = OSFactory.clientFromToken(token);
Java
// Spawn off a thread giving it the access
myThreadExecutor.submit(new MyRunnableOrCallable(token));
// Example of the Runnable or other object invoked in a new thread
public class MyRunnable implements Runnable {
private OSClientV3 client;
public MyRunnable(Access access) {
client = OSFactory.clientFromToken(token);
}
public void run() {
// can now use the client :)
}
}
Java
모든 오퍼레이션 예제는 위에서 생성한 토큰 객체를 이용합니다.
컨테이너(버킷) 목록 조회
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageContainerService containerService = client.objectStorage().containers();
List<? extends SwiftContainer> containers = containerService.list(ContainerListOptions.create().limit(100));
for (SwiftContainer container : containers) {
System.out.println(container);
}
Java
컨테이너(버킷) 생성
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageContainerService containerService = client.objectStorage().containers();
String containerName = "sample-container";
// with metadata
// X-Container-Meta-Test-Meta-Key: test-meta-value
Map<String, String> metadata = new HashMap<>();
metadata.put("test-meta-key", "test-meta-value");
ActionResponse response containerService.create(containerName, CreateUpdateContainerOptions.create().metadata(metadata));
System.out.println(response);
Java
컨테이너(버킷) 삭제
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageContainerService containerService = client.objectStorage().containers();
String containerName = "sample-container";
ActionResponse response = containerService.delete(containerName);
System.out.println(response);
Java
오브젝트 업로드
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String objectName = "sample-object.txt";
String contentType = "text/plain";
File file = new File("/tmp/sample-object.txt");
// with metadata
// X-Object-Meta-Test-Meta-Key : test-meta-value
Map<String, String> metadata = new HashMap<>();
metadata.put("test-meta-key", "test-meta-value");
String etag = objectService.put(containerName, objectName, Payloads.create(file),
ObjectPutOptions.create().contentType(contentType).metadata(metadata));
System.out.println(etag);
Java
디렉토리 오브젝트 생성
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageContainerService containerService = client.objectStorage().containers();
String containerName = "sample-container";
String directoryName = "sample-directory";
String etag = containerService.createPath(containerName, directoryName);
System.out.println(etag);
Java
오브젝트 목록 조회
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String directoryName = "sample-directory";
// simple
List<? extends SwiftObject> objects = objectService.list(containerName);
for (SwiftObject object : objects) {
System.out.println(object);
}
// list for directory
List<? extends SwiftObject> objectsForDirectory = objectService.list(containerName,
ObjectListOptions.create().path(directoryName));
for (SwiftObject object : objectsForDirectory) {
System.out.println(object);
}
Java
오브젝트 다운로드
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String objectName = "sample-object.txt";
String downloadPath = "/tmp/sample-object.txt";
DLPayload payload = objectService.download(containerName, objectName);
File file = new File(downloadPath);
payload.writeToFile(file);
Java
오브젝트 삭제
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String objectName = "sample-object.txt";
ActionResponse response = objectService.delete(containerName, objectName);
System.out.println(response);
Java
대용량 파일 업로드(SLO)
OSClientV3 client = OSFactory.clientFromToken(getToken());
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String objectName = "sample-big-file.mp4";
String contentType = "video/mp4";
String segmentContainerName = "segment-container";
String segmentPrefix = "segments-for-sample-big-file.mp4/segment-";
List<Map<String, Object>> segmentInfoList = new ArrayList<>();
File file = new File("/tmp/sample.mp4");
FileInputStream fs = new FileInputStream(file);
int bufferSize = 1024 * 1024 * 10; // 10MB
byte[] buffer = new byte[bufferSize];
int segmentNo = 1;
int bytesRead;
while ((bytesRead = fs.read(buffer)) != -1) {
Map<String, Object> segmentInfo = new HashMap<>();
InputStreamPayload payload = new InputStreamPayload(new ByteArrayInputStream(buffer, 0, bytesRead));
String etag = objectService.put(segmentContainerName, segmentPrefix + segmentNo, payload);
segmentInfo.put("path", "/" + segmentContainerName + "/" + segmentPrefix + segmentNo);
segmentInfo.put("etag", etag);
segmentInfo.put("size_bytes", bytesRead);
segmentInfoList.add(segmentInfo);
segmentNo++;
}
fs.close();
String manifest = new ObjectMapper().writeValueAsString(segmentInfoList);
String etag = objectService.put(containerName, objectName,
Payloads.create(new ByteArrayInputStream(manifest.getBytes())),
ObjectPutOptions.create().queryParam("multipart-manifest", "put").contentType(contentType));
System.out.println(etag);
Java
대용량 파일 Segments 조회(SLO)
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String objectName = "sample-big-file.mp4";
ObjectListOptions options = ObjectListOptions.create();
options.getOptions().put("multipart-manifest", "get");
List<? extends SwiftObject> objects = objectService.list(containerName + "/" + objectName, options);
for (SwiftObject object : objects) {
System.out.println(object);
}
Java
대용량 파일 삭제(SLO)
OSClientV3 client = OSFactory.clientFromToken(token);
ObjectStorageObjectService objectService = client.objectStorage().objects();
String containerName = "sample-container";
String objectName = "sample-big-file.mp4";
ActionResponse response = objectService.delete(ObjectLocation.create(containerName, objectName),
ObjectDeleteOptions.create().queryParam("multipart-manifest", "delete"));
System.out.println(response);
Java
이 문서가 도움이 되었습니까?
의견을 보내 주셔서 감사합니다! 우리 팀이 당신에게 돌아갈 것입니다.
이 기사를 어떻게 개선 할 수 있습니까?
귀하의 의견
주석
주석 (선택적)
문자 제한 : 500
의견을 입력하십시오.
이메일 (선택적)
이메일
유효한 이메일을 입력하십시오.