자바 플랫폼을 오픈 소스 클라우드 스토리지를 액세스 하려면 어떻게 해야 합니까?

출처: 인터넷
작성자: 사용자
키워드: 제공할 수 있는 예 수 제공

용어는 클라우드 컴퓨팅은 새로운 (아마존 클라우드 서비스를 제공 하는 2006 년에 시작), 하는 동안 2008 년 이후 때 구글과 아마존에서 클라우드 서비스 공개 주목 진짜 화두가 되었습니다. Google 응용 프로그램 엔진 구축 하 고 Google의 인프라에서 웹 응용 프로그램을 호스팅하는 사용자 수 있습니다.

S3, 함께 amazonweb 서비스를 또한 아마존의 인프라에서 응용 프로그램을 호스팅할 수 있는 탄성 (EC2)를 계산 하는 클라우드 컴퓨팅 웹 서비스를 포함 한다. 다른 회사는 아마존과 구글, 마이크로소프트 등 경쟁 하기 위해 준비를 시작® Azure, 그리고 심지어 썬 마이크로시스템즈, 그 클라우드 컴퓨팅이 아니라 정식으로 시판 하고있다, 조각을 원한다. IBM, 예를 들어 최근에 발표 했다 AmazonEC2 환경에서 사용 하는 개발자를 위한 특정 제품을 제공할 것입니다.

Amazonsimple 스토리지 서비스 (S3) 웹 응용 프로그램 개발자는 사진, 동영상, 음악, 및 문서를 포함 하 여 디지털 자산을 저장 하는 데 사용할 수 있는 공개적으로 사용 가능한 서비스입니다. S3은 프로그래밍 방식으로 서비스와 상호 작용을 구현 하는 RESTful API를 제공 합니다. 이 문서와 함께 오픈 소스 jets3t 라이브러리를 사용 하 여 저장 하 고 아마존의 S3 클라우드 서비스를 사용 하 여 데이터를 검색 하는 방법을 배웁니다.

오픈 소스 S3 클라우드 플랫폼 소개

구름이 마치 단일 엔터티를 사용 하 여 작업 또는 서비스를 함께 수행 하는 컴퓨터의 느슨하게 연결 된 그룹을 나타내는 추상적인 개념 이다. 이 개념 뒤에 아키텍처는 또한 추상: 각 클라우드 공급자 그들의 자신의 상황에 따라 제품을 디자인 하 게 자유롭다. 소프트웨어 서비스 (saas 서비스로 소프트웨어)은 클라우드 관련 클라우드 사용자에 게 서비스를 제공 합니다. 그들은 소프트웨어를 구매 하는 필요 없이 실행할 수 있는 하드웨어 서비스 공급자가 사용자에 대 한 필요한 구성 요소를 제공 하 고 있다 때문에 클라우드 모델 사용자 비용을 줄일 수 있습니다.

예를 들어 아마존의 S3 제품을가지고. 이름에서 알 수 있듯이,이 응용 프로그램에 사용 하기 위해 디지털 자산 (예: 사진, 동영상, 음악 및 문서)를 저장 하는 웹 개발자를 가능 하 게 공공 서비스입니다. S 3를 사용 하면 그것은 인터넷, 디지털 자산을 포함 하는 하드 드라이브에 기계 처럼입니다. 사실, 그것은 디지털 자산 (또는 디지털 자산의 부분)를 포함 하는 기계 (지리적 위치)의 수 포함. 아마존은 또한 데이터를 저장 하 고 데이터를 검색할 수 있는 모든 복잡 한 서비스 요청을 처리 합니다. 만 아마존의 서버 및 1 달러 아마존 서버를 통해 데이터 전송에 데이터를 저장 하는 약간의 수수료 (약 15 센트 달/g b)를 지불 해야 합니다.

아마존의 S3 서비스는 복제 되지 않습니다, 그리고 노출 restful API, S3 HTTP 통신을 지 원하는 모든 언어에서 액세스할 수 있습니다. JETS3T 프로젝트는 일반적인 Java 메서드 및 클래스에서 Api를 노출, s 3를 사용 하 여 RESTful API를 추상화 하는 오픈 소스 자바 라이브러리입니다. 더 적은 코드를 작성, 더 나은 가요? 다른 사람들의 결과 최대한 활용 하는 것이 좋다. 이 기사에서 살펴보겠지만 JETS3T S3와 자바 언어의 작품을 간단 하 게 하 고 근본적으로 효율성을 향상 시킵니다.

S3 오픈 소스 응용 프로그램 모드 소개

이론적으로, s 3는 대형된 하드 디스크 저장 하 고 디지털 자산을 검색할 수 있는 곳으로 표시 되는 글로벌 저장 영역 네트워크 (SAN) 이다. 그러나 기술적으로,, 아마존의 아키텍처는 다소 다르다. 자산을 저장 하 고 s 3를 통해 검색 개체 라고 합니다. 개체는 저장소 세그먼트 (양동이)에 저장 됩니다. 하드 디스크 비유를 사용할 수 있습니다: 개체 파일을 같은 이며 저장소 세그먼트는 폴더 (또는 디렉토리). 하드 디스크와 마찬가지로 개체와 저장소 세그먼트 또한 찾을 수 있습니다 통해 동일한 리소스 식별자 (유니폼 리소스 식별자 uri).

예를 들어 내 하드 드라이브에서 나는 홈 디렉터리에 문서 라는 폴더에 있는 Whitepaper.pdf 라는 파일이 있다. 따라서 PDF 파일 is/home/aglover/documents/whitepaper.pdf의 URI입니다. S3, Uri는 조금 다릅니다. 첫째, 저장소 세그먼트 수 탑 레벨-그건 중첩 된 하드 디스크에 폴더 (또는 디렉토리) 같은 중첩 될 수 없습니다. 둘째, 스토리지 세그먼트 인터넷 명명 법을 준수 해야 합니다; 없습니다 슬래시 기간 옆, 이름 밑줄을 포함 하지 않으며에. 마지막으로, 저장 세그먼트 이름에서 고유 해야 모든 S3 스토리지 세그먼트 이름을 이미 (s3.amazonaws.com)의 일부 이므로 아마존 도메인 내에서 공용 URI. (좋은 뉴스는 각 계정만 100 스토리지 세그먼트, 그래서 다른 사람이 모든 좋은 이름을 복용 하는 것을 걱정 하지 마십시오 포함 될 수 있습니다).

저장소 세그먼트는 s 3에 URI의 루트입니다. 즉, 저장소 세그먼트의 이름은 s 3에는 개체를 가리키는 URI의 일부가 됩니다. 예를 들어 만약 내가 Agdocs와 Whitepaper.pdf 라는 개체 저장소 세그먼트, URI 있을 것입니다: Http://agdocs.s3.amazonaws.com/whitepaper.pdf.

S3 또한 하드웨어 파일 및 폴더에 대 한 것 처럼 소유자 및 스토리지 세그먼트 및 개체의 사용 권한을 지정 하는 기능을 제공 합니다. S 3에서 개체나 저장소 세그먼트를 정의 하는 경우 액세스 제어 정책을 나타내는 S3 자산에 액세스할 수 있는 (예를 들어, 읽기 및 쓰기 권한) 액세스 하는 방법을 지정할 수 있습니다. 따라서, 많은 방법으로, 개체에 액세스할 수 있습니다. 그리고 단지 그들 중 하나는 RESTful API를 사용 하 여.

여기 아마존은 마법의 DNS 마술 사용자가 S3 자산 Url에 대해 걱정할 필요가 없습니다. 도메인 이름 시스템 (DNS)와 CNAME (약식된 정식 이름) 레코드, S3 URL에 사용자 지정된 URL을 매핑할 수 있습니다. 이러한 방법으로, 사용자 (또는 응용 프로그램) S3에 의존 하는 사실을 숨길 수 있습니다!

오픈을 사용 하 여 시작 S3 및 jets3t 소스

S 3를 사용 하 여 시작, 당신은 계정이 필요 합니다. S3 하지 무료 이며, 그래서 아마존 지불 (신용 카드 번호) 등의 수단을 제공 해야 합니다 계정 만들 때. 걱정 하지 마십시오: 초기 설치 비용, 하기만 하면 사용에 대 한 지불에 영향을 받지 않습니다. 이 문서의 예제에서는 1 달러를 지불 해야 합니다.

계정 생성 하는 동안 당신은 또한 만들 필요가 자격 증명: 액세스 키와 비밀 키 (예: 사용자 이름 및 암호). 그러나 (X.509 인증서를 얻을 수도 있습니다. 아마존의 Soapapi를 사용 하는 경우에 그것을 사용 해야 하는.) 액세스 정보, 당신이 해야 합니다 유지 비밀 키 좋은 구속 합니다. 때문에이 대 한 청구 됩니다 누구 S3 액세스 자격 증명을 사용 하 여. 따라서, 스토리지 세그먼트 또는 개체를 만들 때마다 기본 동작은 모든 콘텐츠는 비공개로 하는 것입니다 그리고 당신이 명시적으로 외부 세계에 대 한 액세스를 얻을 해야 합니다.

액세스 키와 비밀 키를 jets3t를 다운로드할 수 있으며 RESTful API를 통해 s 3와 상호 작용 하는 데 사용할 수 있습니다.

S3 jets3t 통해 로그인을 프로그래밍 방식으로 사용 하 여 두 단계로 나눌 수 있습니다. 첫째, Awscredentials 개체를 생성 하 고이 S3service 개체 전달 해야 합니다. Awscredentials 개체는 매우 간단 하다. 액세스 키와 비밀 키를 문자열로 처리합니다. S3service 개체는 실제로 인터페이스 형식입니다. S3 restful API와 SOAP api jets3t 라이브러리를 제공 하기 때문에 두 가지 유형의 구현 제공할 수 있습니다: Rests3service 및 Soaps3service. (를 포함 하 여 대부분의 S3 거래)이이 문서에서는 RESTful API의 단순 하기가 좋습니다.

목록 1에서와 같이 Rests3service 인스턴스를 연결 하는 것은 간단 합니다:

1 단계입니다. Jets3t Rests3service 인스턴스를 생성

데 프 awsaccesskey "Blahblah" =

데 프 awssecretkey = "어쩌 구 저 쩌 구"

데 프 awscredentials 새로운 Awscredentials (Awsaccesskey, Awssecretkey) =

데 프 s3service 새로운 Rests3service = (awscredentials)

이제 몇 가지 흥미로운 것 들을 할 수 있다: 예를 들어 저장소 세그먼트 생성, 영화를 추가 하 고, 다음 시간 제한 URL을 얻을. 실제로, 그것은 그것을 하지 않습니다 비즈니스 프로세스 같은 소리? 이것은 비즈니스 프로세스는 제한 된 자산, 동영상을 게시 관련.

저장소 세그먼트 생성

가상의 영화 사업에 대 한 나 bc50i 라는 저장소 세그먼트를 만들어 드리겠습니다. Jets3t의 도움으로, 과정은 간단 합니다. S3service 유형, 당신은 몇 가지 옵션이 있습니다. 목록 2와 같이 getorcreatebucket 호출을 사용 하 여 선호 합니다. 이름에서 알 수 있듯이 스토리지 세그먼트 인스턴스 (S3bucket 형식의 인스턴스로로 표시)를 반환 수 있습니다이 메서드를 호출 하거나 S3에는 코드를 만듭니다.

자세한 내용은 S3 플랫폼의 소개

2 단계입니다. S3 서버에 저장소 세그먼트 생성

데 프 통 = S3service.getorcreatebucket ("bc50i")

내 간단한 코드 예제에서는 의해 겉모습만 보고 판단 하지 마십시오. JETS3T 라이브러리는 매우 확장 가능 합니다. 예를 들어 당신이 신속 하 게 얼마나 많은 스토리지 세그먼트를 간단 하 게 요청 Listallbuckets 호출을 통해 S3 서비스 인스턴스를 확인할 수 있습니다. 메서드는 S3bucket 인스턴스 배열을 반환합니다. 모든 저장소 세그먼트 인스턴스 이름 및 만든 날짜에 대 한 요청할 수 있습니다. 더 중요 한 것은, jets3t accesscontrollist 형식에 연결 된 사용 권한을 제어할 수 있습니다. 예를 들어 내가 bc50i 스토리지 세그먼트의 인스턴스를 얻을 하 고을 읽고 목록 3과 같이 공개적으로 쓸 수 있게 수 있습니다.

3 단계입니다. 저장소 세그먼트에 대 한 액세스 제어 목록 수정

데 프 bucket.acl = Accesscontrollist.rest_canned_public_read_write

물론, API를 통해 스토리지에 세그먼트 것를 또한 삭제할 수 있습니다. 심지어 아마존 저장소 세그먼트를 만들기 위한 위치를 지정할 수 있습니다. 아마존 실제 데이터 저장의 복잡성을 간소화 하지만 미국이 나 유럽 (현재 사용할 수 있는 옵션)에서 아마존 저장소 세그먼트 (와 모든 내부 개체)을 알 수 있습니다.

개체 저장소 세그먼트를 추가

JETS3T API를 사용 하 여 S3 개체 저장소 세그먼트 조작으로 간단 하다. JETS3T 라이브러리 지능적 이며 또한 S3 스토리지 세그먼트 파일에 관련 된 콘텐츠 형식을 처리 될 수 있습니다. 예를 들어 사용자가 제한 된 시간 동안 그것을 볼 수 있도록 s3 비디오 nerfwars2.mp4을 업로드 하겠습니다. S3 개체를 만드는 것은 일반적인 java.io.File 형식 만들기 및 목록 4에 표시 된 대로 s3object 형식 저장 세그먼트 연결 간단:

4 단계입니다. S3 개체 만들기

데 프 s3obj = 새로운 S3object (물통, 새로운 파일 ("/ path/to/nerfwars2.mp4″)"

S3object 파일 및 저장소 세그먼트 초기화 할 필요는 Putobject 메서드를 업로드 목록 5와 같이:

5 단계입니다. 동영상을 업로드

S3service.putobject (물통, s3obj)

사용 하 여 리스트를 업로드 완료 5입니다. 이제는 영화 아마존 서버에, 영화를 키의 이름입니다. 물론, 필요에 따라 다른 개체를 호출 하려면 이름을 재정의할 수 있습니다. 사실, JETS3T API (및 Amazons3restful API)에 개체를 만들 때 많이 사용에 대 한 정보를 제공 해야 합니다. 우리가 알고 있듯이, 액세스 제어 목록도 제공할 수 있습니다. S3 개체 API를 사용 하면 만들려고 다른 메타 데이터를 저장할 수 있습니다. 그런 다음 S3api (그리고 파생된 jets3t)의 메타 데이터를 통해 개체에 대 한 쿼리할 수 있습니다.

개체의 URL 만들기

지금까지, 내 S3 인스턴스 저장소 세그먼트는 영화를 포함 하는. 사실, 내 영화 다음 URI에서 얻어질 수 있다: Http://bc50i.s3.amazonaws.com/nerfwars2.mp4. 하지만 얻을 수 있습니다. (이 경우에, 나만 액세스할 수 프로그래밍 방식으로 모든 콘텐츠에 연결 된 기본 액세스 제어 모든 무단된 액세스 거부로 설정 되어 있기 때문에). 선택한 사용자 (는 제한 된 시간 내에) 새로운 영화를 볼 수 있는 방법을 제공 하는 것입니다 내 목표 (S3 또한 도움이 됩니다) 액세스 요금을 충전을 시작할 때까지.

공용 URL을 만드는 s 3에서 제공 하는 편리한 기능 이며 사실, S3, 만들 수 있습니다 (예를 들어 24 시간 이내) 기간에 대해서만 작동 하는 공용 URL. 난 그냥 S3 서버에 저장 된 영화, 내가 48 시간에 대 한 유효한 URL을 만들어 드리겠습니다. 그들은 다운로드 하 고 (그들은 2 일 안에 그것을 다운로드 하는 것을 가정) 그것을 볼 수 있습니다 그럼 내가 url 선택한 사용자를 제공 합니다.

유효성 프로세스 파일

S3 개체에 대 한 시간적 URL을 만들려면이 S3service 형식의 정적 메서드는 jets3t Createsignedgeturl 메서드를 사용할 수 있습니다. 메서드 변수 저장소 세그먼트 이름, 개체 키 (이 경우, 영화 이름 기억?), (의 형태로 jets3t Awscredentials 개체), 일부 상품권 및 기한. 저장소 세그먼트 및 개체 키 해야 이해 하는 경우 목록 6에서 끝내 코드를 사용 하 여 URL를 신속 하 게 얻을 수 있습니다.

6 단계입니다. 시간에 민감한 URL 만들기

데 프 지금 = 새로운 날짜)

데 프 URL = s3service.createsignedgeturl (

Bucket.getname (), S3obj.key, Awscredentials, 지금 + 2)

멋져요, 난 쉽게 48 시간 예선 날짜와 함께 지정할 수는 + 2 구문. 결과 URL이 (한 선) 처럼 보이는:

https://bc50i.s3.amazonaws.com/nerfwars2.mp4?AWSAccessKeyId=1asd06A5MR2&Expires=1234738280&Signature=rZvk8Gkms=

S3은 대역폭 및 스토리지 요구 사항을 안정 하지 않은 경우 많은 도움을 제공할 수 있습니다. 예를 들어 나는 비즈니스 모델에 대 한 생각 시연-영화 출시 됩니다 올해의 특정 시간에. 전통적인 스토리지 모델 해야 선반에 공간을 많이 구매 (또는 하드웨어와 그것에 파이프라인 제공), 큰, 하지만 다음 상대적으로 낮은 것은 합니다. 그러나, 당신은 당신의 필요에 따라 지불할 수 없다. S 3와 모델 필요-회사 스토리지 및 대역폭을 필요로 하는 경우에에 대 한 지불을 지불 한다. 더 중요 한 것은, s 3의 보안 기능 추가 지정 때 사람들이 비디오를 다운로드할 수 있습니다 또는 심지어 누가 그것을 다운로드할 수 있습니다 도울 수 있습니다.

S 3와 함께 이러한 요구 사항을 구현 하는 것이 쉽습니다. 높은 수준에서 제한 된 영화 공개 다운로드를 만드는 4 단계 걸립니다.

1. 로그인의 S3

2. 저장소 세그먼트를 만듭니다.

3. 저장소 세그먼트에 원하는 비디오 (또는 개체)를 추가 합니다.

4. 비디오를 가리키는 시간적 URL을 만듭니다.

그거에요!

사용 하 여 포스트 스크립트: 편리한 지불 요청 모드에

전통적인 스토리지 모델에 비해, 종 량 제 모델 s 3의 많은 명백한 이점이 있다. 예를 들어 하드 디스크에 음악 컬렉션을 저장 하 난 500gb의 저장 장치를 구입 하기 전에 미리 130 달러를 지출 했다. 내가 없어 500GB 데이터의 저장, (비록 아주 싼) 25 센트/기가바이트를 보냈다 그래서 내가 필요 하지 않은 공간. 나는 또한 장비를 유지 하 고 전기 요금을 지불 해야 합니다. 내가 아마존을 사용 하는 경우 나 중요 자산에 대 한 사전에 130 달러를 지불할 필요가 없습니다. 난 단지 관리 및 저장소 하드웨어를 유지 관리에 대 한 지불 하지 않고 10 센트/GB를 지불 해야 합니다.

이제 회사 전체에서 구현 하는 이러한 서비스의 혜택을 고려 하십시오. S 3에 1 백만 사용자 계정에 대 한 사진을 저장 하, 예를 들어 트위터를 가져가 라. 그것에 대 한 지불, 트위터는 저장 하 고 제공 하는 사진 서비스, 하드웨어 인프라를 구입 하는 돈 많이 지출 하지 않아도 하 고 필요 하지 않습니다을 보내고 인간의 한 부분 구성 하 고 사진을 유지 비용.

구름의 혜택은 그 이상. 또한 낮은 대기 시간 및 고가용성을 구현할 수 있습니다. 가정 하는 아마존 구름에 저장 된 자산은 세계 각 지, 각 위치에 대 한 콘텐츠를 제공 하 빠를 것 이다입니다. 더 중요 한 것은, 당신의 자산 기계의 다양 한 분산으로, 때문에 데이터 수 유지 항상 사용 가능한 일부 컴퓨터 (또는 네트워크의 부분) 마비 됩니다.

단어, AmazonS3의 장점은 간단 하다: 낮은 비용, 높은 가용성 및 보안. 하지 않으면 산 전문가 데이터 콘텐츠를 저장할 하드웨어 자산을 유지 하는 것을 선호, 아마존은 당신 보다 더 나은 할 수 있습니다. 왜 당신은 꽉 예산에 하드웨어 앞서 돈을 넣어 (그리고 하드웨어 시간이 지남에 얕 보다 것 이다는 것을 잊지 마세요)?

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.