Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

Amazon S3 Transfer Acceleration 예제

이 단원에서는 버킷에서 Amazon S3 Transfer Acceleration을 설정하는 방법과 설정된 버킷에 대해 가속 엔드포인트를 사용하는 방법의 예를 설명합니다. 일부 AWS SDK 지원 언어(예: Java, .NET)는 가속 엔드포인트 클라이언트 구성 플래그를 사용하므로, Transfer Acceleration의 엔드포인트를 bucketname.s3-accelerate.amazonaws.com으로 명시적으로 설정할 필요가 없습니다. Transfer Acceleration에 대한 자세한 내용은 Amazon S3 Transfer Acceleration 단원을 참조하십시오.

Amazon S3 콘솔 사용

Amazon S3 콘솔을 사용하여 버킷에서 Transfer Acceleration을 설정하는 방법은 Amazon Simple Storage Service 콘솔 사용 설명서Transfer Acceleration 설정을 참조하십시오.

AWS Command Line Interface(AWS CLI)의 Transfer Acceleration 사용

이 단원에서는 Transfer Acceleration에 사용되는 AWS CLI 명령의 예를 설명합니다. AWS CLI를 설치하는 지침은 AWS CLI 설정 단원을 참조하십시오.

AWS CLI를 사용하여 버킷에 Transfer Acceleration 설정

AWS CLI put-bucket-accelerate-configuration 명령을 사용하여 버킷에 Transfer Acceleration을 설정하거나 중지할 수 있습니다. 다음은 버킷에서 Transfer Acceleration을 사용하기 위해 Status=Enabled를 설정하는 예제입니다. Transfer Acceleration을 중지하려면 Status=Suspended를 사용합니다.

$ aws s3api put-bucket-accelerate-configuration --bucket bucketname --accelerate-configuration Status=Enabled

AWS CLI의 Transfer Acceleration 사용

AWS Config 파일의 프로파일에서 use_accelerate_endpoint 구성 값을 true로 설정하면 s3 및 s3api AWS CLI 명령을 통해 이루어진 Amazon S3 요청이 모두 가속 엔드포인트 s3-accelerate.amazonaws.com으로 지정됩니다. 가속 엔드포인트를 사용하려면 버킷에서 Transfer Acceleration을 사용하도록 설정해야 합니다.

모든 요청은 가상 방식의 버킷 주소 지정 my-bucket.s3-accelerate.amazonaws.com을 사용하여 전송됩니다. ListBuckets, CreateBucket, DeleteBucket 요청은 엔드포인트에서 해당 작업을 지원하지 않기 때문에 가속 엔드포인트로 전송되지 않습니다. use_accelerate_endpoint에 대한 자세한 내용은 AWS CLI S3 구성을 참조하십시오.

다음 예는 기본 프로파일에서 use_accelerate_endpointtrue로 설정합니다.

$ aws configure set default.s3.use_accelerate_endpoint true

일부 AWS CLI 명령에는 가속 엔드포인트를 사용하고 다른 명령에는 사용하지 않으려면 다음 방법 중 하나를 사용합니다.

  • s3 or s3api 명령에 대해 --endpoint-url 파라미터를 https://s3-accelerate.amazonaws.com 또는 http://s3-accelerate.amazonaws.com으로 설정하여 명령별로 가속 엔드포인트를 사용할 수 잇습니다.

  • AWS Config 파일에 별도의 프로파일을 설정할 수 있습니다. 예를 들어, use_accelerate_endpointtrue로 설정하는 프로파일을 하나 작성하고, use_accelerate_endpoint를 설정하지 않는 프로파일을 하나 작성합니다. 명령을 실행할 때 가속 엔드포인트를 사용할지 여부에 따라 사용하려는 프로파일을 지정합니다.

Transfer Acceleration 설정 버킷에 객체를 업로드하는 AWS CLI 예제

다음은 가속 엔드포인트를 사용하도록 구성된 기본 프로파일을 사용하여 Transfer Acceleration이 설정된 버킷에 파일을 업로드하는 예제입니다.

$ aws s3 cp file.txt s3://bucketname/keyname --region region

다음은 --endpoint-url 파라미터를 사용하여 가속 엔드포인트를 지정함으로써 Transfer Acceleration 설정된 버킷에 파일을 업로드하는 예제입니다.

$ aws configure set s3.addressing_style virtual $ aws s3 cp file.txt s3://bucketname/keyname --region region --endpoint-url http://s3-accelerate.amazonaws.com

AWS SDK for Java와 함께 Transfer Acceleration 사용

다음은 가속 엔드포인트를 사용하여 Amazon S3에 객체를 업로드하는 방법을 보여 주는 예제입니다. 이 예제는 다음을 수행합니다.

  • 가속 엔드포인트를 사용하도록 구성된 AmazonS3Client를 만듭니다. 클라이언트가 액세스하는 모든 버킷에 Transfer Acceleration이 설정되어 있어야 합니다.

  • 지정된 버킷에 대해 Transfer Acceleration을 설정합니다. 이 단계는 지정한 버킷에 아직 Transfer Acceleration이 설정되지 않은 경우에만 필요합니다.

  • 지정된 버킷에 Transfer Acceleration이 설정되었는지 확인합니다.

  • 버킷의 가속 엔드포인트를 사용하여 지정된 버킷에 새 객체를 업로드합니다.

Transfer Acceleration 사용에 대한 자세한 내용은 Amazon S3 Transfer Acceleration 시작하기 단원을 참조하십시오. 실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 Amazon S3 Java 코드 예제 테스트 단원을 참조하십시오.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketAccelerateConfiguration; import com.amazonaws.services.s3.model.BucketAccelerateStatus; import com.amazonaws.services.s3.model.GetBucketAccelerateConfigurationRequest; import com.amazonaws.services.s3.model.SetBucketAccelerateConfigurationRequest; public class TransferAcceleration { public static void main(String[] args) { String clientRegion = "*** Client region ***"; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; try { // Create an Amazon S3 client that is configured to use the accelerate endpoint. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .enableAccelerateMode() .build(); // Enable Transfer Acceleration for the specified bucket. s3Client.setBucketAccelerateConfiguration( new SetBucketAccelerateConfigurationRequest(bucketName, new BucketAccelerateConfiguration( BucketAccelerateStatus.Enabled))); // Verify that transfer acceleration is enabled for the bucket. String accelerateStatus = s3Client.getBucketAccelerateConfiguration( new GetBucketAccelerateConfigurationRequest(bucketName)) .getStatus(); System.out.println("Bucket accelerate status: " + accelerateStatus); // Upload a new object using the accelerate endpoint. s3Client.putObject(bucketName, keyName, "Test object for transfer acceleration"); System.out.println("Object \"" + keyName + "\" uploaded with transfer acceleration."); } catch(AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch(SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

.NET용 AWS SDK의 Transfer Acceleration 사용

다음은 .NET용 AWS SDK를 사용하여 버킷에 Transfer Acceleration을 설정하는 방법을 보여 주는 예제입니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예시 실행 단원을 참조하십시오.

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class TransferAccelerationTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); EnableAccelerationAsync().Wait(); } static async Task EnableAccelerationAsync() { try { var putRequest = new PutBucketAccelerateConfigurationRequest { BucketName = bucketName, AccelerateConfiguration = new AccelerateConfiguration { Status = BucketAccelerateStatus.Enabled } }; await s3Client.PutBucketAccelerateConfigurationAsync(putRequest); var getRequest = new GetBucketAccelerateConfigurationRequest { BucketName = bucketName }; var response = await s3Client.GetBucketAccelerateConfigurationAsync(getRequest); Console.WriteLine("Acceleration state = '{0}' ", response.Status); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine( "Error occurred. Message:'{0}' when setting transfer acceleration", amazonS3Exception.Message); } } } }

Transfer Acceleration이 설정된 버킷에 객체를 업로드할 경우, 다음과 같이 클라이언트를 만들 때 가속 엔드포인트 사용을 지정합니다.

var client = new AmazonS3Client(new AmazonS3Config { RegionEndpoint = TestRegionEndpoint, UseAccelerateEndpoint = true }

JavaScript용 AWS SDK의 Transfer Acceleration 사용

JavaScript용 AWS SDK를 사용하여 Transfer Acceleration을 활성화하는 예제는 AWS SDK for JavaScript API ReferenceputBucketAccelerateConfiguration 작업 호출을 참조하십시오.

AWS SDK for Python (Boto)의 Transfer Acceleration 사용

SDK for Python을 사용하여 Transfer Acceleration을 활성화하는 방법은 AWS SDK for Python (Boto 3) API Referenceput_bucket_accelerate_configuration을 참조하십시오.

다른 AWS SDK 사용

다른 AWS SDK 사용에 대한 자세한 내용은 샘플 코드 및 라이브러리를 참조하십시오.