

# Amazon S3 on Outposts로 개발
<a name="S3OutpostsDeveloping"></a>

Amazon S3 on Outposts를 사용하면 AWS Outposts에서 S3 버킷을 생성하고 로컬 데이터 액세스, 로컬 데이터 처리 및 데이터 레지던시가 필요한 애플리케이션을 위해 온프레미스에서 객체를 쉽게 저장하고 검색할 수 있습니다. S3 on Outposts는 S3 Outposts(`OUTPOSTS`)라는 새로운 스토리지 클래스를 제공합니다. 이 클래스는 Amazon S3 API를 사용하며 AWS Outposts의 여러 디바이스와 서버에 데이터를 이중화된 방식으로 안정적으로 저장하도록 설계되었습니다. Virtual Private Cloud(VPC)를 통한 액세스 포인트 및 엔드포인트 연결을 사용하여 Outpost 버킷과 통신합니다. 액세스 정책, 암호화, 태깅을 포함하여 Amazon S3 버킷에서와 같이 Outpost 버킷에서 동일한 API 및 기능을 사용할 수 있습니다. AWS Management Console, AWS Command Line Interface(AWS CLI), AWS SDK 또는 REST API를 통해 S3 on Outposts를 사용할 수 있습니다. 자세한 내용은 [Amazon S3 on Outposts란 무엇인가요?](S3onOutposts.md) 섹션을 참조하세요. 

다음 주제에서는 S3 on Outposts로 개발하는 방법에 대한 정보를 제공합니다.

**Topics**
+ [S3 on Outposts 지원 리전](S3OutpostsRegions.md)
+ [S3 on Outposts API 작업](S3OutpostsAPI.md)
+ [Java용 SDK를 사용하여 S3 on Outposts용 S3 제어 클라이언트 구성](S3OutpostsCongfigureS3ControlClientJava.md)
+ [IPv6를 통해 S3 on Outposts에 요청](S3OutpostsIPv6-access.md)

# S3 on Outposts 지원 리전
<a name="S3OutpostsRegions"></a>

S3 on Outposts는 다음 AWS 리전에서 지원됩니다.
+ 미국 동부(버지니아 북부)(us-east-1)
+ 미국 동부(오하이오)(us-east-2)
+ 미국 서부(캘리포니아 북부) (us-west-1)
+ 미국 서부(오레곤)(us-west-2)
+ 아프리카(케이프타운)(af-south-1)
+ 아시아 태평양(자카르타)(ap-southeast-3)
+ 아시아 태평양(뭄바이)(ap-south-1)
+ 아시아 태평양(오사카) (ap-northeast-3)
+ 아시아 태평양(서울)(ap-northeast-2)
+ 아시아 태평양(싱가포르)(ap-southeast-1)
+ 아시아 태평양(시드니)(ap-southeast-2)
+ 아시아 태평양(도쿄)(ap-northeast-1)
+ 캐나다(중부)(ca-central-1)
+ 유럽(프랑크푸르트)(eu-central-1)
+ 유럽(아일랜드)(eu-west-1)
+ 유럽(런던) (eu-west-2)
+ 유럽(밀라노) (eu-south-1)
+ 유럽(파리) (eu-west-3)
+ 유럽(스톡홀름) (eu-north-1)
+ 이스라엘(텔아비브) (il-central-1)
+ 중동(바레인)(me-south-1)
+ 남아메리카(상파울루) (sa-east-1)
+ AWS GovCloud(미국 동부)(us-gov-east-1)
+ AWS GovCloud(미국 서부)(us-gov-west-1)

# S3 on Outposts API 작업
<a name="S3OutpostsAPI"></a>

이 주제에서는 Amazon S3 on Outposts와 함께 사용할 수 있는 Amazon S3, Amazon S3 Control 및 Amazon S3 on Outposts API 작업을 나열합니다.

**Topics**
+ [객체 관리를 위한 Amazon S3 API 작업](#S3OutpostsAPIsObject)
+ [버킷 관리를 위한 Amazon S3 Control API 작업](#S3OutpostsAPIsBucket)
+ [Outposts 관리를 위한 S3 on Outposts API 작업](#S3OutpostsAPIs)

## 객체 관리를 위한 Amazon S3 API 작업
<a name="S3OutpostsAPIsObject"></a>

S3 on Outposts는 Amazon S3와 동일한 객체 API 작업을 사용하도록 설계되었습니다. Outpost 버킷의 객체에 액세스하려면 액세스 포인트를 사용해야 합니다. S3 on Outposts와 함께 객체 API 작업을 사용할 때 Outposts 액세스 포인트 Amazon 리소스 이름(ARN) 또는 액세스 포인트 별칭을 제공합니다. 액세스 포인트 별칭에 대한 자세한 내용은 [S3 on Outposts 버킷 액세스 포인트에 버킷 스타일 별칭 사용](s3-outposts-access-points-alias.md) 섹션을 참조하세요.

Amazon S3 on Outposts는 다음과 같은 Amazon S3 API 작업을 지원합니다.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

## 버킷 관리를 위한 Amazon S3 Control API 작업
<a name="S3OutpostsAPIsBucket"></a>

S3 on Outposts는 버킷 작업을 위해 다음과 같은 Amazon S3 Control API 작업을 지원합니다.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketPolicy.html)
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketReplication.html) 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteBucketTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucket.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucket.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketPolicy.html)
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketReplication.html) 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketTagging.html)
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketVersioning.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucketVersioning.html) 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListRegionalBuckets.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListRegionalBuckets.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutAccessPointPolicy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketPolicy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketPolicy.html)
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketReplication.html) 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketTagging.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketVersioning.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutBucketVersioning.html)

## Outposts 관리를 위한 S3 on Outposts API 작업
<a name="S3OutpostsAPIs"></a>

S3 on Outposts는 엔드포인트 관리를 위해 다음과 같은 Amazon S3 on Outposts API 작업을 지원합니다.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_CreateEndpoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_CreateEndpoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_DeleteEndpoint.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_DeleteEndpoint.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_ListEndpoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_ListEndpoints.html)
+ [ListOutpostsWithS3](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_ListOutpostsWithS3.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_ListSharedEndpoints.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3outposts_ListSharedEndpoints.html)

# Java용 SDK를 사용하여 S3 on Outposts용 S3 제어 클라이언트 구성
<a name="S3OutpostsCongfigureS3ControlClientJava"></a>

다음 예제에서는 AWS SDK for Java를 사용하여 Amazon S3 on Outposts용 Amazon S3 제어 클라이언트를 구성합니다. 이 예제를 사용하려면 각 `user input placeholder`를 사용자의 정보로 대체합니다.

```
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3control.AWSS3Control;
import com.amazonaws.services.s3control.AWSS3ControlClient;

public AWSS3Control createS3ControlClient() {

    String accessKey = AWSAccessKey;
    String secretKey = SecretAccessKey;
    BasicAWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secretKey);

    return AWSS3ControlClient.builder().enableUseArnRegion()
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
            .build();

}
```

# IPv6를 통해 S3 on Outposts에 요청
<a name="S3OutpostsIPv6-access"></a>

Amazon S3 on Outposts 및 S3 on Outposts 듀얼 스택 엔드포인트는 IPv6 또는 IPv4를 사용하는 S3 on Outposts 버킷 요청을 지원합니다. S3 on Outposts에 대한 IPv6 지원으로, IPv6 네트워크를 사용하는 S3 on Outposts API를 통해 버킷 및 컨트롤 플레인 리소스를 액세스 및 운영할 수 있습니다.

**참고**  
[S3 on Outposts 객체 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsAPI.html)(예: `PutObject` 또는`GetObject`) 은 IPv6 네트워크에서는 지원되지 않습니다.

IPv6 네트워크를 통한 S3 on Outposts 액세스에는 추가 요금이 청구되지 않습니다. S3 on Outposts에 대한 자세한 내용은 [S3 on Outposts 요금](https://aws.amazon.com/outposts/rack/pricing/)을 참조하세요.

**Topics**
+ [IPv6 시작하기](#S3Outposts-ipv6-access-getting-started)
+ [듀얼 스택 엔드포인트를 사용하여 IPv6 네트워크를 통해 요청](#S3Outposts-ipv6-access-api)
+ [IAM 정책에서 IPv6 주소 사용](#S3Outposts-ipv6-access-iam)
+ [IP 주소 호환성 테스트](#S3Outposts-ipv6-access-test-compatabilty)
+ [AWS PrivateLink로 IPv6 사용](#S3Outposts-ipv6-privatelink)
+ [S3 on Outposts 듀얼 스택 엔드포인트 사용](s3-outposts-dual-stack-endpoints.md)

## IPv6 시작하기
<a name="S3Outposts-ipv6-access-getting-started"></a>

IPv6를 통해 S3 on Outposts 버킷에 요청하려면 듀얼 스택 엔드포인트를 사용해야 합니다. 다음 단원에서는 듀얼 스택 엔드포인트를 사용하여 IPv6을 통해 요청하는 방법을 설명합니다.

다음은 IPv6를 통해 S3 on Outposts 버킷 액세스를 시도하기 전에 고려해야 할 중요한 사항입니다.
+ 버킷에 액세스하는 클라이언트와 네트워크가 IPv6을 사용하도록 설정되어 있어야 합니다.
+ 가상 호스팅 방식과 경로 방식 요청이 모두 IPv6 액세스를 지원합니다. 자세한 내용은 [S3 on Outposts 듀얼 스택 엔드포인트 사용](s3-outposts-dual-stack-endpoints.md) 섹션을 참조하세요.
+ AWS Identity and Access Management(IAM) 사용자 또는 S3 on Outposts 버킷 정책에서 소스 IP 주소 필터링을 사용하는 경우, IPv6 주소 범위를 포함하도록 정책을 업데이트해야 합니다.
**참고**  
이 요구 사항은 IPv6 네트워크 전반의 S3 on Outposts 버킷 작업 및 컨트롤 플레인 리소스에만 적용됩니다. [Amazon S3 on Outposts 객체 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsAPI.html)은 IPv6 네트워크에서는 지원되지 않습니다.
+ IPv6을 사용하는 경우, 서버 액세스 로그 파일이 IPv6 형식으로 IP 주소를 출력합니다. IPv6 형식의 원격 IP 주소를 구문 분석할 수 있도록 S3 on Outposts 로그 파일을 구문 분석하는 데 사용하는 기존 도구, 스크립트 및 소프트웨어를 업데이트해야 합니다. 그러면 업데이트된 도구, 스크립트 및 소프트웨어가 IPv6 형식의 원격 IP 주소를 올바르게 구문 분석합니다.

## 듀얼 스택 엔드포인트를 사용하여 IPv6 네트워크를 통해 요청
<a name="S3Outposts-ipv6-access-api"></a>

IPv6를 통해 S3 on Outposts API 호출을 요청하려면 AWS CLI 또는 AWS SDK를 통해 듀얼 스택 엔드포인트를 사용하면 됩니다. [Amazon S3 컨트롤 API 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsAPI.html#S3OutpostsAPIsBucket)과 [S3 on Outposts API 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsAPI.html#S3OutpostsAPIs)은 S3 on Outposts 액세스에 IPv6 프로토콜을 사용하든 IPv4 프로토콜을 사용하든 동일한 방식으로 작동합니다. 하지만 [S3 on Outposts 객체 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsAPI.html)(예: `PutObject` 또는 `GetObject`)은 IPv6 네트워크에서는 지원되지 않습니다.

AWS Command Line Interface(AWS CLI) 및 AWS SDK를 사용하는 경우, 파라미터 또는 플래그를 사용하여 듀얼 스택 엔드포인트를 변경할 수 있습니다. 구성 파일의 S3 on Outposts 엔드포인트를 재정의하여 듀얼 스택 엔드포인트를 직접 지정할 수도 있습니다.

듀얼 스택 엔드포인트를 사용하여 다음에서 IPv6를 통해 S3 on Outposts 버킷에 액세스할 수 있습니다.
+ AWS CLI에 대한 내용은 [AWS CLI의 듀얼 스택 엔드포인트 사용](s3-outposts-dual-stack-endpoints.md#s3-outposts-dual-stack-endpoints-cli)를 참조하십시오.
+ AWS SDK([AWS SDK의 S3 on Outposts 듀얼 스택 엔드포인트 사용](s3-outposts-dual-stack-endpoints.md#s3-outposts-dual-stack-endpoints-sdks) 참조).

## IAM 정책에서 IPv6 주소 사용
<a name="S3Outposts-ipv6-access-iam"></a>

IPv6 프로토콜을 사용하여 S3 on Outposts 버킷에 액세스하기 전에 IP 주소 필터링에 사용되는 IAM 사용자 또는 S3 on Outposts 버킷 정책이 IPv6 주소 범위를 포함하도록 업데이트되었는지 확인합니다. IP 주소 필터링 정책이 IPv6 주소를 처리하도록 업데이트되지 않은 경우, IPv6 프로토콜을 사용하려고 하는 동안 S3 on Outposts 버킷에 액세스하지 못하게 될 수 있습니다.

IP 주소를 필터링하는 IAM 정책은 [IP 주소 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IPAddress)를 사용합니다. 다음 S3 on Outposts 버킷 정책은 IP 주소 조건 연산자를 사용하여 허용되는 IPv4 주소의 54.240.143.\$1 IP 범위를 식별합니다. 이 범위를 벗어난 모든 IP 주소는 S3 on Outposts 버킷(`DOC-EXAMPLE-BUCKET`)에 대한 액세스가 거부됩니다. 모든 IPv6 주소가 허용되는 범위 밖에 있으므로 이 정책은 IPv6 주소가 `DOC-EXAMPLE-BUCKET`에 액세스하지 못하도록 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3-outposts:*",
            "Resource": "arn:aws:s3-outposts:us-east-1:111122223333:outpost/OUTPOSTS-ID/bucket/DOC-EXAMPLE-BUCKET/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}
```

------

다음 예제와 같이 IPv4(`54.240.143.0/24`) 및 IPv6(`2001:DB8:1234:5678::/64`) 주소 범위를 모두 허용하도록 S3 on Outposts 버킷 정책의 `Condition` 요소를 수정할 수 있습니다. 예제에 나와 있는 동일한 `Condition` 블록 유형을 사용하여 IAM 사용자와 버킷 정책 모두를 업데이트할 수 있습니다.

```
1.        "Condition": {
2.          "IpAddress": {
3.             "aws:SourceIp": [
4.               "54.240.143.0/24",
5.                "2001:DB8:1234:5678::/64"
6.              ]
7.           }
8.         }
```

IPv6을 사용하기 전에 IP 주소 필터링을 사용하는 관련된 모든 IAM 사용자와 버킷 정책이 IPv6 주소 범위를 허용하도록 업데이트해야 합니다. 기존 IPv4 주소 범위 외에도 조직의 IPv6 주소 범위를 포함하도록 IAM 정책을 업데이트하는 것이 좋습니다. IPv6 및 IPv4 모두를 통한 액세스를 허용하는 버킷 정책의 예는 [액세스를 특정 IP 주소로 제한](S3Outposts-example-bucket-policies.md#S3Outposts-example-bucket-policies-IP-1) 단원을 참조하세요.

[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)의 IAM 콘솔을 사용하여 IAM 사용자 정책을 검토할 수 있습니다. IAM에 대한 자세한 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)를 참조하세요. S3 on Outposts 버킷 정책에 대한 자세한 내용은 [Amazon S3 on Outposts 버킷의 버킷 정책 추가 또는 편집](S3OutpostsBucketPolicyEdit.md) 섹션을 참조하세요.

## IP 주소 호환성 테스트
<a name="S3Outposts-ipv6-access-test-compatabilty"></a>

Linux 또는 Unix 인스턴스 또는 macOS X 플랫폼을 사용하는 경우 IPv6를 통한 듀얼 스택 엔드포인트 액세스를 테스트할 수 있습니다. 예를 들어, IPv6를 통한 Amazon S3 on Outposts 엔드포인트 연결을 테스트하려면 다음 `dig` 명령을 사용합니다.

```
dig s3-outposts.us-west-2.api.aws AAAA +short
```

IPv6 네트워크를 통한 듀얼 스택 엔드포인트가 제대로 설정된 경우 `dig` 명령은 연결된 IPv6 주소를 반환합니다. 예제:

```
dig s3-outposts.us-west-2.api.aws AAAA +short

2600:1f14:2588:4800:b3a9:1460:159f:ebce

2600:1f14:2588:4802:6df6:c1fd:ef8a:fc76

2600:1f14:2588:4801:d802:8ccf:4e04:817
```

## AWS PrivateLink로 IPv6 사용
<a name="S3Outposts-ipv6-privatelink"></a>

S3 on Outposts는 AWS PrivateLink 서비스 및 엔드포인트에 IPv6 프로토콜을 지원합니다. AWS PrivateLink에서 IPv6 프로토콜을 지원므로 온프레미스 또는 기타 프라이빗 연결에서 IPv6 네트워크를 통해 VPC 내의 서비스 엔드포인트에 연결할 수 있습니다. 또한 [S3 on Outposts용 AWS PrivateLink](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-outposts-privatelink-interface-endpoints.html)의 IPv6 지원을 통해 AWS PrivateLink를 듀얼 스택 엔드포인트와 통합할 수 있습니다. AWS PrivateLink용 IPv6 활성화 방법에 대한 단계는 [Expedite your IPv6 adoption with AWS PrivateLink services and endpoints](https://aws.amazon.com/blogs/networking-and-content-delivery/expedite-your-ipv6-adoption-with-privatelink-services-and-endpoints/)를 참조하세요.

**참고**  
지원되는 IP 주소 유형을 IPv4에서 IPv6로 업데이트하려면 **AWS PrivateLink 사용 설명서의 [지원되는 IP 주소 유형 수정](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#supported-ip-address-types)을 참조하세요.

### AWS PrivateLink로 IPv6 사용
<a name="3Outposts-ipv6-privatelink-dualstack-vpc"></a>

AWS PrivateLink를 IPv6와 함께 사용하는 경우 IPv6 또는 듀얼 스택 VPC 인터페이스 엔드포인트를 생성해야 합니다. AWS Management Console을 사용하여 VPC 엔드포인트를 생성하는 방법에 대한 일반적인 단계는 **AWS PrivateLink 사용 안내서의 [인터페이스 VPC 엔드포인트를 사용하여 AWS 서비스 액세스](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint)를 참조하세요.

------
#### [ AWS Management Console ]

다음 절차에 따라 S3 on Outposts에 연결하는 인터페이스 VPC 엔드포인트를 생성합니다.

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 탐색 창에서 **엔드포인트**를 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

1. **서비스 범주(Service category)**에서 **AWS 서비스**를 선택합니다.

1. **서비스 이름**의 경우 S3 on Outposts 서비스(**com.amazonaws.us-east-1.s3-outposts**)를 선택합니다.

1. VPC에서 S3 on Outposts에 액세스하는 데 사용할 VPC를 선택합니다.

1. **서브넷**의 경우 S3 on Outposts 액세스를 시작할 서브넷을 가용 영역당 하나만 선택합니다. 동일한 가용 영역에서 여러 서브넷을 선택할 수 없습니다. 선택한 각 서브넷에서 새 엔드포인트 네트워크 인터페이스가 생성됩니다. 기본적으로 서브넷 IP 주소 범위의 IP 주소를 선택하고 엔드포인트 네트워크 인터페이스에 할당합니다. 엔드포인트 네트워크 인터페이스에 대한 IP 주소를 지정하려면 **IP 주소 지정**을 선택하고 서브넷 주소 범위의 IPv6 주소를 입력합니다.

1. **IP 주소 유형**의 경우 **듀얼 스택**을 선택합니다. 엔드포인트 네트워크 인터페이스에 IPv4 및 IPv6 주소를 모두 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있는 경우에만 지원됩니다.

1. **보안 그룹**의 경우 VPC 엔드포인트의 엔드포인트 네트워크 인터페이스에 연결할 보안 그룹을 선택합니다. 기본적으로 기본 보안 그룹이 VPC에 연결됩니다.

1. **정책**에서 **모든 액세스**를 선택하여 VPC 엔드포인트를 통한 모든 리소스에 대한 모든 보안 주체의 모든 작업을 허용합니다. 또는 **사용자 지정**을 선택하여 VPC 엔드포인트를 통해 리소스에 대한 작업을 수행하기 위해 보안 주체에 필요한 권한을 제어하는 VPC 엔드포인트 정책을 연결합니다. 이 옵션은 서비스에서 VPC 엔드포인트 정책을 지원하는 경우에만 사용할 수 있습니다. 자세한 내용은 [엔드포인트 정책](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)을 참조하세요.

1. (선택 사항) 태그를 추가하려면 **새 태그 추가**를 선택하고 태그 키와 태그 값을 입력합니다.

1. **엔드포인트 생성**을 선택합니다.

**Example - S3 on Outposts 버킷 정책**  
S3 on Outposts가 VPC 엔드포인트와 상호 작용하도록 허용하려면 다음과 같이 S3 on Outposts 정책을 업데이트하면 됩니다.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3-outposts:*",
            "Resource": "*",
            "Principal": "*"
        }
    ]
}
```

------
#### [ AWS CLI ]

**참고**  
VPC 엔드포인트에서 IPv6 네트워크를 활성화하려면 S3 on Outposts에 대한 `SupportedIpAddressType` 필터에 `IPv6`를 설정해야 합니다.

다음 예제에서는 `create-vpc-endpoint` 명령을 사용하여 새 듀얼 스택 인터페이스 엔드포인트를 생성합니다.

```
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345678 \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.us-east-1.s3-outposts \
--subnet-id subnet-12345678 \
--security-group-id sg-12345678 \
--ip-address-type dualstack \
--dns-options "DnsRecordIpType=dualstack"
```

AWS PrivateLink 서비스 구성에 따라 새로 생성된 엔드포인트 연결은 VPC 엔드포인트 서비스 공급자가 수락해야 사용할 수 있습니다. 자세한 내용은 **AWS PrivateLink 사용 설명서의 [엔드포인트 연결 요청 수락 및 거부를](https://docs.aws.amazon.com/vpc/latest/privatelink/configure-endpoint-service.html#accept-reject-connection-requests) 참조하세요.

다음 예제에서는 `modify-vpc-endpoint` 명령을 사용하여 IPv 전용 VPC 엔드포인트를 듀얼 스택 엔드포인트로 업데이트합니다. 듀얼 스택 엔드포인트는 IPv4 및 IPv6 네트워크 모두에 대한 액세스를 허용합니다.

```
aws ec2 modify-vpc-endpoint \
--vpc-endpoint-id vpce-12345678 \
--add-subnet-ids subnet-12345678 \
--remove-subnet-ids subnet-12345678 \
--ip-address-type dualstack \
--dns-options "DnsRecordIpType=dualstack"
```

AWS PrivateLink용 IPv6 네트워크 활성화 방법에 대한 자세한 내용은 [Expedite your IPv6 adoption with AWS PrivateLink services and endpoints](https://aws.amazon.com/blogs/networking-and-content-delivery/expedite-your-ipv6-adoption-with-privatelink-services-and-endpoints/)를 참조하세요.

------

# S3 on Outposts 듀얼 스택 엔드포인트 사용
<a name="s3-outposts-dual-stack-endpoints"></a>

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

**Topics**
+ [S3 on Outposts 듀얼 스택 엔드포인트](#s3-outposts-dual-stack-endpoints-description)
+ [AWS CLI의 듀얼 스택 엔드포인트 사용](#s3-outposts-dual-stack-endpoints-cli)
+ [AWS SDK의 S3 on Outposts 듀얼 스택 엔드포인트 사용](#s3-outposts-dual-stack-endpoints-sdks)

## S3 on Outposts 듀얼 스택 엔드포인트
<a name="s3-outposts-dual-stack-endpoints-description"></a>

듀얼 스택 엔드포인트에 요청하는 경우, S3 on Outposts 버킷 URL이 IPv6 또는 IPv4 주소로 확인됩니다. IPv6를 통해 S3 on Outposts 버킷에 액세스하는 방법의 자세한 내용은 [IPv6를 통해 S3 on Outposts에 요청](S3OutpostsIPv6-access.md) 섹션을 참조하세요.

듀얼 스택 엔드포인트를 통해 S3 on Outposts 버킷에 액세스하려면 경로 방식 엔드포인트 이름을 사용합니다. S3 on Outposts는 리전 듀얼 스택 엔드포인트 이름만 지원합니다. 이는 이름의 일부로 리전을 지정해야 함을 뜻합니다.

FIPS 듀얼 스택 엔드포인트에는 라는 명명 규칙이 사용됩니다.

```
s3-outposts-fips.region.api.aws
```

FIPS 듀얼 스택 엔드포인트에는 라는 명명 규칙이 사용됩니다.

```
s3-outposts.region.api.aws
```

**참고**  
가상 호스팅 스타일 엔드포인트 이름은 S3 on Outposts에서 지원되지 않습니다.

## AWS CLI의 듀얼 스택 엔드포인트 사용
<a name="s3-outposts-dual-stack-endpoints-cli"></a>

이 단원에서는 듀얼 스택 엔드포인트에 요청하는 데 사용되는 AWS CLI 명령의 예를 보여 줍니다. AWS CLI를 설치하는 지침은 [AWS CLI 및 Java용 SDK를 사용하여 시작하기](S3OutpostsGSCLIJava.md) 단원을 참조하십시오.

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

AWS CLI에서 듀얼 스택 엔드포인트를 사용하는 경우, `path` 주소 형식만 지원됩니다. 구성 파일에 설정된 주소 스타일은 버킷 이름이 호스트 이름에 있는지 URL에 있는지 제어합니다. 자세한 내용은 AWS CLI 사용 설명서**의 [https://docs.aws.amazon.com/cli/latest/reference/s3outposts/](https://docs.aws.amazon.com/cli/latest/reference/s3outposts/)를 참조하세요.

AWS CLI를 통해 듀얼 스택 엔드포인트를 사용하려면 `s3control` 또는 `s3outposts` 명령에 `http://s3.dualstack.region.amazonaws.com` 또는 `https://s3-outposts-fips.region.api.aws` 엔드포인트와 함께 `--endpoint-url` 파라미터를 사용합니다.

예제:

```
$  aws s3control list-regional-buckets --endpoint-url https://s3-outposts.region.api.aws
```

## AWS SDK의 S3 on Outposts 듀얼 스택 엔드포인트 사용
<a name="s3-outposts-dual-stack-endpoints-sdks"></a>

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

### AWS SDK for Java 2.x 듀얼 스택 엔드포인트 예제
<a name="s3-outposts-dual-stack-endpoints-examples-javav2"></a>

다음 예제에서는 AWS SDK for Java 2.x로 S3 on Outposts 클라이언트 생성 시 `S3ControlClient` 및 `S3OutpostsClient` 클래스를 사용하여 듀얼 스택 엔드포인트를 활성화하는 방법을 보여줍니다. Amazon S3용 실제 Java 예제를 작성 및 테스트하는 방법에 대한 자세한 내용은 [AWS CLI 및 Java용 SDK를 사용하여 시작하기](S3OutpostsGSCLIJava.md) 섹션을 참조하세요.

**Example - 듀얼 스택 엔드포인트가 활성화된 `S3ControlClient` 클래스 생성**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3control.S3ControlClient;
import software.amazon.awssdk.services.s3control.model.ListRegionalBucketsRequest;
import software.amazon.awssdk.services.s3control.model.ListRegionalBucketsResponse;
import software.amazon.awssdk.services.s3control.model.S3ControlException;


public class DualStackEndpointsExample1 {

    public static void main(String[] args) {
        Region clientRegion = Region.of("us-east-1");
        String accountId = "111122223333";
        String navyId = "9876543210";

        try {
            // Create an S3ControlClient with dual-stack endpoints enabled.
            S3ControlClient s3ControlClient = S3ControlClient.builder()
                                                             .region(clientRegion)
                                                             .dualstackEnabled(true)
                                                             .build();
            ListRegionalBucketsRequest listRegionalBucketsRequest = ListRegionalBucketsRequest.builder()
                                                                                              .accountId(accountId)
                                                                                              .outpostId(navyId)
                                                                                              .build();

            ListRegionalBucketsResponse listBuckets = s3ControlClient.listRegionalBuckets(listRegionalBucketsRequest);
            System.out.printf("ListRegionalBuckets Response: %s%n", listBuckets.toString());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 on Outposts couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        }
        catch (S3ControlException e) {
            // Unknown exceptions will be thrown as an instance of this type.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 on Outposts couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3 on Outposts.
            e.printStackTrace();
        }
    }
}
```

**Example - 듀얼 스택 엔드포인트가 활성화된 `S3OutpostsClient` 생성**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3outposts.S3OutpostsClient;
import software.amazon.awssdk.services.s3outposts.model.ListEndpointsRequest;
import software.amazon.awssdk.services.s3outposts.model.ListEndpointsResponse;
import software.amazon.awssdk.services.s3outposts.model.S3OutpostsException;


public class DualStackEndpointsExample2 {

    public static void main(String[] args) {
        Region clientRegion = Region.of("us-east-1");

        try {
            // Create an S3OutpostsClient with dual-stack endpoints enabled.
            S3OutpostsClient s3OutpostsClient = S3OutpostsClient.builder()
                                                              .region(clientRegion)
                                                              .dualstackEnabled(true)
                                                              .build();
            ListEndpointsRequest listEndpointsRequest = ListEndpointsRequest.builder().build();

            ListEndpointsResponse listEndpoints = s3OutpostsClient.listEndpoints(listEndpointsRequest);
            System.out.printf("ListEndpoints Response: %s%n", listEndpoints.toString());
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 on Outposts couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        }
        catch (S3OutpostsException e) {
            // Unknown exceptions will be thrown as an instance of this type.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 on Outposts couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3 on Outposts.
            e.printStackTrace();
        }
    }
}
```

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

```
java.net.preferIPv6Addresses=true
```