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 as
aws 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