수색…


비고

문서 요약

http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html에서

Amazon Simple Storage Service는 인터넷을위한 스토리지입니다. 웹 스케일 컴퓨팅을 개발자가 쉽게 할 수 있도록 설계되었습니다.

Amazon S3에는 간단한 웹 서비스 인터페이스가있어 언제 어디서나 웹의 모든 데이터를 저장하고 검색 할 수 있습니다. Amazon이 자체 웹 사이트 네트워크를 운영하는 데 사용하는 동일한 확장 성, 안정성, 신속성, 저렴한 비용의 데이터 스토리지 인프라 스트럭처에 대한 액세스를 모든 개발자에게 제공합니다. 이 서비스는 규모의 이점을 극대화하고 이러한 이점을 개발자에게 전달하는 것을 목표로합니다.

언어 및 스크립팅 지원

S3는 개발 언어가 아니지만 웹 서비스 요청을 지원하는 클라우드 플랫폼입니다. Amazon에서 게시하는 다양한 도구 및 SDK가 있습니다. 언어 SDK는 웹 서비스 요청, 인증, 세션 관리, 토큰 갱신 등과 같은 작업을 처리하여 S3에 대한 투명한 액세스를 제공합니다. bash / windows / iospowershell 용 명령 줄 인터페이스도 있습니다.

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.");
                    }
            }

이 예제에는 다음과 같은 종속성이 필요합니다.

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

이 예제에는 다음과 같은 종속성이 필요합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow