

# 디렉터리 버킷 사용 사례
<a name="directory-bucket-use-cases"></a>

디렉터리 버킷은 가용 영역 또는 로컬 영역과 같은 버킷 위치 유형에서 버킷 생성을 지원합니다.

지연 시간이 짧은 사용 사례의 경우 단일 가용 영역에 디렉터리 버킷을 생성하여 데이터를 저장할 수 있습니다. 가용 영역의 디렉터리 버킷은 S3 Express One Zone 스토리지 클래스를 지원합니다. S3 Express One Zone 스토리지 클래스는 애플리케이션이 성능에 민감하고 10밀리초 미만의 `PUT` 및 `GET` 지연 시간이 필요한 경우에 권장됩니다. 가용 영역에서 디렉터리 버킷을 생성하는 방법에 대한 자세한 내용은 [고성능 워크로드](directory-bucket-high-performance.md) 섹션을 참조하세요.

 데이터 레지던시 사용 사례의 경우 단일 AWS 전용 로컬 영역(DLZ)에 디렉터리 버킷을 생성하여 데이터를 저장할 수 있습니다. 로컬 영역의 디렉터리 버킷은 S3 One Zone-Infrequent Access(S3 One Zone-IA, Z-IA) 스토리지 클래스를 지원합니다. 로컬 영역에서 디렉터리 버킷을 생성하는 방법에 대한 자세한 내용은 [데이터 레지던시 워크로드](directory-bucket-data-residency.md) 섹션을 참조하세요.

**Topics**
+ [고성능 워크로드](directory-bucket-high-performance.md)
+ [데이터 레지던시 워크로드](directory-bucket-data-residency.md)

# 고성능 워크로드
<a name="directory-bucket-high-performance"></a>

## S3 Express One Zone
<a name="s3-express-one-zone"></a>

 고성능 워크로드에 Amazon S3 Express One Zone을 사용할 수 있습니다. S3 Express One Zone은 객체 스토리지를 컴퓨팅 리소스와 함께 배치하는 옵션을 제공하면서 단일 가용 영역 선택이 가능한 최초의 S3 스토리지 클래스로, 최고의 액세스 속도를 제공합니다. S3 Express One Zone의 객체는 가용 영역에 위치한 디렉터리 버킷에 저장됩니다. 디렉터리 버킷에 대한 자세한 내용은 [디렉터리 버킷](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html)을 참조하세요.

S3 Express One Zone은 지연 시간에 가장 민감한 애플리케이션에 대해 일관되게 10밀리초 미만의 데이터 액세스를 제공하도록 특별히 설계된 고성능 단일 영역 Amazon S3 스토리지 클래스입니다. S3 Express One Zone은 현재 사용 가능한 클라우드 객체 스토리지 클래스 중 지연 시간이 가장 낮으며, S3 Standard보다 데이터 액세스 속도는 최대 10배 빠르고 요청 비용은 50% 저렴합니다. 요청이 최대 10배 더 빠르게 완료되므로 애플리케이션이 즉시 이점을 누릴 수 있습니다. S3 Express One Zone은 다른 S3 스토리지 클래스와 유사한 성능 탄력성을 제공합니다. S3 Express One Zone은 일관된 10밀리초 미만의 지연 시간이 필요한 워크로드 또는 성능이 중요한 애플리케이션에 사용됩니다.

다른 Amazon S3 스토리지 클래스와 마찬가지로 용량 또는 처리량 요구 사항을 미리 계획하거나 프로비저닝할 필요가 없습니다. 필요에 따라 스토리지를 확장하거나 축소하고 Amazon S3 API를 통해 데이터에 액세스할 수 있습니다.

Amazon S3 Express One Zone 스토리지 클래스는 단일 가용 영역 내에서 99.95%의 가용성을 제공하도록 설계되었으며 [Amazon S3 서비스 수준 계약](https://aws.amazon.com/s3/sla/)의 지원을 받습니다. S3 Express One Zone 스토리지 클래스를 사용하면 단일 가용 영역 내의 여러 디바이스에 데이터가 중복으로 저장됩니다. S3 Express One Zone은 손실된 중복성을 신속하게 탐지하고 복구하여 동시 디바이스 오류를 처리하도록 설계되었습니다. 기존 디바이스에서 장애가 발생하는 경우 S3 Express One Zone은 자동으로 요청을 가용 영역 내의 새 디바이스로 이전합니다. 이러한 중복성은 가용 영역 내의 데이터에 대한 중단 없는 액세스를 보장하는 데 도움이 됩니다.

S3 Express One Zone은 객체 액세스에 필요한 지연 시간을 최소화하는 것이 중요한 모든 애플리케이션에 적합합니다. 크리에이티브 전문가가 사용자 인터페이스에서 콘텐츠에 신속하게 액세스해야 하는 비디오 편집과 같은 인적 상호작용 워크플로를 이러한 애플리케이션의 예로 들 수 있습니다. 또한 S3 Express One Zone은 데이터에 대한 응답성 요구 사항이 유사한 분석 및 기계 학습 워크로드, 특히 소규모 액세스가 많거나 임의 액세스가 많은 워크로드에 유용합니다. S3 Express One Zone을 다른 AWS 서비스와 함께 사용하여 분석 및 인공 지능 및 기계 학습(AI/ML) 워크로드(예: Amazon EMR, Amazon SageMaker AI, Amazon Athena)를 지원할 수 있습니다.

![\[S3 Express One Zone의 작동 방식을 보여 주는 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


S3 Express One Zone 스토리지 클래스를 사용하는 디렉터리 버킷의 경우 데이터는 단일 가용 영역 내의 여러 디바이스에 데이터를 저장하지만 서로 다른 가용 영역에 데이터를 중복으로 저장하지는 않습니다. 디렉터리 버킷을 생성하여 S3 Express One Zone 스토리지 클래스를 사용할 때 Amazon EC2, Amazon Elastic Kubernetes Service 또는 Amazon Elastic Container Service(Amazon ECS) 컴퓨팅 인스턴스와 같은 위치의 로컬 가용 영역과 AWS 리전을 지정하여 성능을 최적화하는 것이 좋습니다.

S3 Express One Zone을 사용하면 게이트웨이 VPC 엔드포인트를 사용하여 가상 프라이빗 클라우드(VPC)의 디렉터리 버킷과 상호작용할 수 있습니다. 게이트웨이 엔드포인트를 사용하면 인터넷 게이트웨이 또는 VPC의 NAT 디바이스를 사용하지 않고 추가 비용 없이 VPC에서 S3 Express One Zone 디렉터리 버킷 액세스할 수 있습니다.

범용 버킷 및 기타 스토리지 클래스에서 사용하는 디렉터리 버킷과 동일한 Amazon S3 API 작업 및 기능을 여러 개 사용할 수 있습니다. 여기에는 Mountpoint for Amazon S3, Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3), AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS), S3 배치 운영, S3 퍼블릭 액세스 차단이 포함됩니다. Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 및 Amazon S3 REST API를 사용하여 S3 Express One Zone 스토리지 클래스에 액세스할 수 있습니다.

S3 Express One Zone에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [개요](#s3-express-one-zone-overview)
+ [S3 Express One Zone의 기능](#s3-express-features)
+ [관련 서비스](#s3-express-related-services)
+ [다음 단계](#s3-express-next-steps)

### 개요
<a name="s3-express-one-zone-overview"></a>

성능을 최적화하고 지연 시간을 줄이기 위해 S3 Express One Zone에 다음과 같은 새로운 개념을 도입했습니다.

#### 가용 영역
<a name="s3-express-overview-az"></a>

Amazon S3 Express One Zone 스토리지 클래스는 단일 가용 영역 내에서 99.95%의 가용성을 제공하도록 설계되었으며 [Amazon S3 서비스 수준 계약](https://aws.amazon.com/s3/sla/)의 지원을 받습니다. S3 Express One Zone 스토리지 클래스를 사용하면 단일 가용 영역 내의 여러 디바이스에 데이터가 중복으로 저장됩니다. S3 Express One Zone은 손실된 중복성을 신속하게 탐지하고 복구하여 동시 디바이스 오류를 처리하도록 설계되었습니다. 기존 디바이스에서 장애가 발생하는 경우 S3 Express One Zone은 자동으로 요청을 가용 영역 내의 새 디바이스로 이전합니다. 이러한 중복성은 가용 영역 내의 데이터에 대한 중단 없는 액세스를 보장하는 데 도움이 됩니다.

가용 영역은 AWS 리전에 중복 전원, 네트워킹 및 연결이 있는 하나 이상의 개별 데이터 센터입니다. 디렉터리 버킷을 생성할 때 버킷이 위치할 가용 영역과 AWS 리전을 선택합니다.

##### 단일 가용 영역
<a name="directory-buckets-availability-zone"></a>

디렉터리 버킷을 생성할 때 가용 영역과 AWS 리전을 선택합니다.

디렉터리 버킷은 성능에 민감한 애플리케이션에서 사용하도록 빌드된 S3 Express One Zone 스토리지 클래스를 사용합니다. S3 Express One Zone은 객체 스토리지를 컴퓨팅 리소스와 함께 배치하는 옵션을 제공하면서 단일 가용 영역 선택이 가능한 최초의 S3 스토리지 클래스로, 최고의 액세스 속도를 제공합니다.

S3 Express One Zone 스토리지 클래스를 사용하면 단일 가용 영역 내의 여러 디바이스에 데이터가 중복으로 저장됩니다. S3 Express One Zone은 단일 가용 영역 내에서 99.95%의 가용성을 제공하도록 설계되었으며 [Amazon S3 서비스 수준 계약](https://aws.amazon.com/s3/sla/)의 지원을 받습니다. 자세한 내용은 [가용 영역](#s3-express-overview-az) 섹션을 참조하세요.

#### 엔드포인트 및 게이트웨이 VPC 엔드포인트
<a name="s3-express-overview-endpoints"></a>

디렉터리 버킷의 버킷 관리 API 작업은 리전 엔드포인트를 통해 사용할 수 있으며 이를 리전 엔드포인트 API 작업이라고 합니다. 리전 엔드포인트 API 작업의 예로는 `CreateBucket` 및 `DeleteBucket`이 있습니다. 디렉터리 버킷을 생성한 후 영역 엔드포인트 API 작업을 사용하여 디렉터리 버킷에 객체를 업로드하고 관리할 수 있습니다. 영역 엔드포인트 API 작업은 영역 엔드포인트를 통해 사용할 수 있습니다. 영역 엔드포인트 API 작업의 예로는 `PutObject` 및 `CopyObject`가 있습니다.

VPC에서 게이트웨이 VPC 엔드포인트를 사용하여 S3 Express One Zone에 액세스할 수 있습니다. 게이트웨이 엔드포인트를 생성한 후 VPC에서 S3 Express One Zone으로 전송되는 트래픽에 대해 해당 엔드포인트를 라우팅 테이블의 대상으로 추가할 수 있습니다. Amazon S3와 마찬가지로 게이트웨이 엔드포인트 사용에 따르는 추가 요금은 없습니다. 게이트웨이 VPC 엔드포인트를 구성하는 방법에 대한 자세한 내용은 [디렉터리 버킷에 대한 네트워킹](s3-express-networking.md) 섹션을 참조하세요.

#### 세션 기반 권한 부여
<a name="s3-express-overview-authorization"></a>

S3 Express One Zone을 사용하면 지연 시간을 최소화하도록 최적화된 새로운 세션 기반 메커니즘을 통해 요청을 인증하고 권한을 부여할 수 있습니다. `CreateSession`을 사용하여 지연 시간이 짧은 버킷 액세스를 제공하는 임시 자격 증명을 요청할 수 있습니다. 이러한 임시 자격 증명의 범위는 특정 S3 디렉터리 버킷으로 지정됩니다. 세션 토큰은 영역(객체 수준) 작업([CopyObject](directory-buckets-objects-copy.md) 제외)에만 사용됩니다. 자세한 내용은 [`CreateSession`을 사용하여 영역 엔드포인트 API 작업 권한 부여](s3-express-create-session.md) 섹션을 참조하세요.

[지원되는 S3 Express One Zone용 AWS SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks)는 사용자를 대신하여 세션 설정 및 새로 고침을 처리합니다. 세션을 보호하기 위해 임시 자격 증명은 5분 후에 만료됩니다. AWS SDK를 다운로드하여 설치하고 필요한 AWS Identity and Access Management(IAM) 권한을 구성한 후에는 즉시 API 작업을 사용할 수 있습니다.

### S3 Express One Zone의 기능
<a name="s3-express-features"></a>

S3 Express One Zone에서 사용할 수 있는 S3 기능은 다음과 같습니다. 지원되는 API 작업 및 지원되지 않는 기능의 전체 목록은 [디렉터리 버킷의 차이점](s3-express-differences.md) 섹션을 참조하세요.

#### 액세스 관리 및 보안
<a name="s3-express-features-access-management"></a>

다음 기능을 사용하여 액세스를 감사하고 관리할 수 있습니다. 기본적으로 디렉터리 버킷은 프라이빗이며 액세스 권한이 명시적으로 부여된 사용자만 액세스할 수 있습니다. 버킷, 접두사 또는 객체 태그 수준에서 액세스 제어 경계를 설정할 수 있는 범용 버킷과 달리 디렉터리 버킷의 액세스 제어 경계는 버킷 수준에서만 설정됩니다. 자세한 내용은 [IAM을 사용한 리전 엔드포인트 API 권한 부여](s3-express-security-iam.md) 섹션을 참조하세요.
+ [S3 퍼블릭 액세스 차단](access-control-block-public-access.md) - 모든 S3 퍼블릭 액세스 차단 설정은 기본적으로 버킷 수준에서 활성화됩니다. 이 기본 설정은 수정할 수 없습니다.
+ [S3 객체 소유권](about-object-ownership.md)(버킷 소유자가 기본적으로 적용됨) - 액세스 제어 목록(ACL)은 디렉터리 버킷에 지원되지 않습니다. 디렉토리 버킷은 S3 객체 소유권에 대해 버킷 소유자 적용 설정을 자동으로 사용합니다. 버킷 소유자 시행은 ACL이 비활성화되고 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어한다는 의미입니다. 이 기본 설정은 수정할 수 없습니다.
+ [AWS Identity and Access Management(IAM)](s3-express-security-iam.md) - IAM을 사용하면 디렉터리 버킷에 대한 액세스를 안전하게 제어할 수 있습니다. IAM을 사용하면 `s3express:CreateSession` 작업을 통해 버킷 관리(리전) API 작업 및 객체 관리(영역) API 작업에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 [IAM을 사용한 리전 엔드포인트 API 권한 부여](s3-express-security-iam.md) 섹션을 참조하세요. 객체 관리 작업과 달리 버킷 관리 작업은 계정 간에 수행할 수 없습니다. 버킷 소유자만 이러한 작업을 수행할 수 있습니다.
+ [버킷 정책](s3-express-security-iam-example-bucket-policies.md) - IAM 기반 정책 언어를 사용하여 디렉터리 버킷에 대한 리소스 기반 권한을 구성합니다. 또한 IAM을 사용하여 `CreateSession` API 작업에 대한 액세스를 제어할 수 있으며, 이를 통해 리전 또는 객체 관리 API 작업을 사용할 수 있습니다. 영역 API 작업에 대한 동일 계정 또는 크로스 계정 액세스 권한을 부여할 수 있습니다. S3 Express One Zone 권한 및 정책에 대한 자세한 내용은 [IAM을 사용한 리전 엔드포인트 API 권한 부여](s3-express-security-iam.md) 섹션을 참조하세요.
+ [IAM Access Analyzer for S3](access-analyzer.md) - 액세스 정책을 평가 및 모니터링하여 정책이 S3 리소스에 대한 의도된 액세스만 제공하는지 확인합니다.

#### 로깅 및 모니터링
<a name="s3-express-features-logging-monitoring"></a>

S3 Express One Zone은 리소스가 사용되는 방식을 모니터링하고 제어하는 데 사용할 수 있는 다음의 S3 로깅 및 모니터링 도구를 제공합니다.
+ [Amazon CloudWatch 지표](cloudwatch-monitoring.md) - CloudWatch를 사용하여 지표를 수집 및 추적하는 방식으로 AWS 리소스 및 애플리케이션을 모니터링합니다. S3 Express One Zone은 다른 Amazon S3 스토리지 클래스(`AWS/S3`)와 동일한 CloudWatch 네임스페이스를 사용하며 디렉터리 버킷 `BucketSizeBytes` 및 `NumberOfObjects`에 대해 일일 스토리지 지표를 지원합니다. 자세한 내용은 [Amazon CloudWatch를 사용한 지표 모니터링](cloudwatch-monitoring.md) 섹션을 참조하세요.
+ [AWS CloudTrail 로그](cloudtrail-logging-s3-info.md) - AWS CloudTrail은 사용자, 역할 또는 AWS 서비스가 수행한 작업을 기록하여 AWS 계정의 운영 및 위험 감사, 거버넌스, 규정 준수를 구현하는 데 도움이 되는 AWS 서비스입니다. S3 Express One Zone의 경우 CloudTrail은 리전 엔드포인트 API 작업(예: `CreateBucket` 및 `PutBucketPolicy`)을 관리 이벤트로 캡처하고 영역 API 작업(예: `GetObject` 및 `PutObject`)을 데이터 이벤트로 캡처합니다. 이러한 이벤트에는AWS Management Console, AWS Command Line Interface (AWS CLI), AWS SDK 및 AWS API 작업에서 수행된 작업이 포함됩니다. 자세한 내용은 [S3 Express One Zone에 대한 AWS CloudTrail 로깅](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)을 참조하세요.

**참고**  
Amazon S3 서버 액세스 로그는 S3 Express One Zone에서 지원되지 않습니다.

#### 객체 관리
<a name="s3-express-features-object-management"></a>

Amazon S3 콘솔, AWS SDK 및 AWS CLI를 사용하여 객체 스토리지를 관리할 수 있습니다. S3 Express One Zone에서 객체 관리에 사용할 수 있는 기능은 다음과 같습니다.
+ [S3 배치 작업](batch-ops-create-job.md) - 배치 작업을 사용하여 디렉터리 버킷의 객체에 배치 작업을 수행합니다(예: **복사** 및 **AWS Lambda 함수 호출**). 예를 들어 배치 작업를 사용하여 디렉터리 버킷과 범용 버킷 간에 객체를 복사할 수 있습니다. 배치 작업을 사용하면 AWS SDK 또는 AWS CLI를 사용하거나 Amazon S3 콘솔에서 몇 번의 클릭을 통해 하나의 S3 요청으로 수십억 개의 객체를 대규모로 관리할 수 있습니다.
+ [가져오기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job.html) - 디렉터리 버킷을 생성한 후 Amazon S3 콘솔의 가져오기 기능을 사용하여 버킷을 객체로 채울 수 있습니다. 가져오기는 범용 버킷에서 디렉터리 버킷으로 객체를 복사하는 배치 작업 건을 생성하는 간소화된 방법입니다.

#### AWS SDK 및 클라이언트 라이브러리
<a name="s3-express-features-client-libraries"></a>

 AWS SDK 및 클라이언트 라이브러리를 사용하여 객체 스토리지를 관리할 수 있습니다.
+ [Mountpoint for Amazon S3](https://github.com/awslabs/mountpoint-s3/blob/main/doc/SEMANTICS.md) - Mountpoint for Amazon S3는 높은 처리량 액세스를 제공하여 Amazon S3의 데이터 레이크에 대한 컴퓨팅 비용을 낮추는 오픈 소스 파일 클라이언트입니다. Mountpoint for Amazon S3는 로컬 파일 시스템 API 직접 호출을 `GET` 및 `LIST`와 같은 S3 객체 API 직접 호출로 변환합니다. 페타바이트 규모의 데이터를 처리하고 수천 개의 인스턴스로 확장 및 축소하기 위해 Amazon S3에서 제공하는 탄력적인 처리량이 필요한 읽기 중심의 데이터 레이크 워크로드에 적합합니다.
+ [https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client) - S3A는 Amazon S3의 데이터 스토어에 액세스하는 데 권장되는 Hadoop 호환 인터페이스입니다. S3A는 S3N Hadoop 파일 시스템 클라이언트를 대체합니다.
+ [PyTorch on AWS](https://docs.aws.amazon.com//sagemaker/latest/dg/pytorch.html) - PyTorch on AWS는 기계 학습 모델을 쉽게 개발하고 프로덕션에 배포하는 데 사용되는 오픈 소스 딥 러닝 프레임워크입니다.
+ [AWS SDK](https://aws.amazon.com//developer/tools/) - Amazon S3로 애플리케이션을 개발할 때 AWS SDK를 사용할 수 있습니다. AWS SDK에서는 기본 Amazon S3 REST API를 래핑하여 프로그래밍 태스크를 단순화합니다. S3 Express One Zone에서 AWS SDK를 사용하는 방법에 대한 자세한 내용은 [AWS SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks) 섹션을 참조하세요.

### 암호화 및 데이터 보호
<a name="s3-express-features-encryption"></a>

S3 Express One Zone의 객체는 Amazon S3 관리형 키를 통한 서버 측 암호화(SSE-S3)를 통해 자동으로 암호화됩니다. S3 Express One Zone은 AWS Key Management Service(AWS KMS) 키(SSE-KMS)를 사용한 서버 측 암호화도 지원합니다. S3 Express One Zone은 고객 제공 암호화 키를 사용한 서버 측 암호화(SSE-C) 또는 AWS KMS keys를 사용한 이중 계층 서버 측 암호화(DSSE-KMS)를 지원하지 않습니다. 자세한 내용은 [데이터 보호 및 암호화](s3-express-data-protection.md) 섹션을 참조하세요.

S3 Express One Zone은 업로드 또는 다운로드 중에 데이터를 검증하는 데 사용하는 체크섬 알고리즘을 선택할 수 있는 옵션을 제공합니다. SHA(보안 해시 알고리즘) 또는 CRC(순환 중복 검사) 데이터 무결성 확인 알고리즘(CRC32, CRC32C, SHA-1, SHA-256) 중 하나를 선택할 수 있습니다. MD5 기반 체크섬은 S3 Express One Zone 스토리지 클래스에서 지원되지 않습니다.

자세한 내용은 [S3 추가 체크섬 모범 사례](s3-express-optimizing-performance.md#s3-express-optimizing-performance-checksums) 섹션을 참조하세요.

### AWS 서명 버전 4(SigV4)
<a name="s3-express-features-sigv4"></a>

S3 Express One Zone은 AWS Signature Version 4(SigV4)를 사용합니다. SigV4는 HTTPS를 통해 Amazon S3에 대한 요청을 인증하는 데 사용되는 서명 프로토콜입니다. S3 Express One Zone은 AWS Sigv4를 사용하여 요청에 서명합니다. 자세한 내용은 *Amazon Simple Storage Service API 참조*의 [요청 인증(AWS 서명 버전 4)](https://docs.aws.amazon.com//AmazonS3/latest/API/sig-v4-authenticating-requests.html)을 참조하세요.

### 강력한 일관성
<a name="s3-express-features-strong-consistency"></a>

S3 Express One Zone은 모든 AWS 리전의 디렉터리 버킷에 있는 객체의 `PUT` 및 `DELETE` 요청에 대해 강력한 쓰기 후 읽기(read-after-write) 일관성을 제공합니다. 자세한 내용은 [Amazon S3 데이터 일관성 모델](Welcome.md#ConsistencyModel) 섹션을 참조하세요.

### 관련 서비스
<a name="s3-express-related-services"></a>

S3 Express One Zone 스토리지 클래스와 함께 다음 AWS 서비스를 사용하여 지연 시간이 짧은 구체적인 사용 사례를 지원할 수 있습니다.
+ [Amazon Elastic Compute Cloud(Amazon EC2)](https://docs.aws.amazon.com/ec2/index.html) – Amazon EC2는 AWS 클라우드에서 안전하고 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요성이 감소되어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 빌드하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html.html) - Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 버킷에 알림 설정을 구성하고 Amazon S3에 함수의 리소스 기반 권한 정책에 따라 함수를 간접 호출할 수 있는 권한을 부여합니다.
+ [Amazon Elastic Kubernetes Service(Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) - Amazon EKS는 AWS에 자체 Kubernetes 컨트롤 플레인을 설치, 운영 및 유지 관리할 필요가 없는 관리형 서비스입니다. [https://kubernetes.io/docs/concepts/overview/](https://kubernetes.io/docs/concepts/overview/)는 컨테이너화된 애플리케이션의 관리, 규모 조정 및 배포를 자동화하는 오픈 소스 시스템입니다.
+ [Amazon Elastic Container Service(Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) Amazon ECS는 컨테이너화된 애플리케이션을 쉽게 배포, 관리, 규모 조정할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스입니다.
+ [AWS Key Management Service(AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) – AWS Key Management Service(AWS KMS)는 데이터 암호화에 사용하는 암호화 키를 쉽게 생성하고 제어할 수 있게 해주는 AWS 관리형 서비스입니다. AWS KMS에서 생성하는 AWS KMS 키는 FIPS 140-2 검증 하드웨어 보안 모듈(HSM)로 보호됩니다. KMS 키를 사용하거나 관리하려면 AWS KMS와 상호 작용합니다.
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) – Amazon Athena는 표준 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html)을 사용해 Amazon S3에서 직접 데이터를 간편하게 분석할 수 있는 대화식 쿼리 서비스입니다. 또한 Athena를 사용하면 리소스를 계획, 구성 또는 관리할 필요 없이 Apache Spark를 사용하여 데이터 분석을 대화식으로 실행할 수 있습니다. Athena에서 Apache Spark 애플리케이션을 실행하는 경우 처리를 위해 Spark 코드를 제출하고 결과를 직접 수신합니다.
+ [Amazon SageMaker 훈련](https://docs.aws.amazon.com//sagemaker/latest/dg/how-it-works-training.html) - AWS Marketplace의 기본 제공 알고리즘, 사용자 지정 알고리즘, 라이브러리 및 모델 등 Amazon SageMaker를 사용하여 모델을 훈련하는 옵션을 검토합니다.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) -AWS Glue 는 분석 사용자가 여러 소스의 데이터를 쉽게 검색, 준비, 이동, 통합할 수 있도록 하는 서버리스 데이터 통합 서비스입니다. 분석, 기계 학습 및 애플리케이션 개발에 AWS Glue를 사용할 수 있습니다. AWS Glue에도 작성, 작업 실행, 비즈니스 워크플로 구현을 위한 추가 생산성 및 데이터 운영 도구가 있습니다.
+ [Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-what-is-emr.html) – Amazon EMR은 AWS에서 Apache Hadoop 및 Apache Spark와 같은 빅 데이터 프레임워크 실행을 단순화하여 방대한 양의 데이터를 처리하고 분석하는 관리형 클러스터 플랫폼입니다.
+ [AWSCloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-user-guide.html) – AWSCloudTrail은 AWS 계정의 운영 및 위험 감사, 거버넌스, 규정 준수를 지원하는 AWS 서비스입니다. 사용자, 역할 또는 AWS 서비스가 수행하는 작업은 CloudTrail에 이벤트로 기록됩니다. 이벤트에는 AWS Management Console, AWS Command Line Interface, AWS SDK 및 API에서 수행되는 작업이 포함됩니다.
+ [AWS CloudFormation](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/Welcome.html) – AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다. 필요한 모든 AWS 리소스(예: Amazon EC2 인스턴스 또는 Amazon RDS DB 인스턴스)를 설명하는 템플릿을 생성하면 CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당합니다. AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는지 파악할 필요도 없습니다. CloudFormation에서 모든 것을 처리합니다.

### 다음 단계
<a name="s3-express-next-steps"></a>

S3 Express One Zone 스토리지 클래스 및 디렉터리 버킷 사용에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [튜토리얼: S3 Express One Zone 시작하기](s3-express-getting-started.md)
+ [S3 Express One Zone 가용 영역 및 리전](s3-express-Endpoints.md)
+ [가용 영역의 디렉터리 버킷에 대한 네트워킹](directory-bucket-az-networking.md)
+ [가용 영역에서 디렉터리 버킷 생성](directory-bucket-create.md)
+ [가용 영역의 디렉터리 버킷에 대한 리전 및 영역 엔드포인트](endpoint-directory-buckets-AZ.md)
+ [S3 Express One Zone 성능 최적화](s3-express-performance.md)

# 튜토리얼: S3 Express One Zone 시작하기
<a name="s3-express-getting-started"></a>

Amazon S3 Express One Zone은 객체 스토리지를 컴퓨팅 리소스와 함께 배치하는 옵션을 제공하면서 단일 가용 영역 선택이 가능한 최초의 S3 스토리지 클래스로, 최고의 액세스 속도를 제공합니다. S3 Express One Zone에 있는 데이터는 가용 영역에 위치한 디렉터리 버킷에 저장됩니다. 디렉터리 버킷에 대한 자세한 내용은 [디렉터리 버킷](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html)을 참조하세요.

 S3 Express One Zone은 요청 지연 시간을 최소화하는 것이 중요한 모든 애플리케이션에 적합합니다. 크리에이티브 전문가가 사용자 인터페이스에서 콘텐츠에 신속하게 액세스해야 하는 비디오 편집과 같은 인적 상호작용 워크플로를 이러한 애플리케이션의 예로 들 수 있습니다. 또한 S3 Express One Zone은 데이터에 대한 응답성 요구 사항이 유사한 분석 및 기계 학습 워크로드, 특히 소규모 액세스가 많거나 임의 액세스가 많은 워크로드에 유용합니다. S3 Express One Zone을 다른 AWS 서비스(예: Amazon EMR, Amazon Athena, AWS Glue Data Catalog, Amazon SageMaker Model Training)와 함께 사용하여 분석 및 인공 지능 및 기계 학습(AI/ML) 워크로드를 지원할 수 있습니다. Amazon S3 콘솔, AWS SDK, AWS 명령줄 인터페이스(AWS CLI), Amazon S3 REST API를 사용하여 S3 Express One Zone 스토리지 클래스 및 디렉터리 버킷을 사용할 수 있습니다. 자세한 내용은 [S3 Express One Zone이란?](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-one-zone.html) 및 [S3 Express One Zone의 차이점](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html)을 참조하세요.

![\[이는 S3 Express One Zone 워크플로 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


**목표**  
이 튜토리얼에서는 게이트웨이 엔드포인트를 생성하고, IAM 정책을 생성 및 연결하고, 디렉터리 버킷을 생성한 다음, 가져오기 작업을 사용하여 범용 버킷에 현재 저장된 객체로 디렉터리 버킷을 채우는 방법을 알아봅니다. 디렉터리 버킷에 객체를 수동으로 업로드할 수 있습니다.

**Topics**
+ [사전 조건](#s3-express-tutorial-prerequisites)
+ [1단계: S3 Express One Zone 디렉터리 버킷에 도달하도록 게이트웨이 VPC 엔드포인트 구성](s3-express-tutorial-endpoints.md)
+ [2단계: S3 Express One Zone 디렉터리 버킷 생성](s3-express-tutorial-create-directory-bucket.md)
+ [3단계: S3 Express One Zone 디렉터리 버킷으로 데이터 가져오기](s3-express-tutorial-Import.md)
+ [4단계: S3 Express One Zone 디렉터리 버킷에 객체를 수동으로 업로드](s3-express-tutorial-Upload.md)
+ [5단계: S3 Express One Zone 디렉터리 버킷 비우기](s3-express-tutoiral-Empty.md)
+ [6단계: S3 Express One Zone 디렉터리 버킷 삭제](s3-express-tutoiral-Delete.md)
+ [다음 단계](#s3-express-tutoiral-Next)

## 사전 조건
<a name="s3-express-tutorial-prerequisites"></a>

이 자습서를 시작하기 전에 올바른 권한이 있는 AWS Identity and Access Management(IAM) 사용자로 로그인할 수 있는 AWS 계정이 있어야 합니다.

**Topics**
+ [AWS 계정 생성](#s3-express-create-account)
+ [AWS 계정에서 IAM 사용자 생성(콘솔)](#s3-express-tutorial-user)
+ [IAM 정책을 생성하여 IAM 사용자 또는 역할에 연결(콘솔)](#s3-express-tutorial-polict)

### AWS 계정 생성
<a name="s3-express-create-account"></a>

이 자습서를 완료하려면 AWS 계정이 필요합니다. AWS에 가입하면 Amazon S3를 포함하여 AWS의 모든 서비스에 AWS 계정이 자동으로 등록됩니다. 사용자에게는 사용한 서비스에 대해서만 요금이 청구됩니다. 요금에 대한 자세한 내용은 [S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

### AWS 계정에서 IAM 사용자 생성(콘솔)
<a name="s3-express-tutorial-user"></a>

AWS Identity and Access Management(IAM)는 관리자가 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있도록 지원하는 AWS 서비스입니다. IAM 관리자는 어떤 사용자가 S3 Express One Zone의 객체에 액세스하고 디렉터리 버킷을 사용할 수 있도록 인증(로그인)되고 권한이 부여(권한 보유)될 수 있는지 제어합니다. IAM은 추가 요금 없이 사용할 수 있습니다.

기본적으로 사용자는 디렉터리 버킷에 액세스하고 S3 Express One Zone 작업을 수행할 수 있는 권한이 없습니다. 디렉터리 버킷 및 S3 Express One Zone 작업에 대한 액세스 권한을 부여하려면 IAM을 사용하여 사용자 또는 역할을 생성하고 해당 ID에 권한을 연결하면 됩니다. IAM 사용자를 생성하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)을 참조하십시오. IAM 역할을 생성하는 방법에 대한 자세한 내용은 **IAM 사용 설명서의 [IAM 사용자에게 권한을 위임하는 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하세요.

편의상 이 자습서에서는 IAM 사용자를 생성해 사용합니다. 이 자습서를 완료하면 [IAM 사용자 삭제](tutorial-s3-object-lambda-uppercase.md#ol-upper-step8-delete-user)를 수행해야 합니다. 프로덕션 용도로는 **IAM 사용 설명서에서 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 따르는 것이 좋습니다. 가장 좋은 방법은 인간 사용자가 ID 제공업체와의 페더레이션을 사용하여 임시 보안 인증으로 AWS에 액세스하도록 하는 것입니다. 워크로드에서 IAM 역할과 함께 임시 보안 인증을 사용하여 AWS에 액세스하도록 하는 것도 좋은 방법입니다. AWS IAM Identity Center을 사용하여 임시 자격 증명으로 사용자를 생성하는 방법은 **AWS IAM Identity Center 사용 설명서의 [시작하기](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)를 참조하세요.

**주의**  
IAM 사용자는 장기 자격 증명을 가지므로 보안 위험이 있습니다. 이 위험을 줄이려면 이러한 사용자에게 작업을 수행하는 데 필요한 권한만 제공하고 더 이상 필요하지 않을 경우 이러한 사용자를 제거하는 것이 좋습니다.

### IAM 정책을 생성하여 IAM 사용자 또는 역할에 연결(콘솔)
<a name="s3-express-tutorial-polict"></a>

기본적으로 사용자는 디렉터리 버킷 및 S3 Express One Zone 작업에 대한 권한이 없습니다. 디렉터리 버킷에 대한 액세스 권한을 부여하려면 IAM을 사용하여 사용자, 그룹 또는 역할을 생성하고 해당 ID에 권한을 연결하면 됩니다. 디렉터리 버킷은 S3 Express One Zone 액세스에 대한 버킷 정책 또는 IAM ID 정책에 포함할 수 있는 유일한 리소스입니다.

S3 Express One Zone에서 리전 엔드포인트 API 작업(버킷 수준 또는 컨트롤 플레인 작업)을 사용하려면 세션 관리가 필요하지 않은 IAM 권한 부여 모델을 사용해야 합니다. 작업에 대한 권한은 개별적으로 부여됩니다. 영역 엔드포인트 API 작업(객체 수준 또는 데이터 영역 작업)을 사용하려면 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html)을 사용하여 지연 시간이 짧은 데이터 요청 권한 부여에 최적화된 세션을 생성하고 관리합니다. 세션 토큰을 검색하고 사용하려면 ID 기반 정책 또는 버킷 정책에서 디렉터리 버킷에 대한 `s3express:CreateSession` 작업을 허용해야 합니다. Amazon S3 콘솔에서, AWS 명령줄 인터페이스(AWS CLI)를 통해 또는 AWS SDK를 사용하여 S3 Express One Zone에 액세스하는 경우, S3 Express One Zone은 사용자를 대신하여 세션을 생성합니다. 자세한 내용은 [`CreateSession` authorization](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html) 및 [AWS Identity and Access Management (IAM) for S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html)을 참조하세요.

**IAM 정책을 생성하여 IAM 사용자(또는 역할)에 정책 연결**

1. AWS Management Console에 로그인하여 IAM 관리 콘솔을 엽니다.

1. 탐색 창에서 **Policies**를 선택합니다.

1. **정책 생성**을 선택하세요.

1. **JSON**을 선택합니다.

1. 아래 정책을 **정책 편집기** 창에 복사합니다. 디렉터리 버킷을 생성하거나 S3 Express One Zone을 사용하려면 먼저 AWS Identity and Access Management(IAM) 역할 또는 사용자에게 필요한 권한을 부여해야 합니다. 이 예시 정책은 `CreateSession` API 작업(다른 영역 또는 객체 수준 API 작업에 사용) 및 모든 리전 엔드포인트(버킷 수준) API 작업에 대한 액세스를 허용합니다. 이 정책은 모든 디렉터리 버킷에서 `CreateSession` API 작업을 사용할 수 있도록 허용하지만, 리전 엔드포인트 API 작업은 지정된 디렉터리 버킷에만 사용할 수 있습니다. 이 정책 예를 사용하려면 `user input placeholders`를 실제 정보로 바꾸세요.

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

****  

   ```
   {
        "Version":"2012-10-17",		 	 	 
        "Statement": [ 
            {
                "Sid": "AllowAccessRegionalEndpointAPIs",
                "Effect": "Allow",
                "Action": [
                    "s3express:DeleteBucket",
                    "s3express:DeleteBucketPolicy",
                    "s3express:CreateBucket",
                    "s3express:PutBucketPolicy",
                    "s3express:GetBucketPolicy",
                    "s3express:ListAllMyDirectoryBuckets"
                ],
   
                "Resource": "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3/*"
            },
            {
                "Sid": "AllowCreateSession",
                "Effect": "Allow",
                "Action": "s3express:CreateSession",
                "Resource": "*"
            }
        ]
    }
   ```

------

1. **다음**을 선택합니다.

1. 정책 이름을 지정합니다.
**참고**  
버킷 태그는 S3 Express One Zone에서 지원되지 않습니다.

1. **정책 생성**을 선택합니다.

1.  IAM 정책을 생성했으면 IAM 사용자에게 연결할 수 있습니다. 탐색 창에서 **Policies**를 선택합니다.

1. **검색 상자**에 정책 이름을 입력합니다.

1. **작업** 메뉴에서 **연결**을 선택합니다.

1. **엔터티 유형별 필터링**에서 **IAM 사용자** 또는 **역할을 선택합니다.**

1. **검색 필드**에 사용하려는 사용자 또는 역할의 이름을 입력합니다.

1. **정책 연결**을 선택합니다.

**Topics**
+ [AWS 계정 생성](#s3-express-create-account)
+ [AWS 계정에서 IAM 사용자 생성(콘솔)](#s3-express-tutorial-user)
+ [IAM 정책을 생성하여 IAM 사용자 또는 역할에 연결(콘솔)](#s3-express-tutorial-polict)

# 1단계: S3 Express One Zone 디렉터리 버킷에 도달하도록 게이트웨이 VPC 엔드포인트 구성
<a name="s3-express-tutorial-endpoints"></a>

 게이트웨이 가상 프라이빗 클라우드(VPC) 엔드포인트를 통해 영역 및 리전 API 작업에 모두 액세스할 수 있습니다. 게이트웨이 엔드포인트를 사용하면 트래픽이 NAT 게이트웨이를 통과하지 않고도 S3 Express One Zone에 도달할 수 있습니다. 게이트웨이 엔드포인트는 S3 Express One Zone을 사용할 때 최적의 네트워킹 경로를 제공하므로 게이트웨이 엔드포인트를 사용하는 것이 좋습니다. 인터넷 게이트웨이 또는 VPC의 NAT 디바이스를 사용하지 않고 추가 비용 없이 VPC에서 S3 Express One Zone 디렉터리 버킷에 액세스할 수 있습니다. 다음 절차를 따라 S3 Express One Zone 스토리지 클래스 객체와 디렉터리 버킷에 연결하는 게이트웨이 엔드포인트를 구성합니다.

S3 Express One Zone에 액세스하려면 표준 Amazon S3 엔드포인트와 다른 리전 및 영역 엔드포인트를 사용합니다. 사용하는 Amazon S3 API 작업에 따라 영역 엔드포인트 또는 리전 엔드포인트가 필요합니다. 엔드포인트 유형별로 지원되는 API 작업의 전체 목록은 [S3 Express One Zone에서 지원되는 API 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations)을 참조하세요. 게이트웨이 가상 프라이빗 클라우드(VPC) 엔드포인트를 통해 영역 및 리전 엔드포인트에 액세스해야 합니다.

 다음 절차를 따라 S3 Express One Zone 스토리지 클래스 객체와 디렉터리 버킷에 연결하는 게이트웨이 엔드포인트를 생성합니다.

**게이트웨이 VPC 엔드포인트를 구성하는 방법**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 측면 탐색 모음의 **가상 프라이빗 클라우드**에서 **엔드포인트**를 선택합니다.

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

1. 엔드포인트의 이름을 지정합니다.

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

1. **서비스**에서 **유형=게이트웨이** 필터를 사용하여 검색한 다음 **com.amazonaws.*region*.s3express** 옆의 옵션 버튼을 선택합니다.

1. **VPC**에서 엔드포인트를 생성할 VPC를 선택합니다.

1. **라우팅 테이블**에서 엔드포인트에서 사용할 로컬 영역의 라우팅 테이블을 선택합니다. 엔드포인트가 생성되면 이 단계에서 선택한 라우팅 테이블에 라우팅 레코드가 추가됩니다.

1. **정책**에서 **모든 액세스**를 선택하여 VPC 엔드포인트를 통한 모든 리소스에 대한 모든 보안 주체의 모든 작업을 허용합니다. 또는 **사용자 지정**을 선택하여 VPC 엔드포인트를 통해 리소스에 대한 작업을 수행하는 위탁자의 권한을 제어하는 VPC 엔드포인트 정책을 연결합니다.

1. **IP 주소 유형**에서 다음 옵션 중에서 선택합니다.
   +  **IPv4** - 엔드포인트 네트워크 인터페이스에 IPv4 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 주소 범위가 있으며 서비스가 IPv4 요청을 수락하는 경우에만 지원됩니다.
   +  **IPv6** - 엔드포인트 네트워크 인터페이스에 IPv6 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷이 IPv6 전용 서브넷이며 서비스가 IPv6 요청을 수락하는 경우에만 지원됩니다.
   +  **듀얼 스택** - 엔드포인트 네트워크 인터페이스에 IPv4 및 IPv6 주소를 모두 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있으며 서비스가 IPv4 및 IPv6 요청을 모두 수락하는 경우에만 지원됩니다.

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

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

게이트웨이 엔드포인트를 생성한 후에는 리전 API 엔드포인트와 영역 API 엔드포인트를 사용하여 Amazon S3 Express One Zone 스토리지 클래스 객체 및 디렉터리 버킷에 액세스할 수 있습니다.

# 2단계: S3 Express One Zone 디렉터리 버킷 생성
<a name="s3-express-tutorial-create-directory-bucket"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 버킷을 생성하려는 리전을 선택합니다.
**참고**  
지연 시간과 요금을 최소화하고 규제 요건을 충족하려면 가장 가까운 리전을 선택하십시오. 특정 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하지 않는 한 해당 리전을 벗어나지 않습니다. Amazon S3 AWS 리전 목록은 **Amazon Web Services 일반 참조의 [AWS 서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)를 참조하십시오.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. **버킷 만들기**를 선택합니다. **버킷 만들기** 페이지가 열립니다.

1. **일반 구성**에서 버킷이 생성될 AWS 리전을 확인합니다.

   **버킷 유형**에서 **디렉터리**를 선택합니다.
**참고**  
디렉터리 버킷을 지원하지 않는 리전을 선택한 경우 **버킷 유형** 옵션이 사라지고 버킷 유형이 범용 버킷으로 기본 설정됩니다. 디렉터리 버킷을 생성하려면 지원되는 리전을 선택해야 합니다. 지원 디렉터리 버킷 및 Amazon S3 Express One Zone 스토리지 클래스를 지원하는 리전 목록은 [S3 Express One Zone 가용 영역 및 리전](s3-express-Endpoints.md) 섹션을 참조하세요.
버킷을 생성한 후에는 버킷 유형을 변경할 수 없습니다.
**참고**  
버킷 생성 후에는 가용 영역을 변경할 수 없습니다.

1. **가용 영역**의 경우 컴퓨팅 서비스의 로컬 가용 영역을 선택합니다. 지원 디렉터리 버킷 및 S3 Express One Zone 스토리지 클래스를 지원하는 가용 영역의 목록은 [S3 Express One Zone 가용 영역 및 리전](s3-express-Endpoints.md) 섹션을 참조하세요.

   **가용 영역**에서 확인란을 선택하여 가용 영역 중단 시 데이터를 사용할 수 없거나 데이터가 손실될 수 있음을 확인합니다.
**중요**  
디렉터리 버킷은 단일 가용 영역 내의 여러 디바이스에 걸쳐 저장되지만, 디렉터리 버킷은 가용 영역 간에 데이터를 중복으로 저장하지는 않습니다.

1. **버킷 이름**에서 디렉터리 버킷 이름을 입력합니다.

   디렉터리 버킷에는 다음 이름 지정 규칙이 적용됩니다.
   + 선택한 영역(AWS 가용 영역 또는 AWS 로컬 영역) 내에서 고유해야 합니다.
   + 이름은 최소 3자에서 최대 63자 사이여야 합니다(접미사 포함).
   + 소문자, 숫자, 하이픈(-)으로만 구성해야 합니다.
   + 문자나 숫자로 시작하고 끝나야 합니다.
   + `--zone-id--x-s3`을 접미사로 포함해야 합니다.
   + 버킷 이름은 접두사 `xn--`로 시작해서는 안됩니다.
   + 버킷 이름은 접두사 `sthree-`로 시작해서는 안됩니다.
   + 버킷 이름은 접두사 `sthree-configurator`로 시작해서는 안됩니다.
   + 버킷 이름은 접두사 ` amzn-s3-demo-`로 시작해서는 안됩니다.
   + 버킷 이름은 접미사 `-s3alias`로 끝나서는 안됩니다. 이 접미사는 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 [액세스 포인트 별칭](access-points-naming.md#access-points-alias) 섹션을 참조하세요.
   + 버킷 이름은 접미사 `--ol-s3`로 끝나서는 안됩니다. 이 접미사는 객체 Lambda 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 [S3 버킷 객체 Lambda 액세스 포인트에 버킷 스타일 별칭을 사용하는 방법](olap-use.md#ol-access-points-alias) 섹션을 참조하세요.
   + 버킷 이름은 접미사 `.mrap`로 끝나서는 안됩니다. 이 접미사는 다중 리전 액세스 포인트 이름 용도로 예약되어 있습니다. 자세한 내용은 [Amazon S3 다중 리전 액세스 포인트 이름 지정 규칙](multi-region-access-point-naming.md) 섹션을 참조하세요.

   콘솔을 사용하여 디렉터리 버킷을 생성하면 제공하는 기본 이름에 접미사가 자동으로 추가됩니다. 이 접미사에는 선택한 가용 영역의 가용 영역 ID가 포함됩니다.

   버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다. 버킷 이름 지정에 대한 자세한 내용은 [범용 버킷 이름 지정 규칙](bucketnamingrules.md) 섹션을 참조하십시오.
**중요**  
버킷 이름에 계정 번호와 같은 중요한 정보를 포함하지 마세요. 버킷 이름은 버킷의 객체를 가리키는 URL에 표시됩니다.

1. **객체 소유권**에서 **버킷 소유자 적용** 설정이 자동으로 활성화되고 모든 액세스 제어 목록(ACL)이 비활성화됩니다. 디렉터리 버킷의 경우 ACL을 활성화할 수 없습니다.

    **버킷 소유자 적용(기본값)** – ACL이 비활성화되고 버킷 소유자는 범용 버킷의 모든 객체를 자동으로 소유하고 완전히 제어합니다. ACL은 더 이상 S3 범용 버킷의 데이터에 대한 권한에 영향을 주지 않습니다. 버킷은 정책을 독점적으로 사용하여 액세스 제어를 정의합니다.

1. **이 버킷의 퍼블릭 액세스 차단 설정**에서 디렉터리 버킷의 퍼블릭 액세스 차단 설정이 자동으로 활성화됩니다. 디렉터리 버킷의 경우 이 설정을 수정할 수 없습니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 [Amazon S3 스토리지에 대한 퍼블릭 액세스 차단](access-control-block-public-access.md) 섹션을 참조하십시오.

1. 기본 암호화를 구성하려면 **암호화 유형** 아래에서 다음 중 하나를 선택합니다.
   + **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**
   + **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)**

   Amazon S3 서버 측 암호화를 사용하는 데이터 암호화에 대한 자세한 내용은 [데이터 보호 및 암호화](s3-express-data-protection.md) 섹션을 참조하십시오.
**중요**  
기본 암호화 구성에 대해 SSE-KMS 옵션을 사용할 경우 AWS KMS의 초당 요청 수(RPS) 제한이 적용됩니다. AWS KMS 할당량과 할당량 증대를 요청하는 방법에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하십시오.  
기본 암호화를 활성화할 때 버킷 정책을 업데이트해야 할 수 있습니다. 자세한 내용은 [크로스 계정 작업에 SSE-KMS 암호화 사용](bucket-encryption.md#bucket-encryption-update-bucket-policy) 섹션을 참조하세요.

1. **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**를 선택한 경우 **버킷 키** 아래에 **활성화됨**이 나타납니다. SSE-S3를 통한 기본 암호화를 사용하도록 디렉터리 버킷을 구성할 때 S3 버킷 키는 항상 활성화됩니다. S3 버킷 키는 디렉터리 버킷의 `GET` 및 `PUT` 작업에 대해 항상 활성화되며 비활성화할 수 없습니다. [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_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [배치 운영의 Copy 작업](directory-buckets-objects-Batch-Ops.md) 또는 [import 작업](create-import-job.md)을 통해 SSE-KMS로 암호화된 객체를 범용 버킷에서 디렉터리 버킷으로, 디렉터리 버킷에서 범용 버킷으로 또는 디렉터리 버킷 간에 복사하는 경우 S3 버킷 키는 지원되지 않습니다. 이 경우 Amazon S3는 KMS 암호화 개체에 대한 사본 요청이 있을 때마다 AWS KMS를 직접적으로 호출합니다.

   S3 버킷 키를 사용하면 Amazon S3에서 AWS KMS로의 요청 트래픽이 줄어 암호화 비용이 절감됩니다. 자세한 내용은 [Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감](bucket-key.md) 섹션을 참조하세요.

1. **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)**를 선택한 경우 **AWS KMS 키**에서 다음 방법 중 하나로 AWS Key Management Service 키를 지정하거나 새 키를 생성합니다.
   + 사용 가능한 KMS 키 목록에서 중에서 선택하려면 **AWS KMS keys에서 선택**을 선택하고 **사용 가능한 AWS KMS keys**에서 **KMS 키**를 선택합니다.

     고객 관리형 키만 이 목록에 표시됩니다. AWS 관리형 키(`aws/s3`)는 디렉터리 버킷에서 지원되지 않습니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service* 개발자 안내서의 [ 고객 키 및 AWS 키](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)를 참조하십시오.
   + KMS 키 ARN 또는 별칭을 입력하려면 **AWS KMS key ARN 입력**을 선택하고 KMS 키 ARN 또는 별칭을 **AWS KMS key ARN**에 입력합니다.
   + AWS KMS 콘솔에서 고객 관리형 키를 생성하려면 **KMS 키 생성**을 선택합니다.

     AWS KMS key 생성에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)을 참조하십시오.
**중요**  
SSE-KMS 구성은 버킷 수명 기간 동안 디렉터리 버킷당 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) 1개만 지원할 수 있습니다. [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)(`aws/s3`)는 지원되지 않습니다. 또한, SSE-KMS에 고객 관리형 키를 지정한 후에는 버킷의 SSE-KMS 구성을 위한 고객 관리형 키를 재정의할 수 없습니다.  
다음과 같은 방법으로 버킷의 SSE-KMS 구성에 대해 지정한 고객 관리형 키를 식별할 수 있습니다.  
응답에서 `x-amz-server-side-encryption-aws-kms-key-id`의 값을 찾기 위해 `HeadObject` API 작업을 요청합니다.
데이터에 새 고객 관리형 키를 사용하려면 최신 고객 관리형 키가 있는 새 디렉터리 버킷에 기존 객체를 복사하는 것이 좋습니다.
버킷과 동일한 AWS 리전에서 사용할 수 있는 KMS 키만 사용 가능합니다. Amazon S3 콘솔은 버킷과 동일한 리전에 있는 처음 100개의 KMS 키만 나열합니다. 목록에 없는 KMS 키를 사용하려면 KMS 키 ARN을 입력해야 합니다. 다른 계정에서 소유한 KMS 키를 사용하려면 먼저 해당 키에 대한 사용 권한이 있어야 하고, 다음 단계로 KMS 키 ARN을 입력해야 합니다. KMS 키의 크로스 계정 권한에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서에서 [다른 계정에서 사용할 수 있는 KMS 키 만들기](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)를 참조하십시오. SSE-KMS에 대한 자세한 내용은 [디렉터리 버킷의 새 객체 업로드에 AWS KMS(SSE-KMS)를 사용한 서버 측 암호화 지정](s3-express-specifying-kms-encryption.md) 섹션을 참조하십시오.
디렉터리 버킷에서 서버 측 암호화에 AWS KMS key를 사용하는 경우 대칭 암호화 KMS 키를 선택해야 합니다. Amazon S3는 대칭 암호화 KMS 키만 지원하며 비대칭 KMS 키는 지원하지 않습니다. 자세한 내용은 **AWS Key Management Service 개발자 안내서에서 [대칭 및 비대칭 KMS 키 식별](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)을 참조하십시오.

   Amazon S3에서 AWS KMS을(를) 사용하는 방법에 대한 자세한 내용은 [디렉터리 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 사용](s3-express-UsingKMSEncryption.md) 단원을 참조하십시오.

1. **버킷 생성**을 선택합니다. 버킷을 생성한 후 버킷에 파일 및 폴더를 추가할 수 있습니다. 자세한 내용은 [디렉터리 버킷의 객체 작업](directory-buckets-objects.md) 섹션을 참조하세요.

# 3단계: S3 Express One Zone 디렉터리 버킷으로 데이터 가져오기
<a name="s3-express-tutorial-Import"></a>

이 단계를 완료하려면 객체를 포함하고 디렉터리 버킷과 같은 AWS 리전에 있는 범용 버킷이 있어야 합니다.

Amazon S3에서 디렉터리 버킷을 생성한 후 Amazon S3 콘솔에서 가져오기 작업을 사용하여 새 버킷에 데이터를 채울 수 있습니다. 가져오기를 사용하면 복사할 모든 객체를 개별적으로 지정할 필요 없이 데이터를 가져올 접두사 또는 범용 버킷을 선택할 수 있으므로 데이터를 쉽게 디렉터리 버킷으로 복사할 수 있습니다. 가져오기에서는 선택한 접두사 또는 범용 버킷의 객체를 복사하는 S3 배치 작업이 사용됩니다. S3 배치 작업의 작업 세부 정보 페이지를 통해 가져오기 복사 작업의 진행 상황을 모니터링할 수 있습니다.

**가져오기 작업을 사용하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 다음으로 디렉터리 버킷이 위치한 가용 영역과 연결된 리전을 선택합니다.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. 객체를 가져올 대상 버킷 이름 옆에 있는 옵션 버튼을 선택합니다.

1. **가져오기**를 선택합니다.

1. **소스**에는 가져오려는 객체가 들어 있는 범용 버킷(또는 접두사를 포함한 버킷 경로)을 입력합니다. 목록에서 기존의 범용 버킷을 선택하려면 **S3 찾아보기**를 선택합니다.

1.  **권한** 섹션에서 IAM 역할을 자동 생성하도록 선택할 수 있습니다. 또는 목록에서 IAM 역할을 선택하거나, IAM 역할 ARN을 직접 입력할 수 있습니다.
   + Amazon S3가 대신 새 IAM 역할을 생성하도록 허용하려면 **새 IAM 역할 생성**을 선택합니다.
**참고**  
소스 객체가 AWS Key Management Service(AWS KMS) 키를 통한 서버 측 암호화(SSE-KMS)로 암호화된 경우, **새 IAM 역할 생성** 옵션을 선택하지 마세요. 대신 `kms:Decrypt` 권한이 있는 기존 IAM 역할을 지정하세요.  
Amazon S3는 이 권한을 사용하여 객체를 복호화합니다. 그런 다음 가져오기 프로세스 중에 Amazon S3가 Amazon S3 관리형 키를 통한 서버 측 암호화(SSE-S3)를 사용하여 해당 객체를 다시 암호화합니다.
   + 목록에서 기존 IAM 역할을 선택하려면 **기존 IAM 역할에서 선택**을 선택합니다.
   + Amazon 리소스 이름(ARN)을 입력하여 기존 IAM 역할을 지정하려면 **IAM 역할 ARN 입력**을 선택한 다음 해당 필드에 ARN을 입력합니다.

1. **대상** 및 **복사된 객체 설정** 섹션에 표시된 정보를 검토합니다. **대상** 섹션의 정보가 정확하면 **가져오기**를 선택하여 복사 작업을 시작합니다.

   Amazon S3 콘솔은 **배치 작업** 페이지에 새 작업의 상태를 표시합니다. 작업에 대한 자세한 내용을 보려면 작업 이름 옆의 옵션 버튼을 선택한 다음 **작업** 메뉴에서 **세부 정보 보기**를 선택합니다. 객체를 가져올 대상 디렉터리 버킷을 열려면 **가져오기 대상 보기**를 선택합니다.

# 4단계: S3 Express One Zone 디렉터리 버킷에 객체를 수동으로 업로드
<a name="s3-express-tutorial-Upload"></a>

디렉터리 버킷에 객체를 수동으로 업로드할 수도 있습니다.

**객체를 수동으로 업로드하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 페이지 오른쪽 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 다음으로 디렉터리 버킷이 위치한 가용 영역과 연결된 리전을 선택합니다.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. 파일 및 폴더를 업로드하려는 버킷의 이름을 선택합니다.
**참고**  
 이 튜토리얼의 이전 단계에서 사용한 것과 동일한 디렉터리 버킷을 선택한 경우 디렉터리 버킷에는 가져오기 도구에서 업로드한 객체가 포함됩니다. 이러한 객체는 이제 S3 Express One Zone 스토리지 클래스에 저장되어 있습니다.

1. **객체** 탭에서 **업로드**를 선택합니다.

1. **업로드** 페이지에서 다음 중 하나를 수행합니다.
   + 파일 및 폴더를 점선으로 표시된 업로드 영역으로 끌어다 놓습니다.
   + **파일 추가** 또는 **폴더 추가**를 선택하고 업로드할 파일 또는 폴더를 선택한 후 **열기** 또는 **업로드**를 선택합니다.

1. **체크섬**에서 사용하려는 **체크섬 함수**를 선택합니다.
**참고**  
 S3 Express One Zone 스토리지 클래스에서 최상의 성능을 위해 CRC32 및 CRC32C를 사용하는 것이 좋습니다. 자세한 내용은 [S3 추가 체크섬 모범 사례](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-optimizing-performance-design-patterns.html#s3-express-optimizing--checksums.html)를 참조하세요.

   (선택 사항) 크기가 16MB 미만인 단일 객체를 업로드하는 경우 미리 계산된 체크섬 값을 지정할 수도 있습니다. 미리 계산된 값을 제공하면 Amazon S3는 선택한 체크섬 함수를 사용하여 계산한 값과 비교합니다. 값이 일치하지 않으면 업로드가 시작되지 않습니다.

1. **권한** 및 **속성** 섹션의 옵션은 자동으로 기본 설정으로 설정되며 수정할 수 없습니다. 퍼블릭 액세스 차단은 자동으로 활성화되며 디렉터리 버킷에 대해서는 S3 버전 관리 및 S3 객체 잠금을 활성화할 수 없습니다.

   (선택 사항) 키-값 쌍의 메타데이터를 객체에 추가하려면 **속성** 섹션을 확장한 다음 **메타데이터** 섹션에서 **메타데이터 추가**를 선택합니다.

1. 나열된 파일을 업로드하려면 **업로드**를 선택합니다.

   Amazon S3가 객체와 폴더를 업로드합니다. 업로드가 완료되면 **업로드: 상태** 페이지에서 성공 메시지를 볼 수 있습니다.

    디렉터리 버킷을 성공적으로 생성하고 객체를 버킷에 업로드했습니다.

# 5단계: S3 Express One Zone 디렉터리 버킷 비우기
<a name="s3-express-tutoiral-Empty"></a>

Amazon S3 콘솔을 사용하여 Amazon S3 디렉터리 버킷을 비울 수 있습니다.

**디렉터리 버킷을 비우려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 페이지 오른쪽 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 다음으로 디렉터리 버킷이 위치한 가용 영역과 연결된 리전을 선택합니다.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. 비우려는 버킷의 이름 옆에 있는 옵션 버튼을 선택한 후 **비우기**를 선택합니다.

1. **버킷 비우기** 페이지에서 텍스트 필드에 **permanently delete**를 입력하여 해당 버킷 비우기를 확인한 후 **비우기**를 선택합니다.

1. **버킷 비우기: 상태** 페이지에서 버킷 비우기 프로세스의 진행 상황을 모니터링합니다.

# 6단계: S3 Express One Zone 디렉터리 버킷 삭제
<a name="s3-express-tutoiral-Delete"></a>

디렉터리 버킷을 비우고 진행 중인 모든 멀티파트 업로드를 중단한 후 Amazon S3 콘솔을 사용하여 버킷을 삭제할 수 있습니다.

**디렉터리 버킷을 삭제하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 페이지 오른쪽 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 다음으로 디렉터리 버킷이 위치한 가용 영역과 연결된 리전을 선택합니다.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. **디렉터리 버킷** 목록에서, 삭제할 버킷의 이름 옆에 있는 옵션 버튼을 선택합니다.

1. **삭제**를 선택합니다.

1. **버킷 삭제** 페이지에서 텍스트 필드에 버킷 이름을 입력하여 버킷 삭제를 확인합니다.
**중요**  
디렉터리 버킷 삭제는 실행 취소할 수 없습니다.

1. 디렉터리 버킷을 삭제하려면 **버킷 삭제**를 선택합니다.

## 다음 단계
<a name="s3-express-tutoiral-Next"></a>

이 튜토리얼에서는 디렉터리 버킷을 생성하고 S3 Express One Zone 스토리지 클래스를 사용하는 방법을 살펴봤습니다. 이 튜토리얼을 완료한 후에는 S3 Express One Zone 스토리지 클래스에서 사용할 관련 AWS 서비스를 살펴볼 수 있습니다.

S3 Express One Zone 스토리지 클래스와 함께 다음 AWS 서비스를 사용하여 지연 시간이 짧은 구체적인 사용 사례를 지원할 수 있습니다.
+ [Amazon Elastic Compute Cloud(Amazon EC2)](https://docs.aws.amazon.com/ec2/index.html) – Amazon EC2는 AWS 클라우드에서 안전하고 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요성이 감소되어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 빌드하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html.html) - Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. 버킷에 알림 설정을 구성하고 Amazon S3에 함수의 리소스 기반 권한 정책에 따라 함수를 간접 호출할 수 있는 권한을 부여합니다.
+ [Amazon Elastic Kubernetes Service(Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) - Amazon EKS는 AWS에 자체 Kubernetes 컨트롤 플레인을 설치, 운영 및 유지 관리할 필요가 없는 관리형 서비스입니다. [https://kubernetes.io/docs/concepts/overview/](https://kubernetes.io/docs/concepts/overview/)는 컨테이너화된 애플리케이션의 관리, 규모 조정 및 배포를 자동화하는 오픈 소스 시스템입니다.
+ [Amazon Elastic Container Service(Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) Amazon ECS는 컨테이너화된 애플리케이션을 쉽게 배포, 관리, 규모 조정할 수 있도록 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스입니다.
+ [Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-express-one-zone.html) – Amazon EMR은 AWS에서 Apache Hadoop 및 Apache Spark와 같은 빅 데이터 프레임워크 실행을 단순화하여 방대한 양의 데이터를 처리하고 분석하는 관리형 클러스터 플랫폼입니다.
+ [Amazon Athena](https://docs.aws.amazon.com//athena/latest/ug/querying-express-one-zone.html) – Amazon Athena는 표준 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html)을 사용해 Amazon S3에서 직접 데이터를 간편하게 분석할 수 있는 대화식 쿼리 서비스입니다. 또한 Athena를 사용하면 리소스를 계획, 구성 또는 관리할 필요 없이 Apache Spark를 사용하여 데이터 분석을 대화식으로 실행할 수 있습니다. Athena에서 Apache Spark 애플리케이션을 실행하는 경우 처리를 위해 Spark 코드를 제출하고 결과를 직접 수신합니다.
+ [AWS Glue Data Catalog](https://docs.aws.amazon.com//glue/latest/dg/catalog-and-crawler.html) - AWS Glue는 분석 사용자가 여러 소스의 데이터를 쉽게 검색, 준비, 이동, 통합할 수 있도록 하는 서버리스 데이터 통합 서비스입니다. 분석, 기계 학습 및 애플리케이션 개발에 AWS Glue를 사용할 수 있습니다. AWS Glue Data Catalog는 조직의 데이터 세트에 대한 메타데이터를 저장하는 중앙 집중식 리포지토리입니다. 즉, 데이터 소스의 위치, 스키마 및 런타임 지표에 대한 인덱스로 동작합니다.
+ [Amazon SageMaker Runtime 모델 훈련](https://docs.aws.amazon.com//sagemaker/latest/dg/model-access-training-data.html) - Amazon SageMaker Runtime은 완전관리형 기계 학습 서비스입니다. 데이터 과학자와 개발자들은 SageMaker Runtime으로 기계 학습 모델을 빠르고 쉽게 빌드하고 훈련시킬 수 있으며, 그런 다음 모델을 프로덕션 지원 호스팅 환경에 직접 배포할 수 있습니다.

 S3 Express One Zone에 대한 자세한 내용은 [S3 Express One Zone이란?](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-one-zone.html) 및 [S3 Express One Zone의 차이점](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html)을 참조하세요.

# S3 Express One Zone 가용 영역 및 리전
<a name="s3-express-Endpoints"></a>

가용 영역은 AWS 리전에 중복 전원, 네트워킹 및 연결이 있는 하나 이상의 개별 데이터 센터입니다. 지연 시간이 짧은 검색을 최적화하기 위해 Amazon S3 Express One Zone 스토리지 클래스의 객체는 컴퓨팅 워크로드와 동일한 위치에 있는 로컬 단일 가용 영역의 S3 디렉터리 버킷에 중복 저장됩니다. 디렉터리 버킷을 생성할 때 버킷이 위치할 가용 영역과 AWS 리전을 선택합니다.

AWS는 물리적 가용 영역을 각 AWS 계정의 가용 영역 이름에 무작위로 매핑합니다. 이 접근 방식을 사용하면 리소스를 각 리전의 첫 번째 가용 영역에 집중적으로 배치하는 대신 AWS 리전 리전의 가용 영역 전체에 분산시킬 수 있습니다. 따라서 AWS 계정의 `us-east-1a` 가용 영역은 다른 AWS 계정의 `us-east-1a`와 동일한 물리적 위치를 나타내지 않을 수 있습니다. 자세한 내용은 *Amazon EC2 사용 설명서*에서 [리전 및 가용 영역](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)을 참조하세요.

계정에 대해 가용 영역을 조정하려면 가용 영역에 대한 고유하고 일관된 식별자인 *AZ ID*를 사용해야 합니다. 예를 들어 `use1-az1`은 `us-east-1` 리전의 AZ ID이고, 모든 AWS 계정에서 물리적 위치가 동일합니다. 다음 그림은 가용 영역 이름은 계정마다 다르게 매핑될 수 있지만 AZ ID는 모든 계정에서 동일하다는 것을 보여줍니다.

![\[가용 영역 매핑 및 리전을 보여 주는 그림.\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/availability-zone-mapping.png)


S3 Express One Zone 스토리지 클래스를 사용하면 단일 가용 영역 내의 여러 디바이스에 데이터가 중복으로 저장됩니다. S3 Express One Zone은 단일 가용 영역 내에서 99.95%의 가용성을 제공하도록 설계되었으며 [Amazon S3 서비스 수준 계약](https://aws.amazon.com/s3/sla/)의 지원을 받습니다. 자세한 내용은 [가용 영역](directory-bucket-high-performance.md#s3-express-overview-az) 섹션을 참조하세요.

 다음 테이블에는 S3 Express One Zone에서 지원되는 리전 및 가용 영역이 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/s3-express-Endpoints.html)

# 가용 영역의 디렉터리 버킷에 대한 네트워킹
<a name="directory-bucket-az-networking"></a>

패킷이 네트워크에 소비하는 시간을 줄이려면 추가 비용 없이 AWS 네트워크 내에서 트래픽을 유지하면서 가용 영역의 디렉터리 버킷에 액세스하도록 게이트웨이 엔드포인트로 가상 프라이빗 클라우드(VPC)를 구성합니다.

**Topics**
+ [가용 영역의 디렉터리 버킷에 대한 엔드포인트](#s3-express-endpoints-az)
+ [VPC 게이트웨이 엔드포인트 구성](#s3-express-networking-vpc-gateway)

## 가용 영역의 디렉터리 버킷에 대한 엔드포인트
<a name="s3-express-endpoints-az"></a>

다음 테이블에는 각 리전 및 가용 영역에서 사용할 수 있는 리전 및 영역 API 엔드포인트가 나와 있습니다.


| 리전 이름 | 리전 | 가용 영역 ID | 리전 엔드포인트 | 영역 엔드포인트 | 
| --- | --- | --- | --- | --- | 
|  미국 동부(버지니아 북부)  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  미국 동부(오하이오)  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  미국 서부(오리건)  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  아시아 태평양(뭄바이)  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  아시아 태평양(도쿄)  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  유럽(아일랜드)  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  유럽(스톡홀름)  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

## VPC 게이트웨이 엔드포인트 구성
<a name="s3-express-networking-vpc-gateway"></a>

다음 절차를 따라 Amazon S3 Express One Zone 스토리지 클래스 객체와 디렉터리 버킷에 연결하는 게이트웨이 엔드포인트를 생성합니다.

**게이트웨이 VPC 엔드포인트를 구성하는 방법**

1. [Amazon VPC 콘솔](https://console.aws.amazon.com/vpc/)을 엽니다.

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

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

1. 엔드포인트의 이름을 지정합니다.

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

1. **서비스**에서 **유형=게이트웨이** 필터를 추가한 다음 **com.amazonaws.*region*.s3express** 옆의 옵션 버튼을 선택합니다.

1. **VPC**에서 엔드포인트를 생성할 VPC를 선택합니다.

1. **라우팅 테이블**에서 엔드포인트에서 사용할 VPC의 라우팅 테이블을 선택합니다. 엔드포인트가 생성되면 이 단계에서 선택한 라우팅 테이블에 라우팅 레코드가 추가됩니다.

1. **정책**에서 **모든 액세스**를 선택하여 VPC 엔드포인트를 통한 모든 리소스에 대한 모든 보안 주체의 모든 작업을 허용합니다. 또는 **사용자 지정**을 선택하여 VPC 엔드포인트를 통해 리소스에 대한 작업을 수행하는 위탁자의 권한을 제어하는 VPC 엔드포인트 정책을 연결합니다.

1. **IP 주소 유형**에서 다음 옵션 중에서 선택합니다.
   +  **IPv4** - 엔드포인트 네트워크 인터페이스에 IPv4 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 주소 범위가 있으며 서비스가 IPv4 요청을 수락하는 경우에만 지원됩니다.
   +  **IPv6** - 엔드포인트 네트워크 인터페이스에 IPv6 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷이 IPv6 전용 서브넷이며 서비스가 IPv6 요청을 수락하는 경우에만 지원됩니다.
   +  **듀얼 스택** - 엔드포인트 네트워크 인터페이스에 IPv4 및 IPv6 주소를 모두 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있으며 서비스가 IPv4 및 IPv6 요청을 모두 수락하는 경우에만 지원됩니다.

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

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

게이트웨이 엔드포인트를 생성한 후에는 리전 API 엔드포인트와 영역 API 엔드포인트를 사용하여 Amazon S3 Express One Zone 스토리지 클래스 객체 및 디렉터리 버킷에 액세스할 수 있습니다.

게이트웨이 VPC 엔드포인트에 대한 자세한 내용은 *AWS PrivateLink 안내서*에서 [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)를 참조하세요. 데이터 레지던시 사용 사례의 경우 게이트웨이 VPC 엔드포인트를 사용하여 VPC에서만 버킷에 액세스할 수 있도록 활성화하는 것이 좋습니다. VPC 또는 VPC 엔드포인트로 액세스가 제한되면 AWS Management Console, REST API, AWS CLI 및 AWS SDK를 통해 객체에 액세스할 수 있습니다.

**참고**  
AWS Management Console을 사용하여 VPC 또는 VPC 엔드포인트로 액세스를 제한하려면 AWS Management Console 프라이빗 액세스를 사용해야 합니다. 자세한 내용은 *AWS Management Console 안내서*AWS Management Console의 [AWS Management Console Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)를 참조하세요.

# 가용 영역에서 디렉터리 버킷 생성
<a name="directory-bucket-create"></a>

Amazon S3 Express One Zone 스토리지 클래스 사용을 시작하기 위해 디렉터리 버킷을 생성합니다. S3 Express One Zone 스토리지 클래스는 디렉터리 버킷에만 사용할 수 있습니다. S3 Express One Zone 스토리지 클래스는 지연 시간이 짧은 사용 사례를 지원하고 단일 가용 영역 내에서 더 빠른 데이터 처리를 제공합니다. 애플리케이션이 성능에 민감하고 10밀리초 미만의 `PUT` 및 `GET` 지연 시간이 필요한 경우 S3 Express One Zone 스토리지 클래스를 사용할 수 있도록 디렉터리 버킷을 생성하는 것이 좋습니다.

Amazon S3 버킷에는 범용 버킷과 디렉터리 버킷이라는 두 가지 유형이 있습니다. 애플리케이션 및 성능 요구 사항에 가장 적합한 버킷 유형을 선택해야 합니다. 범용 버킷은 S3 버킷 본래의 유형입니다. 범용 버킷은 대부분의 사용 사례와 액세스 패턴에 권장되며 S3 Express One Zone을 제외한 모든 스토리지 클래스에 객체를 저장할 수 있습니다. 범용 버킷에 대한 자세한 내용은 [범용 버킷 개요](UsingBucket.md) 섹션을 참조하세요.

디렉터리 버킷은 S3 Express One Zone 스토리지 클래스를 사용합니다. S3 Express One Zone 스토리지 클래스는 일관되게 10밀리초 미만의 지연 시간이 필요한 워크로드 또는 성능이 중요한 애플리케이션에 사용하도록 설계되었습니다. S3 Express One Zone은 객체 스토리지를 컴퓨팅 리소스와 함께 배치하는 옵션을 제공하면서 단일 가용 영역 선택이 가능한 최초의 S3 스토리지 클래스로, 최고의 액세스 속도를 제공합니다. 디렉터리 버킷을 생성할 때 Amazon EC2, Amazon Elastic Kubernetes Service 또는 Amazon Elastic Container Service(Amazon ECS) 컴퓨팅 인스턴스와 같은 위치의 로컬 가용 영역과 AWS 리전을 선택적으로 지정하여 성능을 최적화할 수 있습니다.

S3 Express One Zone 스토리지 클래스를 사용하면 단일 가용 영역 내의 여러 디바이스에 데이터가 중복으로 저장됩니다. S3 Express One Zone은 단일 가용 영역 내에서 99.95%의 가용성을 제공하도록 설계되었으며 [Amazon S3 서비스 수준 계약](https://aws.amazon.com/s3/sla/)의 지원을 받습니다. 자세한 내용은 [가용 영역](directory-bucket-high-performance.md#s3-express-overview-az) 섹션을 참조하세요.

디렉터리 버킷은 범용 버킷의 플랫 스토리지 구조와 달리 데이터를 계층적으로 디렉터리에 구성합니다. 디렉터리 버킷에는 접두사 제한이 없으며 개별 디렉터리는 수평적으로 확장할 수 있습니다.

디렉터리 버킷에 대한 자세한 내용은 [디렉터리 버킷 작업](directory-buckets-overview.md) 섹션을 참조하세요.

**디렉터리 버킷 이름**  
디렉터리 버킷 이름은 이 형식을 따라야 하며 디렉터리 버킷 이름 지정 규칙을 준수해야 합니다.

```
bucket-base-name--zone-id--x-s3
```

예를 들어, 다음 디렉터리 버킷 이름에는 가용 영역 ID인 `usw2-az1`이 포함되어 있습니다.

```
bucket-base-name--usw2-az1--x-s3
```

디렉터리 버킷 이름 지정 규칙에 대한 자세한 내용은 [디렉터리 버킷 이름 지정 규칙](directory-bucket-naming-rules.md) 섹션을 참조하세요.

## S3 콘솔 사용
<a name="create-directory-bucket-console"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 버킷을 생성하려는 리전을 선택합니다.
**참고**  
지연 시간과 요금을 최소화하고 규제 요건을 충족하려면 가장 가까운 리전을 선택하십시오. 특정 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하지 않는 한 해당 리전을 벗어나지 않습니다. Amazon S3 AWS 리전 목록은 **Amazon Web Services 일반 참조의 [AWS 서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)를 참조하십시오.

1. 왼쪽 탐색 창에서 **디렉터리 버킷**을 선택합니다.

1. **버킷 만들기**를 선택합니다. **버킷 만들기** 페이지가 열립니다.

1. **일반 구성**에서 버킷이 생성될 AWS 리전을 확인합니다.

   **버킷 유형**에서 **디렉터리**를 선택합니다.
**참고**  
디렉터리 버킷을 지원하지 않는 리전을 선택한 경우 **버킷 유형** 옵션이 사라지고 버킷 유형이 범용 버킷으로 기본 설정됩니다. 디렉터리 버킷을 생성하려면 지원되는 리전을 선택해야 합니다. 지원 디렉터리 버킷 및 Amazon S3 Express One Zone 스토리지 클래스를 지원하는 리전 목록은 [S3 Express One Zone 가용 영역 및 리전](s3-express-Endpoints.md) 섹션을 참조하세요.
버킷을 생성한 후에는 버킷 유형을 변경할 수 없습니다.
**참고**  
버킷 생성 후에는 가용 영역을 변경할 수 없습니다.

1. **가용 영역**의 경우 컴퓨팅 서비스의 로컬 가용 영역을 선택합니다. 지원 디렉터리 버킷 및 S3 Express One Zone 스토리지 클래스를 지원하는 가용 영역의 목록은 [S3 Express One Zone 가용 영역 및 리전](s3-express-Endpoints.md) 섹션을 참조하세요.

   **가용 영역**에서 확인란을 선택하여 가용 영역 중단 시 데이터를 사용할 수 없거나 데이터가 손실될 수 있음을 확인합니다.
**중요**  
디렉터리 버킷은 단일 가용 영역 내의 여러 디바이스에 걸쳐 저장되지만, 디렉터리 버킷은 가용 영역 간에 데이터를 중복으로 저장하지는 않습니다.

1. **버킷 이름**에서 디렉터리 버킷 이름을 입력합니다.

   디렉터리 버킷에는 다음 이름 지정 규칙이 적용됩니다.
   + 선택한 영역(AWS 가용 영역 또는 AWS 로컬 영역) 내에서 고유해야 합니다.
   + 이름은 최소 3자에서 최대 63자 사이여야 합니다(접미사 포함).
   + 소문자, 숫자, 하이픈(-)으로만 구성해야 합니다.
   + 문자나 숫자로 시작하고 끝나야 합니다.
   + `--zone-id--x-s3`을 접미사로 포함해야 합니다.
   + 버킷 이름은 접두사 `xn--`로 시작해서는 안됩니다.
   + 버킷 이름은 접두사 `sthree-`로 시작해서는 안됩니다.
   + 버킷 이름은 접두사 `sthree-configurator`로 시작해서는 안됩니다.
   + 버킷 이름은 접두사 ` amzn-s3-demo-`로 시작해서는 안됩니다.
   + 버킷 이름은 접미사 `-s3alias`로 끝나서는 안됩니다. 이 접미사는 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 [액세스 포인트 별칭](access-points-naming.md#access-points-alias) 섹션을 참조하세요.
   + 버킷 이름은 접미사 `--ol-s3`로 끝나서는 안됩니다. 이 접미사는 객체 Lambda 액세스 포인트 별칭 이름 용도로 예약되어 있습니다. 자세한 내용은 [S3 버킷 객체 Lambda 액세스 포인트에 버킷 스타일 별칭을 사용하는 방법](olap-use.md#ol-access-points-alias) 섹션을 참조하세요.
   + 버킷 이름은 접미사 `.mrap`로 끝나서는 안됩니다. 이 접미사는 다중 리전 액세스 포인트 이름 용도로 예약되어 있습니다. 자세한 내용은 [Amazon S3 다중 리전 액세스 포인트 이름 지정 규칙](multi-region-access-point-naming.md) 섹션을 참조하세요.

   콘솔을 사용하여 디렉터리 버킷을 생성하면 제공하는 기본 이름에 접미사가 자동으로 추가됩니다. 이 접미사에는 선택한 가용 영역의 가용 영역 ID가 포함됩니다.

   버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다. 버킷 이름 지정에 대한 자세한 내용은 [범용 버킷 이름 지정 규칙](bucketnamingrules.md) 섹션을 참조하십시오.
**중요**  
버킷 이름에 계정 번호와 같은 중요한 정보를 포함하지 마세요. 버킷 이름은 버킷의 객체를 가리키는 URL에 표시됩니다.

1. **객체 소유권**에서 **버킷 소유자 적용** 설정이 자동으로 활성화되고 모든 액세스 제어 목록(ACL)이 비활성화됩니다. 디렉터리 버킷의 경우 ACL을 활성화할 수 없습니다.

    **버킷 소유자 적용(기본값)** – ACL이 비활성화되고 버킷 소유자는 범용 버킷의 모든 객체를 자동으로 소유하고 완전히 제어합니다. ACL은 더 이상 S3 범용 버킷의 데이터에 대한 권한에 영향을 주지 않습니다. 버킷은 정책을 독점적으로 사용하여 액세스 제어를 정의합니다.

1. **이 버킷의 퍼블릭 액세스 차단 설정**에서 디렉터리 버킷의 퍼블릭 액세스 차단 설정이 자동으로 활성화됩니다. 디렉터리 버킷의 경우 이 설정을 수정할 수 없습니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 [Amazon S3 스토리지에 대한 퍼블릭 액세스 차단](access-control-block-public-access.md) 섹션을 참조하십시오.

1. 기본 암호화를 구성하려면 **암호화 유형** 아래에서 다음 중 하나를 선택합니다.
   + **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**
   + **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)**

   Amazon S3 서버 측 암호화를 사용하는 데이터 암호화에 대한 자세한 내용은 [데이터 보호 및 암호화](s3-express-data-protection.md) 섹션을 참조하십시오.
**중요**  
기본 암호화 구성에 대해 SSE-KMS 옵션을 사용할 경우 AWS KMS의 초당 요청 수(RPS) 제한이 적용됩니다. AWS KMS 할당량과 할당량 증대를 요청하는 방법에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하십시오.  
기본 암호화를 활성화할 때 버킷 정책을 업데이트해야 할 수 있습니다. 자세한 내용은 [크로스 계정 작업에 SSE-KMS 암호화 사용](bucket-encryption.md#bucket-encryption-update-bucket-policy) 섹션을 참조하세요.

1. **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**를 선택한 경우 **버킷 키** 아래에 **활성화됨**이 나타납니다. SSE-S3를 통한 기본 암호화를 사용하도록 디렉터리 버킷을 구성할 때 S3 버킷 키는 항상 활성화됩니다. S3 버킷 키는 디렉터리 버킷의 `GET` 및 `PUT` 작업에 대해 항상 활성화되며 비활성화할 수 없습니다. [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_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [배치 운영의 Copy 작업](directory-buckets-objects-Batch-Ops.md) 또는 [import 작업](create-import-job.md)을 통해 SSE-KMS로 암호화된 객체를 범용 버킷에서 디렉터리 버킷으로, 디렉터리 버킷에서 범용 버킷으로 또는 디렉터리 버킷 간에 복사하는 경우 S3 버킷 키는 지원되지 않습니다. 이 경우 Amazon S3는 KMS 암호화 개체에 대한 사본 요청이 있을 때마다 AWS KMS를 직접적으로 호출합니다.

   S3 버킷 키를 사용하면 Amazon S3에서 AWS KMS로의 요청 트래픽이 줄어 암호화 비용이 절감됩니다. 자세한 내용은 [Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감](bucket-key.md) 섹션을 참조하세요.

1. **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)**를 선택한 경우 **AWS KMS 키**에서 다음 방법 중 하나로 AWS Key Management Service 키를 지정하거나 새 키를 생성합니다.
   + 사용 가능한 KMS 키 목록에서 중에서 선택하려면 **AWS KMS keys에서 선택**을 선택하고 **사용 가능한 AWS KMS keys**에서 **KMS 키**를 선택합니다.

     고객 관리형 키만 이 목록에 표시됩니다. AWS 관리형 키(`aws/s3`)는 디렉터리 버킷에서 지원되지 않습니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service* 개발자 안내서의 [ 고객 키 및 AWS 키](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)를 참조하십시오.
   + KMS 키 ARN 또는 별칭을 입력하려면 **AWS KMS key ARN 입력**을 선택하고 KMS 키 ARN 또는 별칭을 **AWS KMS key ARN**에 입력합니다.
   + AWS KMS 콘솔에서 고객 관리형 키를 생성하려면 **KMS 키 생성**을 선택합니다.

     AWS KMS key 생성에 대한 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [키 생성](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)을 참조하십시오.
**중요**  
SSE-KMS 구성은 버킷 수명 기간 동안 디렉터리 버킷당 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) 1개만 지원할 수 있습니다. [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)(`aws/s3`)는 지원되지 않습니다. 또한, SSE-KMS에 고객 관리형 키를 지정한 후에는 버킷의 SSE-KMS 구성을 위한 고객 관리형 키를 재정의할 수 없습니다.  
다음과 같은 방법으로 버킷의 SSE-KMS 구성에 대해 지정한 고객 관리형 키를 식별할 수 있습니다.  
응답에서 `x-amz-server-side-encryption-aws-kms-key-id`의 값을 찾기 위해 `HeadObject` API 작업을 요청합니다.
데이터에 새 고객 관리형 키를 사용하려면 최신 고객 관리형 키가 있는 새 디렉터리 버킷에 기존 객체를 복사하는 것이 좋습니다.
버킷과 동일한 AWS 리전에서 사용할 수 있는 KMS 키만 사용 가능합니다. Amazon S3 콘솔은 버킷과 동일한 리전에 있는 처음 100개의 KMS 키만 나열합니다. 목록에 없는 KMS 키를 사용하려면 KMS 키 ARN을 입력해야 합니다. 다른 계정에서 소유한 KMS 키를 사용하려면 먼저 해당 키에 대한 사용 권한이 있어야 하고, 다음 단계로 KMS 키 ARN을 입력해야 합니다. KMS 키의 크로스 계정 권한에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서에서 [다른 계정에서 사용할 수 있는 KMS 키 만들기](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)를 참조하십시오. SSE-KMS에 대한 자세한 내용은 [디렉터리 버킷의 새 객체 업로드에 AWS KMS(SSE-KMS)를 사용한 서버 측 암호화 지정](s3-express-specifying-kms-encryption.md) 섹션을 참조하십시오.
디렉터리 버킷에서 서버 측 암호화에 AWS KMS key를 사용하는 경우 대칭 암호화 KMS 키를 선택해야 합니다. Amazon S3는 대칭 암호화 KMS 키만 지원하며 비대칭 KMS 키는 지원하지 않습니다. 자세한 내용은 **AWS Key Management Service 개발자 안내서에서 [대칭 및 비대칭 KMS 키 식별](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)을 참조하십시오.

   Amazon S3에서 AWS KMS을(를) 사용하는 방법에 대한 자세한 내용은 [디렉터리 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 사용](s3-express-UsingKMSEncryption.md) 단원을 참조하십시오.

1. **버킷 생성**을 선택합니다. 버킷을 생성한 후 버킷에 파일 및 폴더를 추가할 수 있습니다. 자세한 내용은 [디렉터리 버킷의 객체 작업](directory-buckets-objects.md) 섹션을 참조하세요.

## AWS SDK 사용
<a name="create-directory-bucket-sdks"></a>

------
#### [ SDK for Go ]

이 예시는 AWS SDK for Go를 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
var bucket = "..."

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("usw2-az1"),
                Type: types.LocationTypeAvailabilityZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleAvailabilityZone,
                Type:           types.BucketTypeDirectory,
            },  
        },  
    })  
    var terr *types.BucketAlreadyOwnedByYou
    if errors.As(err, &terr) {
        fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message))
        fmt.Printf("noop...\n")
        return
    }   
    if err != nil {
        log.Fatal(err)
    }   

    fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location))
}
```

------
#### [ SDK for Java 2.x ]

이 예시는 AWS SDK for Java 2.x를 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
public static void createBucket(S3Client s3Client, String bucketName) {

    //Bucket name format is {base-bucket-name}--{az-id}--x-s3
    //example: doc-example-bucket--usw2-az1--x-s3 is a valid name for a directory bucket created in
    //Region us-west-2, Availability Zone 2  

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.AVAILABILITY_ZONE)
                     .name("usw2-az1").build()) //this must match the Region and Availability Zone in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE)
                    .build()).build();
    try {
    
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build();
             CreateBucketResponse response = s3Client.createBucket(bucketRequest);
             System.out.println(response);
    } 
    
    catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
         }
    }
```

------
#### [ AWS SDK for JavaScript ]

이 예시는 AWS SDK for JavaScript을 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
// file.mjs, run with Node.js v16 or higher
// To use with the preview build, place this in a folder 
// inside the preview build directory, such as /aws-sdk-js-v3/workspace/

import { S3 } from "@aws-sdk/client-s3";

const region = "us-east-1";
const zone = "use1-az4";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

const bucketName = `...--${suffix}`;

const createResponse = await s3.createBucket( 
    { Bucket: bucketName, 
      CreateBucketConfiguration: {Location: {Type: "AvailabilityZone", Name: zone},
      Bucket: { Type: "Directory", DataRedundancy: "SingleAvailabilityZone" }}
    } 
   );
```

------
#### [ SDK for .NET ]

이 예시는 SDK for .NET을 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
using (var amazonS3Client = new AmazonS3Client())
{
    var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest
    {

       BucketName = "DOC-EXAMPLE-BUCKET--usw2-az1--x-s3",
       PutBucketConfiguration = new PutBucketConfiguration
       {
         BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleAvailabilityZone, Type = BucketType.Directory },
         Location = new LocationInfo { Name = "usw2-az1", Type = LocationType.AvailabilityZone }
       }
     }).ConfigureAwait(false);
}
```

------
#### [ SDK for PHP ]

이 예시는 AWS SDK for PHP를 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([

    'region'      => 'us-east-1',
]);


$result = $s3Client->createBucket([
    'Bucket' => 'doc-example-bucket--use1-az4--x-s3',
    'CreateBucketConfiguration' => [
        'Location' => ['Name'=> 'use1-az4', 'Type'=> 'AvailabilityZone'],
        'Bucket' => ["DataRedundancy" => "SingleAvailabilityZone" ,"Type" => "Directory"]   ],
]);
```

------
#### [ SDK for Python ]

이 예시는 AWS SDK for Python (Boto3)을 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def create_bucket(s3_client, bucket_name, availability_zone):
    '''
    Create a directory bucket in a specified Availability Zone

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to create; for example, 'doc-example-bucket--usw2-az1--x-s3'
    :param availability_zone: String; Availability Zone ID to create the bucket in, for example, 'usw2-az1'
    :return: True if bucket is created, else False
    '''

    try:
        bucket_config = {
                'Location': {
                    'Type': 'AvailabilityZone',
                    'Name': availability_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleAvailabilityZone'
                }
            }
        s3_client.create_bucket(
            Bucket = bucket_name,
            CreateBucketConfiguration = bucket_config
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'us-west-2'
    availability_zone = 'usw2-az1'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, availability_zone)
```

------
#### [ SDK for Ruby ]

이 예시는 AWS SDK for Ruby를 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
s3 = Aws::S3::Client.new(region:'us-west-2')
s3.create_bucket(
  bucket: "bucket_base_name--az_id--x-s3",
  create_bucket_configuration: {
    location: { name: 'usw2-az1', type: 'AvailabilityZone' },
    bucket: { data_redundancy: 'SingleAvailabilityZone', type: 'Directory' }
  }
)
```

------

## AWS CLI 사용
<a name="create-directory-bucket-cli"></a>

이 예시는 AWS CLI을 사용하여 디렉터리 버킷을 생성하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

디렉터리 버킷을 생성할 때는 구성 세부 정보를 제공하고 다음과 같은 명명 규칙을 사용해야 합니다. `bucket-base-name--zone-id--x-s3` 

```
aws s3api create-bucket
--bucket bucket-base-name--zone-id--x-s3
--create-bucket-configuration 'Location={Type=AvailabilityZone,Name=usw2-az1},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory}'
--region us-west-2
```

자세한 내용은 AWS Command Line Interface의 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)을 참조하세요.

# 가용 영역의 디렉터리 버킷에 대한 리전 및 영역 엔드포인트
<a name="endpoint-directory-buckets-AZ"></a>

게이트웨이 VPC 엔드포인트를 사용하여 S3 Express One Zone에 저장된 객체와 디렉터리 버킷에 액세스할 수 있습니다. 디렉터리 버킷은 리전 및 영역 API 엔드포인트를 사용합니다. 사용하는 Amazon S3 API 작업에 따라 리전 엔드포인트 또는 영역 엔드포인트가 필요합니다. 게이트웨이 엔드포인트 사용에 따르는 추가 요금은 없습니다.

버킷 수준(즉 컨트롤 플레인) API 작업은 리전 엔드포인트를 통해 사용할 수 있으며 이를 리전 엔드포인트 API 작업이라고 합니다. 리전 엔드포인트 API 작업의 예로는 `CreateBucket` 및 `DeleteBucket`이 있습니다.

 S3 Express One Zone에 저장되는 디렉터리 버킷을 생성할 때 버킷이 위치할 가용 영역을 선택합니다. 영역 엔드포인트 API 작업을 사용하여 디렉터리 버킷에 객체를 업로드하고 관리할 수 있습니다.

객체 수준(즉 데이터 영역) API 작업은 영역 엔드포인트를 통해 사용할 수 있으며 이를 영역 엔드포인트 API 작업이라고 합니다. 영역 엔드포인트 API 작업의 예로는 `CreateSession` 및 `PutObject`가 있습니다.


| 리전 이름 | 리전 | 가용 영역 ID | 리전 엔드포인트 | 영역 엔드포인트 | 
| --- | --- | --- | --- | --- | 
|  미국 동부(버지니아 북부)  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  미국 동부(오하이오)  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  미국 서부(오리건)  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  아시아 태평양(뭄바이)  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  아시아 태평양(도쿄)  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  유럽(아일랜드)  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  유럽(스톡홀름)  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

# S3 Express One Zone 성능 최적화
<a name="s3-express-performance"></a>

S3 Express One Zone은 지연 시간에 가장 민감한 애플리케이션에 대해 일관되게 10밀리초 미만의 데이터 액세스를 제공하도록 특별히 설계된 고성능 단일 가용 영역(AZ) S3 스토리지 클래스입니다. S3 Express One Zone은 Amazon Elastic Compute Cloud, Amazon Elastic Kubernetes Service, Amazon Elastic Container Service와 같은 고성능 객체 스토리지와 AWS 컴퓨팅 리소스를 단일 가용 영역 내에 함께 배치할 수 있는 옵션을 제공하는 최초의 S3 스토리지 클래스입니다. 스토리지와 컴퓨팅 리소스를 함께 배치하면 컴퓨팅 성능과 비용이 최적화되고 데이터 처리 속도가 향상됩니다.

S3 Express One Zone은 다른 S3 스토리지 클래스와 유사한 성능 탄력성을 제공하면서도 10밀리초 미만의 첫 번째 바이트 읽기 및 쓰기 요청 지연 시간을 일관되게 제공하여 S3 Standard보다 최대 10배 더 빠릅니다. S3 Express One Zone은 처음부터 매우 높은 집계 수준까지 버스트 처리량을 지원하도록 설계되었습니다. S3 Express One Zone 스토리지 클래스는 맞춤형 아키텍처를 사용하여 고성능 하드웨어에 데이터를 저장함으로써 성능을 최적화하고 지속적으로 짧은 요청 지연 시간을 제공합니다. S3 Express One Zone의 객체 프로토콜은 인증 및 메타데이터 오버헤드를 간소화하도록 향상되었습니다.

지연 시간을 더욱 줄이고 초당 최대 2백만 건의 읽기와 최대 200,000건의 쓰기를 지원하기 위해 S3 Express One Zone은 Amazon S3 디렉터리 버킷에 데이터를 저장합니다. 기본적으로 각 디렉터리 버킷은 초당 최대 200,000건의 읽기와 최대 100,000건의 쓰기를 지원합니다. 워크로드에 기본 TPS 제한보다 높은 값이 필요한 경우 [AWS Support](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)를 통해 증가를 요청할 수 있습니다.

10밀리초 미만의 데이터 액세스 속도를 제공하는 고성능 하드웨어 및 소프트웨어와 초당 대량의 트랜잭션까지 확장할 수 있는 디렉터리 버킷 조합된 덕분에 S3 Express One Zone은 요청 집약적인 작업이나 성능이 매우 중요한 애플리케이션에 가장 적합한 Amazon S3 스토리지 클래스입니다.

다음 주제에서는 S3 Express One Zone 스토리지 클래스를 사용하는 애플리케이션의 성능을 최적화하기 위한 모범 사례 지침과 설계 패턴에 대해 설명합니다.

**Topics**
+ [S3 Express One Zone 성능을 최적화하는 모범 사례](s3-express-optimizing-performance-design-patterns.md)

# S3 Express One Zone 성능을 최적화하는 모범 사례
<a name="s3-express-optimizing-performance-design-patterns"></a>

Amazon S3 Express One Zone에서 객체를 업로드 및 검색하는 애플리케이션을 빌드할 때 모범 사례 지침에 따라 성능을 최적화합니다. S3 Express One Zone 스토리지 클래스를 사용하려면 S3 디렉터리 버킷을 생성해야 합니다. S3 Express One Zone 스토리지 클래스는 S3 범용 버킷과 함께 사용할 수 없습니다.

기타 모든 Amazon S3 스토리지 클래스 및 S3 범용 버킷에 대한 성능 지침은 [모범 사례 설계 패턴: Amazon S3 성능 최적화](optimizing-performance.md) 섹션을 참조하세요.

대규모 워크로드에서 S3 Express One Zone 스토리지 클래스 및 디렉터리 버킷의 성능과 확장성을 최적화하려면 디렉터리 버킷이 범용 버킷과 어떻게 다른지 이해하는 것이 중요합니다. 그런 다음 디렉터리 버킷의 작동 방식에 맞게 애플리케이션을 조정하는 모범 사례가 제시되어 있습니다.

## 디렉터리 버킷의 작동 방식
<a name="s3-express-how-directory-buckets-work"></a>

Amazon S3 Express One Zone 스토리지 클래스는 디렉터리 버킷당 초당 최대 2,000,000개의 GET 및 최대 200,000개의 PUT 트랜잭션(TPS)으로 워크로드를 지원할 수 있습니다. S3 Express One Zone을 사용하면 데이터가 가용 영역의 S3 디렉터리 버킷에 저장됩니다. 디렉터리 버킷의 객체는 파일 시스템과 유사한 계층적 네임스페이스 내에서 액세스할 수 있으며, 이는 플랫 네임스페이스를 사용하는 S3 범용 버킷과는 대조적입니다. 범용 버킷과 달리 디렉터리 버킷은 키를 접두사 대신 디렉터리에 계층적으로 구성합니다. 접두사는 객체 키 이름의 시작 부분에 있는 문자열입니다. 범용 버킷에서는 접두사를 사용하여 데이터를 구성하고 플랫 객체 스토리지 아키텍처를 관리할 수 있습니다. 자세한 내용은 [접두어를 사용한 객체 구성](using-prefixes.md) 섹션을 참조하세요.

디렉터리 버킷에서 객체는 유일하게 지원되는 구분 기호인 슬래시(`/`)를 사용하여 계층적 네임스페이스에 구성됩니다. `dir1/dir2/file1.txt`와 같은 키를 사용하여 객체를 업로드하면 Amazon S3에서 `dir1/` 및 `dir2/` 디렉터리가 자동으로 생성되고 관리됩니다. 디렉터리는 `PutObject` 또는 `CreateMultiPartUpload` 작업 중에 생성되며 `DeleteObject` 또는 `AbortMultiPartUpload` 작업 후 비어 있게 되면 자동으로 제거됩니다. 디렉터리의 객체 및 하위 디렉터리 수에는 상한이 없습니다.

객체가 디렉터리 버킷에 업로드될 때 생성되는 디렉터리는 HTTP `503 (Slow Down)` 오류 발생 가능성을 줄이도록 즉시 규모가 조정될 수 있습니다. 이 자동 크기 조정을 통해 애플리케이션은 필요에 따라 디렉터리 내부 및 디렉터리 간 읽기 및 쓰기 요청을 병렬화할 수 있습니다. S3 Express One Zone의 경우 개별 디렉터리는 디렉터리 버킷의 최대 요청 속도를 지원하도록 설계되었습니다. 시스템이 균등한 로드 분배를 위해 객체를 자동으로 분산하므로 최적의 성능을 달성하기 위해 키 접두사를 무작위화할 필요는 없습니다. 하지만 그 결과로 키가 디렉터리 버킷에 사전순으로 저장되지 않습니다. 이는 사전순으로 더 가까운 키가 동일한 서버에 함께 위치할 가능성이 더 높은 S3 범용 버킷과는 대조적입니다.

디렉터리 버킷 작업 및 디렉터리 상호 작용의 예에 대한 자세한 내용은 [디렉터리 버킷 작업 및 디렉터리 상호 작용 예시](#s3-express-directory-bucket-examples) 섹션을 참조하세요.

## 모범 사례
<a name="s3-express-best-practices-section"></a>

디렉터리 버킷 성능을 최적화하고 시간이 지남에 따라 워크로드 규모를 조정할 수 있도록 하려면 모범 사례를 따르세요.

### 많은 항목(객체 또는 하위 디렉터리)을 포함하는 디렉터리 사용
<a name="s3-express-best-practices-use-directories"></a>

디렉터리 버킷은 기본적으로 모든 워크로드에 대해 높은 성능을 제공합니다. 특정 작업의 성능을 더욱 최적화하기 위해 더 많은 항목(객체 또는 하위 디렉터리)을 디렉터리에 통합하면 지연 시간이 단축되고 요청 속도가 빨라집니다.
+ `PutObject`, `DeleteObject`, `CreateMultiPartUpload`, `AbortMultiPartUpload`와 같은 변형 API 작업은 수천 개의 항목을 포함하는 적은 수의 고밀도 디렉터리를 사용하여 구현할 때 최적의 성능을 발휘하며, 많은 수의 작은 디렉터리를 사용하는 것보다 더 효과적입니다.
+ `ListObjectsV2` 작업은 결과 페이지를 채우기 위해 탐색해야 하는 디렉터리 수가 적을수록 더 나은 성능을 발휘합니다.

#### 접두사에 엔트로피를 사용하지 않음
<a name="s3-express-best-practices-dont-use-entropy"></a>

Amazon S3 작업에서 엔트로피는 접두사 이름 지정의 무작위성을 의미하며, 이는 스토리지 파티션 간에 워크로드를 균등하게 분산하는 데 도움이 됩니다. 그러나 디렉터리 버킷은 로드 분산을 내부적으로 관리하므로 최상의 성능을 위해 접두사에 엔트로피를 사용하지 않는 것이 좋습니다. 디렉터리 버킷의 경우 엔트로피로 인해 이미 생성된 디렉터리가 재사용되지 않아 요청이 느려질 수 있기 때문입니다.

`$HASH/directory/object`와 같은 키 패턴은 많은 중간 디렉터리를 생성할 수 있습니다. 다음 예시에서 모든 `job-1`은 상위 디렉터리가 다르기 때문에 서로 다른 디렉터리입니다. 디렉터리의 밀도가 낮아지고 변형 및 목록 요청 속도가 느려집니다. 이 예시에는 모두 단일 항목을 가진 중간 디렉터리가 12개 있습니다.

```
s3://my-bucket/0cc175b9c0f1b6a831c399e269772661/job-1/file1
  
s3://my-bucket/92eb5ffee6ae2fec3ad71c777531578f/job-1/file2
  
s3://my-bucket/4a8a08f09d37b73795649038408b5f33/job-1/file3
  
s3://my-bucket/8277e0910d750195b448797616e091ad/job-1/file4
  
s3://my-bucket/e1671797c52e15f763380b45e841ec32/job-1/file5
  
s3://my-bucket/8fa14cdd754f91cc6554c9e71929cce7/job-1/file6
```

대신 더 나은 성능을 위해 `$HASH` 구성 요소를 제거하고 `job-1`을 단일 디렉터리로 만들어 디렉터리 밀도를 높일 수 있습니다. 다음 예시에서 6개의 항목을 가진 단일 중간 디렉터리가 이전 예시에 비해 더 나은 성능을 낼 수 있습니다.

```
s3://my-bucket/job-1/file1
  
s3://my-bucket/job-1/file2
  
s3://my-bucket/job-1/file3
  
s3://my-bucket/job-1/file4
  
s3://my-bucket/job-1/file5
  
s3://my-bucket/job-1/file6
```

이러한 성능 이점은 객체 키가 처음 생성되고 키 이름에 디렉터리가 포함되면 해당 객체에 대한 디렉터리가 자동으로 생성되기 때문에 발생합니다. 이후에 동일한 디렉터리에 객체를 업로드할 때는 디렉터리를 생성할 필요가 없으므로 기존 디렉터리로 객체를 업로드하는 데 걸리는 지연 시간이 줄어듭니다.

#### `ListObjectsV2` 직접 호출 시 객체를 논리적으로 그룹화하는 기능이 필요 없다면 구분 기호 / 이외의 다른 구분 기호를 사용하여 키의 각 부분을 구분
<a name="s3-express-best-practices-use-separator"></a>

디렉터리 버킷의 경우 `/` 구분 기호가 특수하게 처리되므로 분명한 목적을 갖고 사용해야 합니다. 디렉터리 버킷은 객체를 사전순으로 정렬하지 않지만 디렉터리 내의 객체는 여전히 `ListObjectsV2` 출력에서 함께 그룹화됩니다. 이 기능이 필요하지 않다면 구분 기호 `/`를 다른 문자로 바꾸어 중간 디렉터리가 생성되지 않도록 할 수 있습니다.

예를 들어 다음 키가 `YYYY/MM/DD/HH/` 접두사 패턴을 갖는다고 가정해 보겠습니다.

```
s3://my-bucket/2024/04/00/01/file1
  
s3://my-bucket/2024/04/00/02/file2
  
s3://my-bucket/2024/04/00/03/file3
  
s3://my-bucket/2024/04/01/01/file4
  
s3://my-bucket/2024/04/01/02/file5
  
s3://my-bucket/2024/04/01/03/file6
```

`ListObjectsV2` 결과에서 시간 또는 날짜별로 객체를 그룹화할 필요가 없지만 월별로 객체를 그룹화해야 하는 경우 다음과 같은 `YYYY/MM/DD-HH-` 키 패턴을 사용하면 `ListObjectsV2` 작업의 디렉터리가 크게 줄어들고 성능이 향상됩니다.

```
s3://my-bucket/2024/04/00-01-file1
  
s3://my-bucket/2024/04/00-01-file2
  
s3://my-bucket/2024/04/00-01-file3
  
s3://my-bucket/2024/04/01-02-file4
  
s3://my-bucket/2024/04/01-02-file5
  
s3://my-bucket/2024/04/01-02-file6
```

#### 가능하면 구분 기호로 구분된 목록 작업 사용
<a name="s3-express-best-practices-use-delimited-list"></a>

`delimiter`가 없는 `ListObjectsV2` 요청은 모든 디렉터리에 대해 깊이 우선 재귀 탐색을 수행합니다. `delimiter`가 있는 `ListObjectsV2` 요청은 `prefix` 파라미터로 지정된 디렉터리의 항목만 검색하므로 요청 지연 시간이 줄고 초당 집계 키 수가 늘어납니다. 디렉터리 버킷의 경우 가능하면 구분 기호로 구분된 목록 작업을 사용하도록 합니다. 구분 기호로 목록을 구분하면 디렉터리 방문 횟수가 줄어들어 초당 키 수가 늘어나고 요청 지연 시간이 단축됩니다.

예를 들어 디렉터리 버킷에 다음 디렉터리 및 객체가 있다고 해보겠습니다.

```
s3://my-bucket/2024/04/12-01-file1
  
s3://my-bucket/2024/04/12-01-file2
  
...
  
s3://my-bucket/2024/05/12-01-file1
  
s3://my-bucket/2024/05/12-01-file2
  
...
  
s3://my-bucket/2024/06/12-01-file1
  
s3://my-bucket/2024/06/12-01-file2
  
...
  
s3://my-bucket/2024/07/12-01-file1
  
s3://my-bucket/2024/07/12-01-file2
  
...
```

`ListObjectsV2` 성능 향상을 위해 애플리케이션의 로직에서 허용하는 경우 구분 기호로 구분된 목록을 사용하여 하위 디렉터리와 객체를 나열합니다. 예를 들어 구분 기호로 구분된 목록 작업을 위해 다음 명령을 실행할 수 있습니다.

```
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/' --delimiter '/'
```

출력은 하위 디렉터리 목록입니다.

```
{
    "CommonPrefixes": [
        {
            "Prefix": "2024/04/"
        },
        {
            "Prefix": "2024/05/"
        },
        {
            "Prefix": "2024/06/"
        },
        {
            "Prefix": "2024/07/"
        }
    ]
}
```

더 나은 성능으로 각 하위 디렉터리를 나열하려면 다음 예시와 같은 명령을 실행할 수 있습니다.

명령:

```
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/04' --delimiter '/'
```

출력:

```
{
    "Contents": [
        {
            "Key": "2024/04/12-01-file1"
        },
        {
            "Key": "2024/04/12-01-file2"
        }
    ]
}
```

### S3 Express One Zone 스토리지를 컴퓨팅 리소스와 같은 위치에 배치
<a name="s3-express-best-practices-colocate"></a>

S3 Express One Zone을 사용하면 각 디렉터리 버킷이 버킷을 생성할 때 선택한 단일 가용 영역에 위치하게 됩니다. 컴퓨팅 워크로드 또는 리소스와 같은 위치의 로컬 가용 영역에 새 디렉터리 버킷을 생성하여 시작할 수 있습니다. 그러면 지연 시간이 매우 짧은 읽기 및 쓰기를 즉시 시작할 수 있습니다. 디렉터리 버킷은 컴퓨팅과 스토리지 간의 지연 시간을 줄이기 위해 AWS 리전 내에서 가용 영역을 선택할 수 있는 S3 버킷 유형입니다.

서로 다른 가용 영역에서 디렉터리 버킷에 액세스하는 경우 지연 시간이 약간 늘어날 수 있습니다. 성능을 최적화하려면 가능하면 동일한 가용 영역에 있는 Amazon Elastic Container Service, Amazon Elastic Kubernetes Service 및 Amazon Elastic Compute Cloud 인스턴스에서 디렉터리 버킷에 액세스하는 것이 좋습니다.

### 1MB가 넘는 객체의 경우 높은 처리량을 달성하기 위해 동시 연결 사용
<a name="s3-express-best-practices-concurrent-connections"></a>

디렉터리 버킷으로 여러 건의 동시 요청을 보내 요청을 별도의 연결로 분산하여 액세스 가능한 대역폭을 극대화함으로써 최상의 성능을 달성할 수 있습니다. 범용 버킷과 마찬가지로 S3 Express One Zone은 디렉터리 버킷에 대한 연결 수 제한이 없습니다. 개별 디렉터리는 동일한 디렉터리에 많은 수의 동시 쓰기가 발생하는 경우 성능을 수평적으로 자동 확장할 수 있습니다.

디렉터리 버킷에 대한 개별 TCP 연결에는 초당 업로드하거나 다운로드할 수 있는 바이트 수의 상한이 고정되어 있습니다. 객체가 커지면 요청 시간이 트랜잭션 처리가 아닌 바이트 스트리밍에 좌우됩니다. 여러 연결을 사용하여 더 큰 객체의 업로드 또는 다운로드를 병렬화하려면 엔드투엔드 지연 시간을 줄일 수 있습니다. `Java 2.x` SDK를 사용하는 경우 [멀티파트 업로드 API 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) 및 바이트 범위 가져오기와 같은 성능 향상 기능을 활용하여 데이터에 병렬로 액세스하는 [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html)를 사용하는 것이 좋습니다.

### 게이트웨이 VPC 엔드포인트 사용
<a name="s3-express-best-practices-vpc-endpoints"></a>

게이트웨이 엔드포인트를 사용하면 VPC에 대한 인터넷 게이트웨이 또는 NAT 디바이스 없이 VPC에서 디렉터리 버킷으로 직접 연결할 수 있습니다. 패킷이 네트워크에서 소비하는 시간을 줄이기 위해 디렉터리 버킷에 게이트웨이 VPC 엔드포인트를 사용하여 VPC를 구성해야 합니다. 자세한 내용은 [디렉터리 버킷에 대한 네트워킹](s3-express-networking.md) 섹션을 참조하세요.

### 세션 인증 사용 및 유효한 기간 동안 세션 토큰 재사용
<a name="s3-express-best-practices-session-auth"></a>

디렉터리 버킷은 성능에 민감한 API 작업의 지연 시간을 줄이기 위해 세션 토큰 인증 메커니즘을 제공합니다. `CreateSession`을 한 번 직접적으로 호출하여 세션 토큰을 얻을 수 있으며, 이 토큰은 이후 5분 동안 모든 요청에 ​​유효합니다. API 직접 호출에서 지연 시간을 최소화하려면 세션 토큰을 획득하여 해당 토큰의 전체 수명 동안 재사용한 후 새로 고쳐야 합니다.

AWS SDK를 사용하면 SDK가 세션 토큰 새로 고침을 자동으로 처리하여 세션이 만료될 때 서비스가 중단되지 않도록 합니다. AWS SDK를 사용하여 `CreateSession` API 작업에 대한 요청을 시작하고 관리하는 것이 좋습니다.

에 대한 자세한 내용은 `CreateSession` 단원을 참조하세요.[`CreateSession`을 사용하여 영역 엔드포인트 API 작업 권한 부여](s3-express-create-session.md).

### CRT 기반 클라이언트 사용
<a name="s3-express-best-practices-crt"></a>

AWS 공통 런타임(CRT)은 C 언어로 작성된 모듈식의 고성능 고효율 라이브러리 세트로, AWS SDK의 기반 역할을 합니다. CRT를 사용하면 처리량이 증가하고, 연결 관리가 향상되며, 시작 시간이 단축됩니다. CRT는 Go를 제외한 모든 AWS SDK에서 사용할 수 있습니다.

사용하는 SDK에 CRT를 구성하는 방법에 대한 자세한 내용은 [AWS 공통 런타임(CRT) 라이브러리](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html), [Accelerate Amazon S3 throughput with the AWS Common Runtime](https://aws.amazon.com/blogs//storage/improving-amazon-s3-throughput-for-the-aws-cli-and-boto3-with-the-aws-common-runtime/), [Introducing CRT-based S3 client and the S3 Transfer Manager in the AWS SDK for Java 2.x](https://aws.amazon.com/blogs//developer/introducing-crt-based-s3-client-and-the-s3-transfer-manager-in-the-aws-sdk-for-java-2-x/), [Amazon S3 작업에 S3CrtClient 사용](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/examples-s3-crt.html), [AWS CRT 기반 HTTP 클라이언트 구성](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html)을 참조하세요.

### 최신 AWS SDK 버전 사용
<a name="s3-express-best-practices-latest-sdks"></a>

AWS SDK는 Amazon S3 성능을 최적화하기 위한 다양한 권장 지침을 기본적으로 지원합니다. SDK는 애플리케이션 내에서 Amazon S3를 활용할 수 있는 더 간단한 API를 제공하며 최신 모범 사례를 따르기 위해 정기적으로 업데이트됩니다. 예를 들어 SDK는 HTTP `503` 오류 후 요청을 자동으로 재시도하고 느린 연결 응답을 처리합니다.

`Java 2.x` SDK를 사용하는 경우 [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html)를 사용하는 것이 좋습니다. S3 Transfer Manager는 필요에 따라 바이트 범위 요청을 사용하여 초당 수천 개의 요청을 처리할 수 있도록 연결 규모를 수평적으로 자동 조정합니다. 바이트 범위 요청은 S3에 대한 동시 연결을 사용하여 동일한 객체 내에서 다양한 바이트 범위를 가져올 수 있으므로 성능을 향상시킬 수 있습니다. 그러면 전체 객체 요청 한 건에 비해 집계 처리량을 높일 수 있습니다. 최신 성능 최적화 기능을 활용하려면 최신 버전의 AWS SDK를 사용하는 것이 중요합니다.

## 성능 문제 해결
<a name="s3-express-performance-troubleshooting"></a>

### 지연 시간에 민감한 애플리케이션에 재시도 요청을 설정하고 있나요?
<a name="s3-express-performance-troubleshooting-retry"></a>

S3 Express One Zone은 추가 조정 없이 일관된 수준의 고성능을 제공하도록 특별히 설계되었습니다. 하지만 제한 시간 값과 재시도를 적극적으로 설정하면 지연 시간과 성능을 일관되게 유지하는 데 도움이 될 수 있습니다. AWS SDK에는 특정 애플리케이션의 허용 오차에 따라 튜닝할 수 있는 구성 가능한 제한 시간 및 재시도 값이 있습니다.

### AWS 공통 런타임(CRT) 라이브러리와 최적의 Amazon EC2 인스턴스 유형을 사용하고 있나요?
<a name="s3-express-performance-troubleshooting-crt-ec2"></a>

다수의 읽기 및 쓰기 작업을 수행하는 애플리케이션은 그렇지 않은 애플리케이션보다 메모리 또는 컴퓨팅 용량이 훨씬 더 많이 필요합니다. 성능이 요구되는 워크로드를 위해 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작할 때는 애플리케이션에 필요한 만큼의 리소스를 포함하는 인스턴스 유형을 선택하세요. S3 Express One Zone 고성능 스토리지는 고성능 스토리지의 이점을 활용할 수 있는 더 큰 용량의 시스템 메모리와 더 강력한 CPU 및 GPU를 갖춘 더 큰 신규 인스턴스 유형과 함께 사용하는 것이 이상적입니다. 또한 읽기 및 쓰기 요청을 병렬로 더 빠르게 처리할 수 있는 최신 버전의 CRT 지원 AWS SDK를 사용하는 것이 좋습니다.

### 세션 기반 인증에 AWS SDK를 사용하고 있나요?
<a name="s3-express-performance-troubleshooting-session-auth"></a>

Amazon S3를 사용하면 AWS SDK의 일부 모범 사례와 동일한 모범 사례를 따라 HTTP REST API 요청을 사용할 때 성능을 최적화할 수 있습니다. 하지만 S3 Express One Zone에서 사용하는 세션 기반 권한 부여 및 인증 메커니즘을 사용하면 AWS SDK를 사용하여 `CreateSession` 및 관리형 세션 토큰을 관리하는 것이 좋습니다. AWS SDK는 `CreateSession` API 작업을 사용하여 사용자를 대신하여 자동으로 토큰을 생성하고 새로 고칩니다. `CreateSession`을 사용하면 각 요청을 승인하는 데 필요한 AWS Identity and Access Management(IAM)로의 요청당 왕복 지연 시간을 줄일 수 있습니다.

## 디렉터리 버킷 작업 및 디렉터리 상호 작용 예시
<a name="s3-express-directory-bucket-examples"></a>

다음은 디렉터리 버킷의 작동 방식에 대한 세 가지 예시입니다.

### 예시 1: 디렉터리 버킷에 대한 S3 `PutObject` 요청이 디렉터리와 상호 작용하는 방식
<a name="s3-express-directory-bucket-examples-put"></a>

1. 빈 버킷에서 `PUT(<bucket>, "documents/reports/quarterly.txt")` 작업을 실행하면 버킷 루트 내에 `documents/` 디렉터리가 생성되고, `documents/` 내에 `reports/` 디렉터리가 생성되며, `reports/` 내에 `quarterly.txt` 객체가 생성됩니다. 이 작업의 경우 객체 외에 두 개의 디렉터리가 생성되었습니다.  
![\[documents/reports/quarterly.txt에 대한 PUT 작업 후 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-foo-bar-baz.png)

1. 그런 다음 또 다른 작업 `PUT(<bucket>, "documents/logs/application.txt")`가 실행되면 `documents/` 디렉터리는 이미 존재하고, `documents/` 내의 `logs/` 디렉터리는 존재하지 않고 새로 생성되며, `logs/` 디렉터리 내에 `application.txt` 객체가 생성됩니다. 이 작업의 경우 객체 외에 하나의 디렉터리만 생성되었습니다.  
![\[documents/logs/application.txt에 대한 PUT 작업 후 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-foo-baz-quux.png)

1. 마지막으로, `PUT(<bucket>, "documents/readme.txt")` 작업이 실행되면 루트 내의 `documents/` 디렉터리가 이미 존재하고 `readme.txt` 객체가 생성됩니다. 이 작업의 경우 디렉터리가 생성되지 않습니다.  
![\[documents/readme.txt에 대한 PUT 작업 후 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-foo-bar.png)

### 예시 2: 디렉터리 버킷에 대한 S3 `ListObjectsV2` 요청이 디렉터리와 상호 작용하는 방식
<a name="s3-express-directory-bucket-examples-list"></a>

구분 기호를 지정하지 않은 S3 `ListObjectsV2` 요청의 경우 버킷은 깊이 우선 방식으로 탐색됩니다. 출력은 일관된 순서로 반환됩니다. 그러나 이 순서는 요청 간에 동일하게 유지되지만 사전식 순서는 아닙니다. 이전 예시에서 생성된 버킷 및 디렉터리의 경우 다음과 같습니다.

1. `LIST(<bucket>)`가 실행되면 `documents/` 디렉터리로 이동하고 탐색이 시작됩니다.

1. 하위 디렉터리 `logs/`로 이동하고 탐색이 시작됩니다.

1. `logs/`에서 `application.txt` 객체가 발견됩니다.

1. `logs/`에 더 이상 항목이 없습니다. List 작업이 `logs/`에서 나와 `documents/`로 다시 이동합니다.

1. `documents/` 디렉터리 탐색이 계속되고 `readme.txt` 객체가 발견됩니다.

1. `documents/` 디렉터리는 계속 탐색되고 하위 디렉터리 `reports/`로 이동하며 탐색이 시작됩니다.

1. `reports/`에서 `quarterly.txt` 객체가 발견됩니다.

1. `reports/`에 더 이상 항목이 없습니다. List가 `reports/`에서 나와 `documents/`로 다시 이동합니다.

1. `documents/`에 더 이상 항목이 없으므로 List가 반환됩니다.

이 예시에서, `logs/`가 `readme.txt`보다 앞 순서이고, `readme.txt`가 `reports/`보다 앞 순서입니다.

### 예시 3: 디렉터리 버킷에 대한 S3 `DeleteObject` 요청이 디렉터리와 상호 작용하는 방식
<a name="s3-express-directory-bucket-examples-delete"></a>

![\[DELETE 작업 전 초기 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-delete-before.png)


1. 동일한 버킷에서 `DELETE(<bucket>, "documents/reports/quarterly.txt")` 작업이 실행되면 `quarterly.txt` 객체가 삭제되어 `reports/` 디렉터리가 비어 있게 되고 즉시 삭제됩니다. `documents/` 디렉터리는 `logs/` 디렉터리와 `readme.txt` 객체를 모두 포함하며 비어 있지 않으므로 삭제되지 않습니다. 이 작업의 경우 객체 하나와 디렉터리 하나만 삭제되었습니다.  
![\[documents/reports/quarterly.txt에 대한 DELETE 작업 후 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-delete1.png)

1. `DELETE(<bucket>, "documents/readme.txt")` 작업이 실행되면 `readme.txt` 객체가 삭제됩니다. `documents/`는 `logs/` 디렉터리를 포함하며 비어 있지 않으므로 삭제되지 않습니다. 이 작업의 경우 디렉터리는 삭제되지 않으며 객체만 삭제됩니다.  
![\[documents/readme.txt에 대한 DELETE 작업 후 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-delete2.png)

1. 마지막으로, `DELETE(<bucket>, "documents/logs/application.txt")` 작업이 실행되면 `application.txt`가 삭제되어 `logs/`가 비어 있게 되고 즉시 삭제됩니다. 그러면 `documents/`도 비어 있게 되어 즉시 삭제됩니다. 이 작업의 경우 디렉터리 두 개와 객체 한 개가 삭제됩니다. 이제 버킷이 비어 있습니다.  
![\[documents/logs/application.txt에 대한 DELETE 작업 후 디렉터리 구조를 보여주는 다이어그램\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/directory-examples-delete3.png)

# 데이터 레지던시 워크로드
<a name="directory-bucket-data-residency"></a>

AWS 전용 로컬 영역(전용 로컬 영역)은 AWS 인프라의 한 유형으로, AWS에서 완전히 관리하고, 사용자 또는 사용자의 커뮤니티가 독점적으로 사용하도록 빌드되며, 규제 요구 사항을 준수하기 위해 사용자가 지정한 위치 또는 데이터 센터에 배치됩니다. 전용 로컬 영역은 AWS 로컬 영역(로컬 영역) 제품 및 서비스의 한 유형입니다. 자세한 내용은 [AWS 전용 로컬 영역](https://aws.amazon.com/dedicatedlocalzones/)을 참조하세요.

전용 로컬 영역에서는 S3 디렉터리 버킷을 생성하여 특정 데이터 경계 내에 데이터를 저장할 수 있으므로 데이터 레지던시 및 격리 사용 사례를 지원하는 데 도움이 됩니다. 전용 로컬 영역의 디렉터리 버킷은 S3 Express One Zone 및 S3 One Zone-Infrequent Access(S3 One Zone-IA, Z-IA) 스토리지 클래스를 지원할 수 있습니다. 디렉터리 버킷은 현재 다른 [AWS 로컬 영역 위치](https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations/)에서 사용할 수 없습니다.

전용 로컬 영역에서 AWS Management Console, REST API, AWS Command Line Interface(AWS CLI) 및 AWS SDK를 사용할 수 있습니다.



로컬 영역에서의 디렉터리 버킷 작업에 대한 자세한 내용은 다음 주제를 참조하세요.

**Topics**
+ [로컬 영역의 디렉터리 버킷에 대한 개념](s3-lzs-for-directory-buckets.md)
+ [로컬 영역에 대해 계정 활성화](opt-in-directory-bucket-lz.md)
+ [VPC에서의 프라이빗 연결](connectivity-lz-directory-buckets.md)
+ [로컬 영역에서 디렉터리 버킷 생성](create-directory-bucket-LZ.md)
+ [로컬 영역의 디렉터리 버킷에 대한 인증 및 권한 부여](iam-directory-bucket-LZ.md)

# 로컬 영역의 디렉터리 버킷에 대한 개념
<a name="s3-lzs-for-directory-buckets"></a>

로컬 영역에서 디렉터리 버킷을 생성하기 전에 버킷을 생성할 로컬 영역의 ID가 있어야 합니다. [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 작업을 사용하여 모든 로컬 영역 정보를 찾을 수 있습니다. 이 API 작업은 로컬 영역 ID, 상위 리전 이름, 네트워크 경계 그룹, 옵트인 상태를 포함하여 로컬 영역에 대한 정보를 나열합니다. 로컬 영역 ID가 있고 옵트인했으면 로컬 영역에서 디렉터리 버킷을 생성할 수 있습니다. 디렉터리 버킷 이름은 사용자가 제공하는 기본 이름과 버킷 위치의 영역 ID 및 `--x-s3`가 차례로 포함된 접미사로 구성됩니다.

로컬 영역은 Amazon의 이중화되고 대역폭이 매우 높은 프라이빗 네트워크를 사용하여 **상위 리전**에 연결됩니다. 이로 인해 로컬 영역에서 실행되는 애플리케이션이 상위 리전의 나머지 AWS 서비스에 빠르고 안전하며 원활하게 액세스할 수 있습니다. **상위 영역 ID**는 로컬 영역 컨트롤 플레인 작업을 처리하는 영역의 ID입니다. **네트워크 경계 그룹**은 AWS가 퍼블릭 IP 주소를 광고하는 고유한 그룹입니다. 로컬 영역, 상위 리전 및 상위 영역 ID에 대한 자세한 내용은 AWS 로컬 영역* 사용 설명서*의 [AWS Local Zones concepts](https://docs.aws.amazon.com/local-zones/latest/ug/concepts-local-zones.html)를 참조하세요.

모든 디렉터리 버킷은 범용 버킷의 `s3` 네임스페이스와 별도의 `s3express` 네임스페이스를 사용합니다. 디렉터리 버킷의 경우 요청은 **리전 엔드포인트** 또는 **영역 엔드포인트**로 라우팅됩니다. AWS Management Console, AWS CLI 또는 AWS SDK를 사용하는 경우 라우팅이 자동으로 처리됩니다.

대부분의 버킷 수준 API 작업(예: `CreateBucket` 및 `DeleteBucket`)은 리전 엔드포인트에 라우팅되며 리전 엔드포인트 API 작업이라고 합니다. 리전 엔드포인트는 `s3express-control.ParentRegionCode.amazonaws.com` 형식입니다. 모든 객체 수준 API 작업(예: `PutObject`)과 두 개의 버킷 수준 API 작업(`CreateSession` 및 `HeadBucket`)은 영역 엔드포인트로 라우팅되며 영역 엔드포인트 API 작업이라고 합니다. 영역 엔드포인트는 `s3express-LocalZoneID.ParentRegionCode.amazonaws.com`형식입니다. 엔드포인트 유형별 API 작업의 전체 목록은 [Directory bucket API operations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations)을 참조하세요.

가상 프라이빗 클라우드(VPC)에서 로컬 영역의 디렉터리 버킷에 액세스하려면 게이트웨이 VPC 엔드포인트를 사용하면 됩니다. 게이트웨이 엔드포인트 사용에 따르는 추가 요금은 없습니다. 로컬 영역의 디렉터리 버킷 및 객체에 액세스하도록 게이트웨이 VPC 엔드포인트를 구성하려면 [VPC에서의 프라이빗 연결](connectivity-lz-directory-buckets.md) 섹션을 참조하세요.

# 로컬 영역에 대해 계정 활성화
<a name="opt-in-directory-bucket-lz"></a>

다음 주제에서는 전용 로컬 영역에 대해 계정을 활성화하는 방법을 설명합니다.

전용 로컬 영역에서 리소스를 생성하거나 액세스하려면 먼저 AWS 전용 로컬 영역(전용 로컬 영역)의 Amazon S3를 비롯한 모든 서비스에 대해 관리자가 AWS 계정을 활성화해야 합니다. [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 작업을 사용하여 로컬 영역에 대한 계정 ID 액세스를 확인할 수 있습니다.

기본적으로, Amazon S3에서 데이터를 추가로 보호하기 위해 자신이 생성한 S3 리소스에만 액세스할 수 있습니다. 로컬 영역의 버킷에는 기본적으로 모든 S3 Block Public Access 설정이 활성화되어 있으며 S3 객체 소유권은 버킷 소유자 적용으로 설정되어 있습니다. 이 설정은 수정할 수 없습니다. 선택적으로 로컬 영역 네트워크 경계 그룹 내로만 액세스를 제한하려면 IAM 정책에서 `s3express:AllAccessRestrictedToLocalZoneGroup` 조건 키를 사용할 수 있습니다. 자세한 내용은 [로컬 영역의 디렉터리 버킷에 대한 인증 및 권한 부여](iam-directory-bucket-LZ.md) 섹션을 참조하세요.

# VPC에서의 프라이빗 연결
<a name="connectivity-lz-directory-buckets"></a>

패킷이 네트워크에 소비하는 시간을 줄이려면 추가 비용 없이 AWS 네트워크 내에서 트래픽을 유지하면서 가용 영역의 디렉터리 버킷에 액세스하도록 게이트웨이 엔드포인트로 가상 프라이빗 클라우드(VPC)를 구성합니다.

**게이트웨이 VPC 엔드포인트를 구성하는 방법**

1. [Amazon VPC 콘솔](https://console.aws.amazon.com/vpc/)을 엽니다.

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

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

1. 엔드포인트의 이름을 지정합니다.

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

1. **서비스**에서 **유형=게이트웨이** 필터를 추가한 다음 **com.amazonaws.*region*.s3express** 옆의 옵션 버튼을 선택합니다.

1. **VPC**에서 엔드포인트를 생성할 VPC를 선택합니다.

1. **라우팅 테이블**에서 엔드포인트에서 사용할 VPC의 라우팅 테이블을 선택합니다. 엔드포인트가 생성되면 이 단계에서 선택한 라우팅 테이블에 라우팅 레코드가 추가됩니다.

1. **정책**에서 **모든 액세스**를 선택하여 VPC 엔드포인트를 통한 모든 리소스에 대한 모든 보안 주체의 모든 작업을 허용합니다. 또는 **사용자 지정**을 선택하여 VPC 엔드포인트를 통해 리소스에 대한 작업을 수행하는 위탁자의 권한을 제어하는 VPC 엔드포인트 정책을 연결합니다.

1. **IP 주소 유형**에서 다음 옵션 중에서 선택합니다.
   +  **IPv4** - 엔드포인트 네트워크 인터페이스에 IPv4 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 주소 범위가 있으며 서비스가 IPv4 요청을 수락하는 경우에만 지원됩니다.
   +  **IPv6** - 엔드포인트 네트워크 인터페이스에 IPv6 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷이 IPv6 전용 서브넷이며 서비스가 IPv6 요청을 수락하는 경우에만 지원됩니다.
   +  **듀얼 스택** - 엔드포인트 네트워크 인터페이스에 IPv4 및 IPv6 주소를 모두 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있으며 서비스가 IPv4 및 IPv6 요청을 모두 수락하는 경우에만 지원됩니다.

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

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

게이트웨이 VPC 엔드포인트에 대한 자세한 내용은 *AWS PrivateLink 안내서*에서 [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)를 참조하세요. 데이터 레지던시 사용 사례의 경우 게이트웨이 VPC 엔드포인트를 사용하여 VPC에서만 버킷에 액세스할 수 있도록 활성화하는 것이 좋습니다. VPC 또는 VPC 엔드포인트로 액세스가 제한되면 AWS Management Console, REST API, AWS CLI 및 AWS SDK를 통해 객체에 액세스할 수 있습니다.

**참고**  
AWS Management Console을 사용하여 VPC 또는 VPC 엔드포인트로 액세스를 제한하려면 AWS Management Console 프라이빗 액세스를 사용해야 합니다. 자세한 내용은 *AWS Management Console 안내서*의 [AWS Management Console Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)를 참조하세요.

# 로컬 영역에서 디렉터리 버킷 생성
<a name="create-directory-bucket-LZ"></a>

전용 로컬 영역에서는 디렉터리 버킷을 생성하여 특정 데이터 경계 내에서 객체를 저장하고 검색하여 데이터 레지던시 및 데이터 격리 사용 사례를 충족할 수 있습니다. S3 디렉터리 버킷은 로컬 영역에서 지원되는 유일한 버킷 유형이며 `LocalZone`이라는 버킷 위치 유형을 포함합니다. 디렉터리 버킷 이름은 사용자가 제공하는 기본 이름과 버킷 위치의 영역 ID 및 `--x-s3`가 포함된 접미사로 구성됩니다. [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 작업을 사용하여 로컬 영역 ID의 목록을 가져올 수 있습니다. 자세한 내용은 [디렉터리 버킷 이름 지정 규칙](directory-bucket-naming-rules.md) 섹션을 참조하세요.

**참고**  
전용 로컬 영역에서 리소스를 생성하거나 액세스하려면 먼저 AWS 전용 로컬 영역(전용 로컬 영역)의 S3를 비롯한 모든 서비스에 대해 관리자가 AWS 계정을 활성화해야 합니다. 자세한 내용은 [로컬 영역에 대해 계정 활성화](opt-in-directory-bucket-lz.md) 섹션을 참조하세요.
데이터 레지던시 요구 사항의 경우 게이트웨이 VPC 엔드포인트에서만 버킷에 액세스할 수 있도록 활성화하는 것이 좋습니다. 자세한 내용은 [VPC에서의 프라이빗 연결](connectivity-lz-directory-buckets.md) 섹션을 참조하세요.
로컬 영역 네트워크 경계 그룹 내로만 액세스를 제한하려면 IAM 정책에서 `s3express:AllAccessRestrictedToLocalZoneGroup` 조건 키를 사용할 수 있습니다. 자세한 내용은 [로컬 영역의 디렉터리 버킷에 대한 인증 및 권한 부여](iam-directory-bucket-LZ.md) 섹션을 참조하세요.

다음은 AWS Management Console, AWS CLI 및 AWS SDK를 사용하여 단일 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 설명합니다.

## S3 콘솔 사용
<a name="create-directory-bucket-lz-console"></a>

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 디렉터리 버킷을 생성하려는 로컬 영역의 상위 리전을 선택합니다.
**참고**  
상위 리전에 대한 자세한 내용은 [로컬 영역의 디렉터리 버킷에 대한 개념](s3-lzs-for-directory-buckets.md) 섹션을 참조하세요.

1. 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택합니다.

1. **버킷 만들기**를 선택합니다.

   **버킷 만들기** 페이지가 열립니다.

1. **일반 구성**에서 버킷이 생성될 AWS 리전을 확인합니다.

1.  **버킷 유형**에서 **디렉터리**를 선택합니다.
**참고**  
디렉터리 버킷을 지원하지 않는 리전을 선택한 경우 버킷 유형이 범용 버킷으로 기본 설정됩니다. 디렉터리 버킷을 생성하려면 지원되는 리전을 선택해야 합니다. 디렉터리 버킷을 지원하는 리전 목록은 [디렉터리 버킷에 대한 리전 및 영역 엔드포인트](s3-express-Regions-and-Zones.md) 섹션을 참조하세요.
버킷을 생성한 후에는 버킷 유형을 변경할 수 없습니다.

1. **버킷 위치**에서 사용할 로컬 영역을 선택합니다.
**참고**  
버킷 생성 후에는 로컬 영역을 변경할 수 없습니다.

1. **버킷 위치**에서 확인란을 선택하여 로컬 영역 중단 시 데이터를 사용할 수 없거나 데이터가 손실될 수 있음을 확인합니다.
**중요**  
디렉터리 버킷은 단일 로컬 영역 내의 여러 디바이스에 저장되지만 로컬 영역 간에 데이터를 중복으로 저장하지는 않습니다.

1. **버킷 이름**에서 디렉터리 버킷 이름을 입력합니다.

   디렉터리 버킷 이름 지정 규칙에 대한 자세한 내용은 [범용 버킷 이름 지정 규칙](bucketnamingrules.md) 섹션을 참조하세요. 콘솔을 사용하여 디렉터리 버킷을 생성하면 제공하는 기본 이름에 접미사가 자동으로 추가됩니다. 이 접미사에는 선택한 로컬 영역의 영역 ID가 포함됩니다.

   버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다.
**중요**  
버킷 이름에 계정 번호와 같은 중요한 정보를 포함하지 마세요. 버킷 이름은 버킷의 객체를 가리키는 URL에 표시됩니다.

1. **객체 소유권**에서 **버킷 소유자 적용** 설정이 자동으로 활성화되고 모든 액세스 제어 목록(ACL)이 비활성화됩니다. 디렉터리 버킷의 경우 ACL은 비활성화되어 있으며 활성화할 수 없습니다.

   **버킷 소유자 적용** 설정이 활성화되어 있으면 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어합니다. ACL은 더 이상 S3 버킷의 데이터에 대한 권한에 영향을 주지 않습니다. 버킷은 정책을 독점적으로 사용하여 액세스 제어를 정의합니다. Amazon S3의 최신 사용 사례 대부분은 더 이상 ACL을 사용할 필요가 없습니다. 자세한 내용은 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](about-object-ownership.md) 섹션을 참조하세요.

1. **이 버킷의 퍼블릭 액세스 차단 설정**에서 디렉터리 버킷의 퍼블릭 액세스 차단 설정이 자동으로 활성화됩니다. 디렉터리 버킷의 경우 이 설정을 수정할 수 없습니다. 퍼블릭 액세스 차단에 대한 자세한 내용은 [Amazon S3 스토리지에 대한 퍼블릭 액세스 차단](access-control-block-public-access.md) 섹션을 참조하십시오.

1. **기본 암호화**에서 디렉터리 버킷은 기본적으로 **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**를 통해 데이터를 암호화합니다. 또한 **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)**를 사용하여 디렉터리 버킷의 데이터를 암호화하는 옵션도 있습니다.

1. **버킷 생성**을 선택합니다.

   버킷을 생성한 후 버킷에 파일 및 폴더를 추가할 수 있습니다. 자세한 내용은 [디렉터리 버킷의 객체 작업](directory-buckets-objects.md) 섹션을 참조하세요.

## AWS CLI 사용
<a name="create-directory-bucket-lz-cli"></a>

이 예시는 AWS CLI를 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

디렉터리 버킷을 생성할 때는 구성 세부 정보를 제공하고 `bucket-base-name--zone-id--x-s3`와 같은 명명 규칙을 사용해야 합니다.

```
aws s3api create-bucket
--bucket bucket-base-name--zone-id--x-s3
--create-bucket-configuration 'Location={Type=LocalZone,Name=local-zone-id},Bucket={DataRedundancy=SingleLocalZone,Type=Directory}'
--region parent-region-code
```

로컬 영역 ID 및 상위 리전 코드에 대한 자세한 내용은 [로컬 영역의 디렉터리 버킷에 대한 개념](s3-lzs-for-directory-buckets.md) 섹션을 참조하세요. AWS CLI 명령에 대한 자세한 내용은 *AWS CLI Command Reference*의 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)을 참조하세요.

## AWS SDK 사용
<a name="create-directory-bucket-lz-sdks"></a>

------
#### [ SDK for Go ]

이 예시는 AWS SDK for Go를 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
var bucket = "bucket-base-name--zone-id--x-s3" // The full directory bucket name

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("local-zone-id"),
                Type: types.LocationTypeLocalZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleLocalZone,
                Type:           types.BucketTypeDirectory,
            },  
        },  
    })  
    var terr *types.BucketAlreadyOwnedByYou
    if errors.As(err, &terr) {
        fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message))
        fmt.Printf("noop...\n") // No operation performed, just printing a message
        return
    }   
    if err != nil {
        log.Fatal(err)
    }   

    fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location))
}
```

------
#### [ SDK for Java 2.x ]

이 예시는 AWS SDK for Java 2.x를 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
public static void createBucket(S3Client s3Client, String bucketName) {

    //Bucket name format is {base-bucket-name}--{local-zone-id}--x-s3
    //example: doc-example-bucket--local-zone-id--x-s3 is a valid name for a directory bucket created in a Local Zone.

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.LOCAL_ZONE)
                     .name("local-zone-id").build()) //this must match the Local Zone ID in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_LOCAL_ZONE)
                    .build()).build();
    try {
    
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build();
             CreateBucketResponse response = s3Client.createBucket(bucketRequest);
             System.out.println(response);
    } 
    
    catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
         }
    }
```

------
#### [ AWS SDK for JavaScript ]

이 예시는 AWS SDK for JavaScript를 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
// file.mjs, run with Node.js v16 or higher
// To use with the preview build, place this in a folder 
// inside the preview build directory, such as /aws-sdk-js-v3/workspace/

import { S3 } from "@aws-sdk/client-s3";

const region = "parent-region-code";
const zone = "local-zone-id";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

const bucketName = `bucket-base-name--${suffix}`; // Full directory bucket name

const createResponse = await s3.createBucket( 
    { Bucket: bucketName, 
      CreateBucketConfiguration: {Location: {Type: "LocalZone", Name: "local-zone-id"},
      Bucket: { Type: "Directory", DataRedundancy: "SingleLocalZone" }}
    } 
   );
```

------
#### [ SDK for .NET ]

이 예시는 SDK for .NET을 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
using (var amazonS3Client = new AmazonS3Client())
{
    var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest
    {

       BucketName = "bucket-base-name--local-zone-id--x-s3",
       PutBucketConfiguration = new PutBucketConfiguration
       {
         BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleLocalZone, Type = BucketType.Directory },
         Location = new LocationInfo { Name = "local-zone-id", Type = LocationType.LocalZone }
       }
     }).ConfigureAwait(false);
}
```

------
#### [ SDK for PHP ]

이 예시는 AWS SDK for PHP를 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([

    'region'      => 'parent-region-code',
]);


$result = $s3Client->createBucket([
    'Bucket' => 'bucket-base-name--local-zone-id--x-s3',
    'CreateBucketConfiguration' => [
        'Location' => ['Name'=> 'local-zone-id', 'Type'=> 'LocalZone'],
        'Bucket' => ["DataRedundancy" => "SingleLocalZone" ,"Type" => "Directory"]   ],
]);
```

------
#### [ SDK for Python ]

이 예시는 AWS SDK for Python (Boto3)을 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def create_bucket(s3_client, bucket_name, local_zone):
    '''
    Create a directory bucket in a specified Local Zone

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to create; for example, 'bucket-base-name--local-zone-id--x-s3'
    :param local_zone: String; Local Zone ID to create the bucket in
    :return: True if bucket is created, else False
    '''

    try:
        bucket_config = {
                'Location': {
                    'Type': 'LocalZone',
                    'Name': local_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleLocalZone'
                }
            }
        s3_client.create_bucket(
            Bucket = bucket_name,
            CreateBucketConfiguration = bucket_config
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'parent-region-code'
    local_zone = 'local-zone-id'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, local_zone)
```

------
#### [ SDK for Ruby ]

이 예시는 AWS SDK for Ruby를 사용하여 로컬 영역에서 디렉터리 버킷을 생성하는 방법을 보여줍니다.

**Example**  

```
s3 = Aws::S3::Client.new(region:'parent-region-code')
s3.create_bucket(
  bucket: "bucket-base-name--local-zone-id--x-s3",
  create_bucket_configuration: {
    location: { name: 'local-zone-id', type: 'LocalZone' },
    bucket: { data_redundancy: 'SingleLocalZone', type: 'Directory' }
  }
)
```

------

# 로컬 영역의 디렉터리 버킷에 대한 인증 및 권한 부여
<a name="iam-directory-bucket-LZ"></a>

로컬 영역의 디렉터리 버킷은 AWS Identity and Access Management(IAM) 권한 부여와 세션 기반 권한 부여를 모두 지원합니다. 디렉터리 버킷의 인증 및 권한 부여에 대한 자세한 내용은 [요청 인증 및 권한 부여](s3-express-authenticating-authorizing.md) 섹션을 참조하세요.

## 리소스
<a name="directory-bucket-lz-resources"></a>

디렉터리 버킷의 Amazon 리소스 이름(ARN)에는 `s3express` 네임스페이스, AWS 상위 리전, AWS 계정 ID 및 디렉터리 버킷 이름(영역 ID 포함)이 포함됩니다. 디렉터리 버킷에 액세스하고 작업을 수행하려면 다음 ARN 형식을 사용해야 합니다.

```
arn:aws:s3express:region-code:account-id:bucket/bucket-base-name--ZoneID--x-s3
```

로컬 영역의 디렉터리 버킷의 경우 영역 ID는 로컬 영역의 ID입니다. 로컬 영역의 디렉터리 버킷에 대한 자세한 내용은 [로컬 영역의 디렉터리 버킷에 대한 개념](s3-lzs-for-directory-buckets.md) 섹션을 참조하세요. ARN에 대한 자세한 내용은 *IAM 사용 설명서*의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)을 참조하세요. 리소스에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소: Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)를 참조하세요.

## 로컬 영역의 디렉터리 버킷에 대한 조건 키
<a name="condition-key-db-lz"></a>

로컬 영역에서는 IAM 정책에서 이 모든 [조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3express.html#amazons3express-policy-keys)를 사용할 수 있습니다. 또한 로컬 영역 네트워크 경계 그룹 주위에 데이터 경계를 생성하려면 `s3express:AllAccessRestrictedToLocalZoneGroup` 조건 키를 사용하여 그룹 외부의 모든 요청을 거부하면 됩니다.

IAM 정책 문이 적용되는 조건을 더 세분화하는 데 다음 조건 키를 사용할 수 있습니다. 디렉터리 버킷에서 지원하는 API 작업, 정책 작업 및 조건 키의 전체 목록은 [Policy actions for directory buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html#s3-express-security-iam-actions)을 참조하세요.

**참고**  
다음 조건 키는 로컬 영역에만 적용되며 가용 영역 및 AWS 리전에서는 지원되지 않습니다.


| API 작업 | 정책 작업 | 설명 | 조건 키 | 설명 | 형식 | 
| --- | --- | --- | --- | --- | --- | 
|  [영역 엔드포인트 API 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-APIs.html)  |  s3express:CreateSession  |  모든 영역 엔드포인트 API 작업(예: `CreateSession`, `HeadBucket`, `CopyObject`, `PutObject`, `GetObject`)에 대한 액세스 권한을 부여하는 데 사용되는 세션 토큰을 생성할 권한을 부여합니다.  |  s3express:AllAccessRestrictedToLocalZoneGroup  | 요청이 이 조건 키에 제공된 AWS 로컬 영역 네트워크 경계 그룹에서 시작되지 않는 한 버킷에 대한 모든 액세스를 필터링합니다. **값:** 로컬 영역 네트워크 경계 그룹 값   |  String  | 

## 정책 예제
<a name="directory-bucket-lz-policies"></a>

정의한 데이터 레지던시 경계(구체적으로, 동일한 AWS 리전의 상위 로컬 영역 집합인 로컬 영역 그룹) 내의 요청에 대한 객체 액세스를 제한하려면 다음 정책 중 하나를 설정하면 됩니다.
+ 서비스 제어 정책(SCP). SCP에 대한 자세한 내용은 *AWS Organizations 사용 설명서*에서 [Service control policies (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)를 참조하세요.
+ IAM 역할에 대한 IAM ID 기반 정책
+ VPC 엔드포인트 정책. VPC 엔드포인트 정책에 대한 자세한 내용은 *AWS PrivateLink 안내서*의 [Control access to VPC endpoints using endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)를 참조하세요.
+ S3 버킷 정책

**참고**  
`s3express:AllAccessRestrictedToLocalZoneGroup` 조건 키는 온프레미스 환경에서 시작되는 액세스를 지원하지 않습니다. 온프레미스 환경에서 시작되는 액세스를 지원하려면 정책에 소스 IP를 추가해야 합니다. 자세한 내용은 IAM 사용 설명서의 [aws:SourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)를 참조하세요.

**Example – SCP 정책**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Access-to-specific-LocalZones-only",
            "Effect": "Deny",
            "Action": [
                "s3express:*",
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "s3express:AllAccessRestrictedToLocalZoneGroup": [
                        "local-zone-network-border-group-value"
                    ]
                }
            }
        }
    ]
}
```

**Example – IAM ID 기반 정책(IAM 역할에 연결됨)**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "s3express:CreateSession",
        "Resource": "*",
        "Condition": {
            "StringNotEqualsIfExists": {
                "s3express:AllAccessRestrictedToLocalZoneGroup": [
                    "local-zone-network-border-group-value"
                ]              
            }
        }
    }
}
```

**Example - VPC 엔드포인트 정책**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {       
            "Sid": "Access-to-specific-LocalZones-only",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                 "StringNotEqualsIfExists": {
                     "s3express:AllAccessRestrictedToLocalZoneGroup": [
                         "local-zone-network-border-group-value"
                     ]
                 }   
            }
        }
    ]
}
```

**Example - 버킷 정책**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {       
            "Sid": "Access-to-specific-LocalZones-only",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                 "StringNotEqualsIfExists": {
                     "s3express:AllAccessRestrictedToLocalZoneGroup": [
                         "local-zone-network-border-group-value"
                     ]
                 }   
            }
        }
    ]
}
```