amazon-s3 튜토리얼
amazon-s3 시작하기
수색…
비고
문서 요약
http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html에서
Amazon Simple Storage Service는 인터넷을위한 스토리지입니다. 웹 스케일 컴퓨팅을 개발자가 쉽게 할 수 있도록 설계되었습니다.
Amazon S3에는 간단한 웹 서비스 인터페이스가있어 언제 어디서나 웹의 모든 데이터를 저장하고 검색 할 수 있습니다. Amazon이 자체 웹 사이트 네트워크를 운영하는 데 사용하는 동일한 확장 성, 안정성, 신속성, 저렴한 비용의 데이터 스토리지 인프라 스트럭처에 대한 액세스를 모든 개발자에게 제공합니다. 이 서비스는 규모의 이점을 극대화하고 이러한 이점을 개발자에게 전달하는 것을 목표로합니다.
언어 및 스크립팅 지원
S3는 개발 언어가 아니지만 웹 서비스 요청을 지원하는 클라우드 플랫폼입니다. Amazon에서 게시하는 다양한 도구 및 SDK가 있습니다. 언어 SDK는 웹 서비스 요청, 인증, 세션 관리, 토큰 갱신 등과 같은 작업을 처리하여 S3에 대한 투명한 액세스를 제공합니다. bash / windows / ios 및 powershell 용 명령 줄 인터페이스도 있습니다.
S3 API
S3 웹 서비스 API는 경쟁 업체 에서 지원합니다 . 이 주제는 현재 API를 직접 다루지 않으므로 여기에있는 예제는 S3 API를 활용하는 경쟁 시스템에 연결하는 애플리케이션을 빌드하는 데 유용하지 않습니다.
버전
2017 년 3 월 28 일부터 AWS CLI에는 174 개의 버전이 있으며 CLI 릴리스 노트 에 자세히 설명되어 있습니다. Amazon S3에는 66 개의 버전이 있으며, 그 중 일부는 새로운 지역 추가를 발표하고 다른 버전은 기능을 추가하는 버전입니다. 이것들은 S3 Release Notes에 설명되어 있습니다.
예제들
이 "시작하기"섹션에서 지금까지 보여준 예제와 관련하여 Amazon S3는 개발자에게 다음 유스 케이스에 유용합니다.
- 고성능 및 내구성이 뛰어난 시스템에 파일 을 저장하거나 백업하여 비 클라우드 아키텍처에서이 작업을 덜어줍니다 : Linux 및 Windows 파일 시스템. 온 프레미스 서버 또는 EC2 인스턴스를 사용하여 S3의 내구성 및 성능 수준을 재현하는 것은 비용이 많이 든다.
- 네트워크 대역폭이 문제가되는 경우 (예 : 여러 명의 동시 사용자가 대용량 파일을 다운로드해야하는 경우) 데이터를 S3로 이동하면 응용 프로그램에서 데이터 센터 나 구내 서버의 대역폭 부족을 완화 할 수 있습니다 . 이는 대용량 코드 저장소, 가상 시스템 이미지, 비디오 또는 소프트웨어 설치 프로그램을 배포하는 방법입니다. 사용자 업로드 시간 및 사용자 다운로드 시간을 향상시킬 수 있습니다. [매우 큰 사용자 기반 시나리오에서 추가 성능을 얻으려면 클라우드 프론트와 같은 컨텐츠 전달 시스템을 사용하여 파일을 사용자 가까이에 캐시 할 수 있습니다.]
- 응용 프로그램은 큰 파일을 작성하거나 사용해야하며 사용자가 액세스하거나 입금 할 수있는 방법이 필요합니다.
- 응용 프로그램 배포가 매우 커서 사용자와 공유해야합니다.
- 지속적인 전송 파이프 라인을 구축 하고 있으며 Amazon S3에 웹 사이트의 일부를 호스팅하는 경우가 있습니다.
이 시점에서 예제에서는 다음을 수행하는 방법을 보여주지 않습니다.
- 예를 들어
aws s3 help, do not mention some of the commands covered in help, such as입력aws s3 help, do not mention some of the commands covered in help, such as것보다 더 빠르고 명확하지만aws s3 help, do not mention some of the commands covered in help, such asaws s3 웹 사이트aws s3 help, do not mention some of the commands covered in help, such as. - 사용자 액세스를 공유하거나 제한하는 방법 명시 적 제한없이 예제는 동일한 AWS 계정을 공유하는 사용자에게만 적용됩니다.
- 암호화를 통해 데이터를 보호하는 방법. AWS는 S3의 위치를 EC2에 저장된 데이터보다 높은 수준의 보안으로 처리합니다. AWS 보안 우수 사례, 2016 년 8 월, p. 27
보안
AWS는 S3를 보안 플랫폼으로 보는 것이 좋습니다.
보다 엄격한 비즈니스 또는 규정 준수 요구 사항이없는 경우 AWS 보안 글로벌 인프라가 제공하는 것 이상의 추가 보호 레이어를 도입 할 필요가 없습니다. ibid. 2 월
보안 가이드 에서 AWS는 S3에 적합한 AWS 인증을 사용하도록 권장합니다. ibid. 피. 27
또한 S3는 서버 측 암호화 또는 클라이언트 측 암호화를 제공합니다. 클라이언트 측 암호화는 AWS Java SDK에서 투명하게 제공됩니다. 키를 AWS에 저장할 필요는 없습니다. ibid. 피. 28
버전
| 버전 이름 | 기술 | 노트 | 출시일 |
|---|---|---|---|
| Amazon S3 (2016-12-13) | 런던 지역 추가 | 노트 | 2016-12-13 |
S3 액세스를위한 AWS CLI 설치
우분투 / 데비안 인스턴스에 aws cli 설치하기
sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure
파이썬을 사용하여 aws cli 설치하기
핍을 사용하면 Windows, OS X 및 Linux에 aws cli를 설치할 수 있습니다.
sudo pip install awscli
AWS 명령 행 인터페이스 구성
이 절에서는 보안 자격 증명 및 기본 영역과 같이 AWS와 상호 작용할 때 AWS 명령 줄 인터페이스에서 사용하는 설정을 구성하는 방법에 대해 설명합니다.
$ aws configure
AWS Access Key ID [None]: <Your access key >
AWS Secret Access Key [None]: <Your secret key>
Default region name [None]: us-west-2
Default output format [None]: json
AWS의 계정 페이지에서 액세스 키와 비밀 키 가져 오기
버킷 생성하기
새 양동이를 만들려면 aws s3 mb 명령을 사용하십시오. 버킷 이름은 고유해야하며 DNS와 호환되어야합니다. 버킷 이름은 소문자, 숫자, 하이픈 및 마침표를 포함 할 수 있습니다.
aws s3 mb s3://bucket-name
버킷 제거
버킷을 제거하려면 aws s3 rb 명령을 사용하십시오. 기본 버킷은 비어 있어야합니다.
aws s3 rb s3://bucket-name
비어 있지 않은 버킷을 제거하려면 --force 옵션을 포함시켜야합니다.
aws s3 rb s3://bucket-name --force
버킷 나열
모든 버킷 또는 그 내용을 나열하려면 aws s3 ls 명령을 사용하십시오.
aws s3 ls
aws s3 ls s3://bucket-name
다음 명령은 버킷 이름 / 경로에있는 객체를 나열합니다.
aws s3 ls s3://bucket-name/path
로컬 파일 시스템과 S3간에 파일 동기화
aws s3 sync . s3://my-bucket/path
현재 디렉토리의 모든 파일을 S3에 업로드합니다. S3에서 현재 디렉토리로 파일을 다운로드하려면
aws s3 sync s3://my-bucket/path .
AWS CLI S3 명령 목록
일반적으로 사용되는 S3 AWS CLI 명령 목록
버킷 생성
aws s3 mb s3://bucket-name
버킷 제거
aws s3 rb s3://bucket-name
버킷 나열
aws s3 ls
버킷 내부 내용 나열
aws s3 ls s3://bucket-name
경로가있는 버켓 목록
aws s3 ls s3://bucket-name/path
파일 복사
aws s3 cp file.txt s3://my-bucket/
파일 동기화
aws s3 sync . s3://my-bucket/path
로컬 파일 삭제
rm ./MyFile1.txt
--delete 옵션없이 동기화 시도 - 아무 일도 일어나지 않습니다.
aws s3 sync . s3://my-bucket/path
삭제와 동기화 - 객체가 버킷에서 삭제됨
aws s3 sync . s3://my-bucket/path --delete
버킷에서 객체 삭제
aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
삭제와 동기화 - 로컬 파일이 삭제됩니다.
aws s3 sync s3://my-bucket/path . --delete
드문 액세스 저장 클래스와 동기화
aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
현재 디렉토리의 MyFile.txt를 s3 : // my-bucket / path로 복사하십시오.
aws s3 cp MyFile.txt s3://my-bucket/path/
s3 : // my-bucket / path의 모든 .jpg 파일을 ./MyDirectory로 이동하십시오.
aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive
my-bucket의 내용을 나열하십시오.
aws s3 ls s3://my-bucket
my-bucket에있는 경로의 내용을 나열하십시오.
aws s3 ls s3://my-bucket/path
s3 : //my-bucket/path/MyFile.txt를 삭제하십시오.
aws s3 rm s3://my-bucket/path/MyFile.txt
s3 : // my-bucket / path 및 모든 내용 삭제
aws s3 rm s3://my-bucket/path --recursive
자바를 사용한 Hello World 예제
이 예제는 'hello-world'라는 버킷을 생성하려고 시도하고, 버킷 hello-world가 이미 S3의 전역 이름 공간에있는 다른 누군가에 의해 생성되었으므로 다음 예외를 throw합니다. 'hello-world'를 다른 이름으로 변경하면 고유 한 이름의 버킷을 만들어 예외를 피할 수 있습니다. 이렇게 생성 된 새 버킷은 AWS 콘솔을 사용하여 삭제할 수 있습니다.
스레드 "main"의 예외 com.amazonaws.services.s3.model.AmazonS3Exception : 요청 된 버킷 이름을 사용할 수 없습니다. 버킷 네임 스페이스는 시스템의 모든 사용자가 공유합니다. 다른 이름을 선택하고 다시 시도하십시오. (서비스 : Amazon S3, 상태 코드 : 409, 오류 코드 : BucketAlreadyExists, 요청 ID : ...
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import com.amazonaws.services.s3.model.Bucket;
/** S3 "hello world" example. */
public class S3Hello {
/** Name of hello-world bucket -- must be globally unique. The
* bucket namespace is shared by all users of the system.
*/
static final String BUCKET_NAME = "hello-world";
/** Creates bucket
* @param args Command line arguments
*/
public static void main(final String[] args) {
AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();
CreateBucketRequest request
= new CreateBucketRequest(BUCKET_NAME);
Bucket bucket = s3.createBucket(request);
System.out.println("S3 Hello World completed.");
}
}
이 예제에는 다음과 같은 종속성이 필요합니다.
- Java가 콘솔 작동으로 설치되었습니다.
- AWS Java SDK가 설치되었습니다. https://aws.amazon.com/sdk-for-java/
- .aws에 홈 디렉토리 아래에 설정된 자격 증명 파일
credentials. https://aws.amazon.com/developers/getting-started/java/ - S3에서 관리자 또는 '버킷 생성'권한을 가진 자격증 명입니다. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets
PowerShell을 사용하는 Hello World
이 예에서는 hello-world 버킷이 이미 존재하고 S3에서 전역 네임 스페이스를 사용하므로 오류가 발생합니다.
New-S3Bucket -BucketName "hello-world"
New-S3Bucket : 요청한 버킷 이름을 사용할 수 없습니다. 버킷 네임 스페이스는 시스템의 모든 사용자가 공유합니다. 다른 이름을 선택하고 다시 시도하십시오.
hello-world를 고유 한 다른 것으로 바꾸면 버킷이 오류없이 만들어지고 다음과 같은 결과가 나타납니다.
CreationDate BucketName ------------ ---------- 3/30/2017 11:43:03 PM hello-world-832jklsdJF
이 예제에는 다음과 같은 종속성이 필요합니다.
PowerShell. http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html을 참조 하십시오.
신임장. AWS 콘솔을 사용하여 생성 할 수 있습니다. PowerShell을 사용하여 이러한 옵션을 관리하는 데는 여러 가지 옵션이 있습니다. 아래는 간단한 설정 예입니다. http://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html을 참조 하십시오.
PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7LAJD8A -SecretKey "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEjw9JFKS3" -StoreAs default