S3 Transfer Acceleration 사용 설정 및 사용 - Amazon Simple Storage Service

S3 Transfer Acceleration 사용 설정 및 사용

Amazon S3 Transfer Acceleration을 사용하여 클라이언트와 S3 버킷 간의 장거리 파일 전송을 빠르고 안전하게 수행할 수 있습니다. S3 콘솔, AWS Command Line Interface(AWS CLI), API 또는 AWS SDK를 사용하여 Transfer Acceleration을 사용할 수 있습니다.

이 섹션에서는 버킷에서 Amazon S3 Transfer Acceleration을 설정하는 방법과 설정된 버킷에 대해 가속 엔드포인트를 사용하는 방법의 예를 설명합니다.

Transfer Acceleration 요구 사항에 대한 자세한 내용은 Amazon S3 Transfer Acceleration을 사용하여 빠르고 안전한 파일 전송 구성 섹션을 참조하세요.

참고

가속화된 업로드 속도와 가속화되지 않은 업로드 속도를 비교하려면 Amazon S3 Transfer Acceleration 속도 비교 도구를 엽니다.

이 속도 비교 도구는 멀티파트 업로드를 통해 Amazon S3 Transfer Acceleration을 사용하거나 사용하지 않으면서 브라우저에서 여러 AWS 리전으로 파일을 전송합니다. 직접 업로드의 업로드 속도를 비교하고 리전별로 가속화된 업로드를 전송할 수 있습니다.

S3 버킷의 Transfer Acceleration 사용 설정
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 목록에서 전송 속도 향상을 사용 설정하려는 버킷의 이름을 선택합니다.

  3. 속성을 선택합니다.

  4. Transfer Acceleration에서 편집(Edit)을 선택합니다.

  5. 사용 설정를 선택하고 변경 사항 저장을 선택합니다.

가속화된 데이터 전송에 액세스
  1. Amazon S3의 버킷에 Transfer Acceleration을 사용 설정한 후 버킷의 [속성(Properties)] 탭을 확인합니다.

  2. Transfer Acceleration에서 가속 엔드포인트(Accelerated endpoint)는 버킷의 Transfer Acceleration 엔드포인트를 표시합니다. 이 엔드포인트를 사용하여 버킷과 주고받을 때 가속화된 데이터 전송에 액세스할 수 있습니다.

    Transfer Acceleration을 중지하면 가속 엔드포인트는 더 이상 작동하지 않습니다.

다음은 Transfer Acceleration에 사용되는 AWS CLI 명령의 예입니다. AWS CLI 설정에 대한 지침은 Amazon S3 API 참조의 AWS CLI를 사용하여 Amazon S3에서 개발을 참조하세요.

버킷에서 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

Transfer Acceleration 활성화

s3 및 s3api AWS CLI 명령으로 구성된 모든 Amazon S3 요청을 가속 엔드포인트 s3-accelerate.amazonaws.com으로 보낼 수 있습니다. 이렇게 하려면 AWS Config 파일의 프로파일에서 구성 값 use_accelerate_endpoint을(를) true(으)로 설정합니다. 가속 엔드포인트를 사용하려면 버킷에서 Transfer Acceleration을 사용하도록 설정해야 합니다.

모든 요청은 가상의 버킷 주소 지정 방식(my-bucket.s3-accelerate.amazonaws.com)을 사용하여 전송됩니다. ListBuckets, CreateBucketDeleteBucket 요청은 엔드포인트에서 이러한 작업을 지원하지 않으므로 가속 엔드포인트로 전송되지 않습니다.

use_accelerate_endpoint에 대한 자세한 내용은 AWS CLI 명령 참조AWS CLI S3 구성을 참조하세요.

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

$ aws configure set default.s3.use_accelerate_endpoint true

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

  • --endpoint-url 파라미터를 https://s3-accelerate.amazonaws.com으로 설정하여 s3 또는 s3api에 가속 엔드포인트를 사용합니다.

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

Transfer Acceleration이 사용 설정된 버킷에 객체 업로드

다음은 가속 엔드포인트를 사용하도록 구성된 기본 프로파일을 사용하여 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 https://s3-accelerate.amazonaws.com

다음은 Transfer Acceleration을 사용하여 AWS SDK를 통해 Amazon S3에 객체를 업로드하는 예제입니다. 일부 AWS SDK 지원 언어(예: Java, .NET)는 가속 엔드포인트 클라이언트 구성 플래그를 사용하므로, Transfer Acceleration의 엔드포인트를 bucketname.s3-accelerate.amazonaws.com으로 명시적으로 설정할 필요가 없습니다.

Java

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

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

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

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

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

Transfer Acceleration 사용에 대한 자세한 내용은 Amazon S3 Transfer Acceleration 시작하기 단원을 참조하십시오. 실제 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 AWS SDK for Java 개발자 안내서의 시작하기 섹션을 참조하세요.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; 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) { Regions clientRegion = Regions.DEFAULT_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 for .NET를 사용하여 버킷에서 Transfer Acceleration을 사용하는 방법을 보여 줍니다. 코드 예제 설정 및 실행에 대한 자세한 내용은 AWS SDK for .NET 개발자 안내서AWS SDK for .NET 시작하기를 참조하세요.

using Amazon; 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 for JavaScript를 사용하여 Transfer Acceleration을 활성화하는 예제는 AWS SDK for JavaScript API 참조putBucketAccelerateConfiguration 작업 호출을 참조하세요.

Python (Boto)

Python용 SDK를 사용하여 Transfer Acceleration을 활성화하는 예는 AWS SDK for Python(Boto3) API 참조put_bucket_accelerate_configuration 단원을 참조하세요.

Other

다른 AWS SDK 사용에 대한 자세한 내용은 샘플 코드 및 라이브러리 단원을 참조하세요.

REST API PutBucketAccelerateConfiguration 작업을 사용하여 기존 버킷에서 구성을 가속화할 수 있습니다.

자세한 내용은 Amazon Simple Storage Service API 참조의 PutBucketLifecycleConfiguration을 참조하세요.