Amazon S3 듀얼 스택 엔드포인트 사용 - Amazon Simple Storage Service

Amazon S3 듀얼 스택 엔드포인트 사용

Amazon S3 듀얼 스택 엔드포인트는 IPv6 및 IPv4를 통한 S3 버킷 요청을 지원합니다. 이 단원에서는 듀얼 스택 엔드포인트를 사용하는 방법을 설명합니다.

Amazon S3 듀얼 스택 엔드포인트

듀얼 스택 엔드포인트에 요청하는 경우, 버킷 URL이 IPv6 또는 IPv4 주소로 확인됩니다. IPv6을 통해 버킷에 액세스하는 방법에 대한 자세한 내용은 IPv6을 통해 Amazon S3에 요청 단원을 참조하세요.

REST API를 사용하는 경우, 엔드포인트 이름(URI)을 사용하여 Amazon S3 엔드포인트에 직접 액세스합니다. 가상 호스팅 방식 또는 경로 방식 엔드포인트 이름을 사용하여 듀얼 스택 엔드포인트를 통해 S3 버킷에 액세스할 수 있습니다. Amazon S3은 리전 듀얼 스택 엔드포인트 이름만 지원합니다. 이는 이름의 일부로 리전을 지정해야 함을 뜻합니다.

듀얼 스택 가상 호스트 방식 및 경로 방식 엔드포인트 이름에는 다음과 같은 명명 규칙을 사용합니다.

  • 가상 호스팅 방식 듀얼 스택 엔드포인트:

    bucketname.s3.dualstack.aws-region.amazonaws.com

     

  • 경로 방식 듀얼 스택 엔드포인트:

    s3.dualstack.aws-region.amazonaws.com/bucketname

엔드포인트 이름 스타일에 대한 자세한 내용은 Amazon S3 버킷에 액세스 및 나열 단원을 참조하세요. Amazon S3 엔드포인트 목록은 AWS 일반 참조의 리전 및 엔드포인트를 참조하세요.

중요

듀얼 스택 엔드포인트를 사용할 경우 Transfer Acceleration을 사용할 수 있습니다. 자세한 내용은 Amazon S3 Transfer Acceleration 시작하기 단원을 참조하십시오.

참고

Amazon S3에 액세스하기 위한 두 가지 유형의 VPC 엔드포인트(인터페이스 VPC 엔드포인트와 게이트웨이 VPC 엔드포인트)는 이중 스택이 지원되지 않습니다. Amazon S3용 VPC 엔드포인트에 대한 자세한 내용은 Amazon S3용 AWS PrivateLink 섹션을 참조하세요.

AWS Command Line Interface(AWS CLI) 및 AWS SDK를 사용하는 경우, 파라미터 또는 플래그를 사용하여 듀얼 스택 엔드포인트를 변경할 수 있습니다. 구성 파일의 Amazon S3 엔드포인트를 재정의하여 듀얼 스택 엔드포인트를 직접 지정할 수도 있습니다. 다음 섹션에서는 AWS CLI 및 AWS SDK의 듀얼 스택 엔드포인트를 사용하는 방법을 설명합니다.

AWS CLI의 듀얼 스택 엔드포인트 사용

이 단원에서는 듀얼 스택 엔드포인트에 요청하는 데 사용되는 AWS CLI 명령의 예를 보여 줍니다. AWS CLI를 설치하는 지침은 AWS CLI를 사용하여 Amazon S3에서 개발 단원을 참조하십시오.

AWS Config 파일의 프로파일에서 구성 값 use_dualstack_endpointtrue로 설정하여 s3s3api AWS CLI 명령의 모든 Amazon S3 요청을 지정된 리전의 듀얼 스택 엔드포인트로 보냅니다. --region 옵션을 사용하여 구성 파일 또는 명령에 리전을 지정합니다.

AWS CLI에서 듀얼 스택 엔드포인트를 사용하는 경우, pathvirtual 주소 형식이 모두 지원됩니다. 구성 파일에 설정된 주소 스타일은 버킷 이름이 호스트 이름에 있는지 URL의 일부인지 제어합니다. 기본적으로 CLI는 가능한 경우 가상 방식을 사용하나 필요한 경우 경로 방식으로 대체합니다. 자세한 내용은 AWS CLI Amazon S3 구성을 참조하세요.

다음 예제와 같이 기본 프로필에 use_dualstack_endpointtrue로, addressing_stylevirtual로 설정하는 명령을 사용하여 구성을 변경할 수도 있습니다.

$ aws configure set default.s3.use_dualstack_endpoint true $ aws configure set default.s3.addressing_style virtual

(모든 명령이 아닌) 지정된 AWS CLI 명령에 대해서만 듀얼 스택 엔드포인트를 사용하려는 경우, 다음 방법 중 하나를 사용할 수 있습니다.

  • --endpoint-url 또는 https://s3.dualstack.aws-region.amazonaws.com 명령에 대해 http://s3.dualstack.aws-region.amazonaws.com 파라미터를 s3 또는 s3api으로 설정하여 명령별로 듀얼 스택 엔드포인트를 사용할 수 있습니다.

    $ aws s3api list-objects --bucket bucketname --endpoint-url https://s3.dualstack.aws-region.amazonaws.com
  • AWS Config 파일에 별도의 프로파일을 설정할 수 있습니다. 예를 들어, use_dualstack_endpointtrue로 설정하는 프로파일을 하나 작성하고, use_dualstack_endpoint를 설정하지 않는 프로파일을 하나 작성합니다. 명령을 실행할 때 듀얼 스택 엔드포인트를 사용할지 여부에 따라 사용할 프로파일을 지정합니다.

참고

현재는 AWS CLI에서 듀얼 스택 엔드포인트로 Transfer Acceleration를 사용할 수 없습니다. 그러나 곧 AWS CLI를 지원할 예정입니다. 자세한 내용은 AWS CLI 사용 섹션을 참조하세요.

AWS SDK의 듀얼 스택 엔드포인트 사용

이 섹션에서는 AWS SDK를 사용하여 듀얼 스택 엔드포인트에 액세스하는 방법의 예제를 보여줍니다.

AWS SDK for Java 듀얼 스택 엔드포인트 예제

다음 예제에서는 AWS SDK for Java를 사용하여 Amazon S3 클라이언트 생성 시 듀얼 스택 엔드포인트를 사용하는 방법을 보여 줍니다.

실제 Java 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 Amazon S3 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; public class DualStackEndpoints { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { // Create an Amazon S3 client with dual-stack endpoints enabled. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .withDualstackEnabled(true) .build(); s3Client.listObjects(bucketName); } 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(); } } }

Windows에서 AWS SDK for Java를 사용하는 경우, 다음과 같은 Java 가상 머신(JVM) 속성을 설정해야 할 수 있습니다.

java.net.preferIPv6Addresses=true

AWS .NET SDK 듀얼 스택 엔드포인트 예제

AWS SDK for .NET을 사용하는 경우, 다음 예제와 같이 AmazonS3Config 클래스를 사용하여 듀얼 스택 엔드포인트를 사용하도록 설정합니다.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DualStackEndpointTest { 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 client; public static void Main() { var config = new AmazonS3Config { UseDualstackEndpoint = true, RegionEndpoint = bucketRegion }; client = new AmazonS3Client(config); Console.WriteLine("Listing objects stored in a bucket"); ListingObjectsAsync().Wait(); } private static async Task ListingObjectsAsync() { try { var request = new ListObjectsV2Request { BucketName = bucketName, MaxKeys = 10 }; ListObjectsV2Response response; do { response = await client.ListObjectsV2Async(request); // Process the response. foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } Console.WriteLine("Next Continuation Token: {0}", response.NextContinuationToken); request.ContinuationToken = response.NextContinuationToken; } while (response.IsTruncated == true); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

객체 나열에 대한 전체 .NET 예제는 프로그래밍 방식으로 객체 키 나열 단원을 참조하십시오.

실제 .NET 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예제 실행 단원을 참조하십시오.

REST API의 듀얼 스택 엔드포인트 사용

REST API를 사용하여 듀얼 스택 엔드포인트에 요청하는 방법에 대한 자세한 내용은 REST API를 사용하여 듀얼 스택 엔드포인트에 요청 단원을 참조하십시오.