

# S3 Vectors 및 벡터 버킷 작업
<a name="s3-vectors"></a>

## Amazon S3 Vectors란 무엇인가요?
<a name="s3-vectors-what-is"></a>

Amazon S3 Vectors는 AI 에이전트, 추론, RAG 및 시맨틱 검색을 위해 특별히 구축되고 비용 최적화된 벡터 스토리지를 제공합니다. S3 벡터는 Amazon S3와 동일한 탄력성, 내구성 및 가용성을 제공하도록 설계되었으며 빈도가 낮은 쿼리의 경우 1초 미만의 지연 시간을 제공하고 빈도가 높은 쿼리의 경우 최소 100밀리초의 지연 시간을 제공합니다. 인프라를 프로비저닝하지 않고도 벡터 데이터를 저장, 액세스 및 쿼리할 수 있는 전용 API 작업 세트가 제공됩니다. S3 Vectors는 함께 작동하는 몇 가지 주요 구성 요소로 구성됩니다.
+ **벡터 버킷** - 벡터를 저장하고 쿼리하기 위해 특별히 구축된 새 버킷 유형입니다.
+ **벡터 인덱스** - 벡터 버킷 내에서 벡터 인덱스 내 벡터 데이터를 구성할 수 있습니다. 벡터 인덱스 내에서 벡터 데이터에 대한 유사성 쿼리를 수행합니다.
+ **벡터** - 벡터 인덱스에 벡터를 저장합니다. 유사성 검색 및 AI 애플리케이션의 경우, 벡터는 콘텐츠(예: 텍스트, 이미지 또는 오디오) 간의 시맨틱 관계를 보존하는 숫자 표현인 벡터 임베딩으로 만들어지므로 유사한 항목이 서로 더 가깝게 배치됩니다. S3 Vectors는 수학적으로 벡터가 서로 얼마나 가까운지를 비교하여 정확히 일치시키는 대신 시맨틱 의미를 기반으로 유사성 검색을 수행할 수 있습니다. 벡터 인덱스에 벡터 데이터를 추가할 때 조건 세트(예: 타임스탬프, 범주 및 사용자 기본 설정)를 기반으로 향후 필터링 쿼리를 위한 메타데이터를 연결할 수도 있습니다.

S3 Vectors에 대한 쓰기는 강력히 일관되므로 가장 최근에 추가된 데이터에 즉시 액세스할 수 있습니다. 시간이 지남에 따라 벡터를 작성, 업데이트 및 삭제하면 S3 Vectors는 데이터세트가 규모가 조정되고 발전하더라도 벡터 스토리지에 대해 가능한 최상의 가격 대비 성능을 달성하도록 벡터 데이터를 자동으로 최적화합니다. 버킷 및 IAM 정책을 비롯한 Amazon S3의 기존 액세스 제어 메커니즘을 사용하여 벡터 데이터에 대한 액세스를 제어할 수 있습니다. 버킷당 벡터 인덱스 제한 및 인덱스당 벡터 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

## 사용 사례: 대규모 데이터세트 간 유사성 검색
<a name="s3-vectors-use-cases"></a>

유사성 검색을 사용하면 정확한 키워드 일치가 아닌 벡터 표현을 기반으로 개념적으로 서로 관련된 항목을 찾을 수 있습니다. 이러한 검색은 정확한 단어나 시각적 요소가 다른 경우에도 유사한 의미나 특성을 가진 콘텐츠를 식별합니다.

S3 Vectors를 사용한 유사성 검색의 일반적인 사용 사례는 다음과 같습니다.
+ **의료 영상** - 진단 및 치료 계획에 도움이 되는 의료 이미지 수백만 개의 유사성 찾기
+ **저작권 침해** - 대규모 미디어 라이브러리에서 잠재적으로 파생되었을 수 있는 콘텐츠 식별
+ **이미지 중복 제거** - 대용량 이미지 컬렉션에서 중복되거나 거의 중복되는 이미지 감지 및 제거
+ **비디오 이해** - 비디오 자산 내에서 특정 장면 또는 콘텐츠 검색
+ **엔터프라이즈 문서 검색** - 회사 문서 간에 시맨틱 검색을 활성화하여 의미를 기반으로 관련 정보 찾기
+ **개인 맞춤** - 유사한 항목을 찾아 맞춤형 추천 제공

1초 미만의 검색 시간으로 비용 효과적인 벡터 검색 및 에이전틱 AI 애플리케이션을 구축하려면 S3 Vectors를 사용해야 합니다. 벡터 버킷을 사용하면 사용한 만큼만 비용을 지불하고 벡터 임베딩 업로드, 저장 및 쿼리 비용을 절감할 수 있습니다. 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

## S3 Vectors의 기능
<a name="s3-vectors-features"></a>



### 벡터용으로 특별히 구축된 스토리지
<a name="s3-vectors-purpose-built-storage"></a>

S3 Vectors는 벡터를 저장하고 쿼리할 목적으로 클라우드에 구축된 최초의 객체 스토리지입니다. 벡터 버킷은 벡터 데이터를 위한 비용 효과적이고 탄력적이며 내구성 있는 스토리지를 제공하도록 설계되었습니다.

벡터 임베딩은 의료 이미지 전반의 유사성을 감지하고, 수천 시간의 비디오 영상에서 이상을 찾고, 대규모 코드 베이스를 탐색하고, 특정 법적 문제와 가장 관련성이 높은 판례법을 식별하는 등 고객이 비정형 데이터를 사용하고 검색하는 방법을 혁신하고 있습니다. 이러한 새로운 애플리케이션은 임베딩 모델과 결합되어 데이터의 시맨틱 의미(예: 텍스트, 이미지, 비디오, 코드)를 숫자 벡터 임베딩으로 인코딩합니다.

벡터 버킷 내에서 인프라를 프로비저닝하지 않고 벡터 인덱스 내 벡터 데이터를 구성합니다. 시간이 지남에 따라 벡터를 작성, 업데이트 및 삭제하면 S3 Vectors는 데이터세트의 규모가 조정되고 발전하더라도 벡터 스토리지에 대해 가능한 최상의 가격 대비 성능을 달성하도록 벡터 데이터를 자동으로 최적화합니다. 버킷당 벡터 인덱스 제한 및 인덱스당 벡터 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

### 유사성 쿼리 수행
<a name="s3-vectors-similarity-queries"></a>

S3 벡터를 사용하면 쿼리를 수행하여 쿼리 벡터와 가장 유사한 벡터를 찾을 수 있습니다. 이때 자주 사용하지 않는 쿼리의 경우 응답 시간이 1초 미만이고 자주 사용하는 쿼리의 경우 최소 100밀리초입니다. S3 Vectors는 쿼리 빈도가 낮은 워크로드에 적합합니다.

### 메타데이터 필터링
<a name="s3-vectors-filtering-metadata"></a>

메타데이터(예: 연도, 작성자, 장르 및 위치)를 키-값 페어로 벡터에 연결할 수 있습니다. 필터링 불가능으로 명시적으로 지정하지 않는 한 기본적으로 모든 메타데이터를 필터링할 수 있습니다. 필터링 가능한 메타데이터를 사용하여 특정 속성을 기반으로 쿼리 결과를 필터링하여 쿼리의 관련성을 높일 수 있습니다. 벡터 인덱스는 메타데이터의 문자열, 숫자, 부울 및 목록 유형을 지원합니다. 벡터당 메타데이터 크기 제한 및 벡터당 필터링 가능한 메타데이터 크기 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

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

AWS Organizations의 IAM 및 [서비스 제어 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)을 사용하여 벡터 버킷의 리소스에 대한 액세스를 관리할 수 있습니다. S3 Vectors는 Amazon S3와 다른 서비스 네임스페이스인 `s3vectors` 네임스페이스를 사용합니다. 따라서 S3 Vectors 서비스 및 해당 리소스에 대한 정책을 구체적으로 설계할 수 있습니다. 개별 벡터 인덱스, 벡터 버킷 내의 모든 벡터 인덱스 또는 계정의 모든 벡터 버킷에 대한 액세스 권한을 부여하는 정책을 설계할 수 있습니다. 모든 Amazon S3 Block Public Access 설정은 벡터 버킷에 대해 항상 활성화되며 비활성화할 수 없습니다.

### AWS 서비스와 통합
<a name="s3-vectors-aws-integration"></a>

S3 Vectors는 다른 AWS 서비스와 통합되어 벡터 처리 기능을 개선합니다.
+ **[Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/)** - OpenSearch API 작업을 계속 사용하면서 벡터 스토리지 비용을 최적화합니다. 이는 하이브리드 검색, 집계, 고급 필터링, 패싯된 검색과 같은 고급 검색 기능이 필요한 워크로드에 적합합니다. 높은 QPS 및 짧은 지연 시간 벡터 검색을 위해 S3 벡터 인덱스의 스냅샷을 Amazon OpenSearch Serverless로 내보낼 수도 있습니다.
+ **[Amazon Bedrock 지식 기반](https://aws.amazon.com/bedrock/knowledge-bases/)** - 검색 증강 생성(RAG) 애플리케이션의 스토리지 비용을 절약하려면 S3 Vectors에서 벡터 인덱스를 벡터 스토어로 선택합니다.
+ **[SageMaker Unified Studio의 Amazon Bedrock](https://aws.amazon.com/bedrock/unifiedstudio/)** - S3 Vectors를 벡터 스토어로 사용하여 지식 기반을 개발하고 테스트합니다.

# 자습서: S3 Vectors 시작
<a name="s3-vectors-getting-started"></a>

이 자습서에서는 Amazon S3 콘솔을 사용하여 AWS 리전에 S3 벡터 버킷과 벡터 인덱스를 만듭니다. 그런 다음 Amazon Bedrock 임베딩 모델을 사용하여 데이터의 벡터 임베딩을 생성하고 벡터 인덱스에 저장하여 시맨틱 검색을 수행합니다.

아직 계정이 없는 경우 AWS 계정에 가입하여 시작합니다. 계정을 설정하는 방법에 대한 자세한 내용은 [Amazon S3 시작하기](GetStartedWithS3.md) 섹션을 참조하세요.

**Topics**
+ [1단계: 콘솔을 사용하여 벡터 버킷 만들기](#s3-vectors-create-bucket-tutorial)
+ [2단계: 콘솔을 사용하여 벡터 버킷에 벡터 인덱스 만들기](#s3-vectors-create-index-tutorial)
+ [3단계: SDK for Python(Boto3)을 사용하여 벡터 인덱스에 벡터 삽입](#s3-vectors-insert-vectors-tutorial)
+ [4단계. SDK for Python(Boto3)을 사용하여 벡터 인덱스의 벡터 쿼리](#s3-vectors-query-vectors-tutorial)
+ [(선택 사항) S3 Vectors Embed CLI를 사용하여 벡터 임베딩 생성 자동화](#s3-vectors-embed-CLI-tutorial)
+ [(선택 사항) S3 Vectors를 Amazon Bedrock 지식 기반과 통합](#s3-vectors-bedrock-kb-tutorial)
+ [(선택 사항) S3 Vectors를 Amazon OpenSearch와 통합](#s3-vectors-opensearch-tutorial)

## 1단계: 콘솔을 사용하여 벡터 버킷 만들기
<a name="s3-vectors-create-bucket-tutorial"></a>

S3 벡터 버킷은 벡터를 저장하고 쿼리하기 위해 특별히 구축된 Amazon S3 버킷의 한 유형입니다. 전용 API 작업을 사용하여 벡터 데이터를 작성하고 쿼리합니다. IAM ID 기반 정책 및 리소스 기반 정책과 같은 액세스 제어 메커니즘을 사용하여 벡터 데이터에 대한 액세스를 제어할 수 있습니다.

이 단계에서는 Amazon S3 콘솔을 사용하여 첫 번째 벡터 버킷을 만듭니다. 벡터 버킷을 만드는 다른 방법은 [벡터 버킷 만들기](s3-vectors-buckets-create.md) 섹션을 참조하세요.

### 벡터 버킷 생성
<a name="s3-vectors-create-bucket-procedure-tutorial"></a>

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

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

1. **벡터 버킷** 페이지에서 **벡터 버킷 생성**을 선택합니다.

1. **벡터 버킷 생성** 페이지의 **벡터 버킷 이름** 필드에 이름을 입력합니다. 이 자습서에서는 *media-embeddings*를 벡터 버킷 이름으로 사용합니다. 벡터 버킷 이름은 3\$163자여야 하며 AWS 리전 버킷 내에서 고유해야 합니다. 유효한 문자는 소문자(a\$1z), 숫자(0\$19), 하이픈(-)입니다.
**참고**  
버킷을 만든 후에는 벡터 버킷 이름을 변경할 수 없습니다.

1. **암호화**에서 **암호화 유형 지정**을 선택합니다. 암호화 유형을 **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)** 또는 기본값인 **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**로 지정할 수 있습니다. 이 자습서에서는 **Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화**를 선택합니다. 벡터 버킷의 암호화 구성 설정에 대한 자세한 내용은 [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md) 섹션을 참조하세요.
**참고**  
벡터 버킷을 만든 후에는 암호화 유형을 변경할 수 없습니다.

1. **태그(선택 사항)**에서 태그를 키-값 페어로 추가하여 벡터 버킷에 대한 권한을 구성하고 지정할 수 있습니다. **키**와 **값**을 입력합니다. 태그를 더 추가하려면 **태그 추가(Add Tag)**를 선택합니다. 벡터 버킷에 최대 50개의 태그를 입력할 수 있습니다. 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

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

## 2단계: 콘솔을 사용하여 벡터 버킷에 벡터 인덱스 만들기
<a name="s3-vectors-create-index-tutorial"></a>

**참고**  
벡터 인덱스 구성 파라미터를 신중하게 선택합니다. 벡터 인덱스를 만든 후에는 벡터 인덱스 이름, 차원, 거리 지표 또는 필터링할 수 없는 메타데이터 키를 업데이트할 수 없습니다. 이러한 값을 변경하려면 새 벡터 인덱스를 만들어야 합니다.

이 단계에서는 벡터 버킷에 벡터 인덱스를 만듭니다. 벡터 인덱스는 벡터 임베딩을 저장하고 쿼리하는 데 사용됩니다. 벡터 인덱스에 대한 자세한 내용은 [벡터 인덱스](s3-vectors-indexes.md) 섹션을 참조하세요.

### 벡터 인덱스 생성
<a name="s3-vectors-create-index-procedure-tutorial"></a>

1. Amazon S3 콘솔의 **벡터 버킷** 목록에서 새로 만든 벡터 버킷으로 이동합니다.

1. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

1. **벡터 인덱스 생성** 페이지의 **벡터 인덱스 이름** 필드에 이름을 입력합니다. 이 자습서에서는 *movies*를 벡터 인덱스 이름으로 사용합니다.

   벡터 인덱스 이름은 3\$163자여야 하며이 벡터 버킷 내에서 고유해야 합니다. 유효한 문자는 소문자(a\$1z), 숫자(0\$19), 하이픈(-), 점(.)입니다.

   인덱스를 만든 후에는 벡터 인덱스 이름을 변경할 수 없습니다.

1. **차원**에서 1\$14,096 사이의 숫자 값을 지정하여 벡터 임베딩 모델에서 생성되는 각 벡터의 숫자 수를 결정합니다. 임베딩 모델은 데이터(예: 텍스트 또는 이미지)를 숫자 벡터로 변환하는 특수 기계 학습(ML) 모델입니다. 임베딩 모델은 일반적으로 500\$12,000개 차원의 출력을 생성하며, 각 차원은 부동 소수점 숫자입니다. 이 자습서에서는 Amazon Bedrock의 Titan Text v2 임베딩 모델을 사용합니다. 이 임베딩 모델은 1,024개 차원 벡터를 기본값으로 사용하므로 벡터 인덱스의 차원을 `1024`로 설정합니다.

   인덱스를 만든 후에는 차원 값을 변경할 수 없습니다. 임베딩 모델의 권장 사항에 따라 차원 값을 신중하게 지정합니다.

1. **거리 지표**에서 거리 지표로 **코사인**(각형 유사성 측정) 또는 **유클리드**(직선 거리 측정)를 선택하여 쿼리 중에 벡터 간의 유사성을 계산하는 방법을 정의합니다. 이 자습서에서는 **코사인**을 선택합니다.

   인덱스를 만든 후에는 거리 지표를 변경할 수 없습니다. 임베딩 모델의 권장 사항에 따라 거리 지표를 신중하게 선택합니다.

1. **추가 설정(선택 사항)**에서 필터링 불가능한 메타데이터 키를 지정하여 벡터 임베딩과 함께 보조 정보를 저장할 수 있습니다.
**참고**  
 인덱스를 만든 후 벡터 데이터를 삽입할 때 필터링 가능한 메타데이터를 키-값 페어로 각 벡터에 연결할 수 있습니다. 기본적으로 벡터에 연결된 모든 메타데이터 키는 필터링이 가능하며, 유사성 쿼리에서 필터로 사용할 수 있습니다. 벡터 인덱스 만들기 중에 필터링 불가능한 것으로 지정된 메타데이터 키만 필터링에서 제외됩니다.

   필터링 불가능한 각 메타데이터 키는 1\$163자여야 하며 벡터 인덱스 내에서 고유해야 합니다. 이러한 키는 유사성 쿼리 중에 필터링할 필요가 없는 참조 정보를 저장하는 데 유용합니다. 예를 들어 텍스트 임베딩 작업 시 참조용으로 원본 텍스트 청크를 보존할 수 있습니다. 이 자습서에서는 벡터 임베딩을 만들려는 텍스트 데이터를 저장하기 위해 이름이 `source_text`인 필터링 불가능한 메타데이터 키를 추가합니다.

   인덱스 생성 후에는 필터링 불가능한 메타데이터 키를 업데이트할 수 없습니다. 메타데이터 구조를 신중하게 계획합니다.

1. **암호화**에서 **암호화 유형 지정**을 선택합니다. 버킷 수준 암호화 설정을 사용하거나 벡터 인덱스에 대한 암호화 설정을 재정의할 수 있습니다. 버킷 수준 설정을 재정의하는 경우, 벡터 인덱스의 암호화 유형을 **AWS 키 관리 서비스를 사용한 서버 측 암호화(SSE-KMS)** 또는 **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**로 지정할 수 있습니다. 이 자습서에서는 **암호화 버킷 설정 사용**을 선택합니다. 벡터 버킷 및 인덱스의 암호화 구성 설정에 대한 자세한 내용은 [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md) 섹션을 참조하세요.

1. **태그(선택 사항)**에서 태그를 키-값 페어로 추가하고 AWS Billing and Cost Management를 사용하여 벡터 인덱스 비용을 추적하고 구성할 수 있습니다. **키**와 **값**을 입력합니다. 태그를 더 추가하려면 **태그 추가(Add Tag)**를 선택합니다. 벡터 인덱스에 최대 50개의 태그를 입력할 수 있습니다. 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

1. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

새 벡터 인덱스가 버킷 내에 나타나는지 확인합니다.

## 3단계: SDK for Python(Boto3)을 사용하여 벡터 인덱스에 벡터 삽입
<a name="s3-vectors-insert-vectors-tutorial"></a>

벡터를 삽입, 나열 및 쿼리하려면 AWS SDK, AWS CLI 또는 Amazon S3 REST API를 사용합니다.

이 단계는 [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 작업을 사용하여 벡터 인덱스에 벡터 임베딩을 삽입하는 것입니다.

 먼저 선택한 임베딩 모델을 사용하여 벡터 임베딩을 생성해야 합니다. Amazon Bedrock을 사용하는 경우 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) API 작업으로 원하는 임베딩 모델을 지정하여 임베딩을 생성합니다. 또는 단일 명령으로 벡터 임베딩을 생성하고 삽입하려면 [(선택 사항) S3 Vectors Embed CLI를 사용하여 벡터 임베딩 생성 자동화](#s3-vectors-embed-CLI-tutorial) 섹션을 참조하세요.

다음 예제 코드는 AWS SDK for Python (Boto3)를 사용하여 Amazon Bedrock에서 Titan Text Embeddings V2 모델로 1,024개 차원 벡터 임베딩을 생성하고 `PutVectors` API를 사용하여 벡터 인덱스에 저장합니다. 각 벡터와 함께 키-값 페어를 필터링 가능한 메타데이터로 연결합니다. 또한 *source\$1text*라는 필터링 불가능한 메타데이터 키를 사용하여 각 벡터가 파생되는 원본 텍스트를 보존합니다. 요청 처리량을 극대화하고 속도와 효율성을 최적화하려면 벡터를 배치로 삽입 및 삭제하는 것이 좋습니다. 자세한 내용은 [S3 Vectors 모범 사례](s3-vectors-best-practices.md) 섹션을 참조하세요.

```
# Populate a vector index with embeddings from Amazon Titan Text Embeddings V2.
import boto3
import json

# Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. 
bedrock = boto3.client("bedrock-runtime", region_name="us-west-2")
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

# Texts to convert to embeddings.
texts = [
    "Star Wars: A farm boy joins rebels to fight an evil empire in space", 
    "Jurassic Park: Scientists create dinosaurs in a theme park that goes wrong",
    "Finding Nemo: A father fish searches the ocean to find his lost son"
]

# Generate vector embeddings.
embeddings = []
for text in texts:
    response = bedrock.invoke_model(
        modelId="amazon.titan-embed-text-v2:0",
        body=json.dumps({"inputText": text})
    )

    # Extract embedding from response.
    response_body = json.loads(response["body"].read())
    embeddings.append(response_body["embedding"])

# Write embeddings into vector index with metadata.
s3vectors.put_vectors(
    vectorBucketName="media-embeddings",   
    indexName="movies",   
    vectors=[
        {
            "key": "Star Wars",
            "data": {"float32": embeddings[0]},
            "metadata": {"source_text": texts[0], "genre":"scifi"}
        },
        {
            "key": "Jurassic Park",
            "data": {"float32": embeddings[1]},
            "metadata": {"source_text": texts[1], "genre":"scifi"}
        },
        {
            "key": "Finding Nemo",
            "data": {"float32": embeddings[2]},
            "metadata": {"source_text": texts[2], "genre":"family"}
        }
    ]
)
```

## 4단계. SDK for Python(Boto3)을 사용하여 벡터 인덱스의 벡터 쿼리
<a name="s3-vectors-query-vectors-tutorial"></a>

벡터 인덱스에 벡터 임베딩을 저장한 후 [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) API 작업을 사용하여 유사성 검색을 수행할 수 있습니다.

먼저 [3단계: SDK for Python(Boto3)을 사용하여 벡터 인덱스에 벡터 삽입](#s3-vectors-insert-vectors-tutorial)에서 삽입하는 동안 사용된 것과 동일한 임베딩 모델을 사용하여 쿼리 벡터 임베딩을 생성해야 합니다. 이 자습서에서는 SDK for Python(Boto3)을 통해 Amazon Bedrock의 Titan Text Embeddings V2 모델을 사용합니다.

유사성 검색을 수행하여 가장 가까운 일치 벡터를 반환할 수 있습니다. 유사성 검색에서는 선택적으로 메타데이터 키를 사용하여 필터링하여 특정 기준에 따라 결과를 좁히는 동시에 시맨틱 관련성을 유지할 수 있습니다.

```
# Query a vector index with an embedding from Amazon Titan Text Embeddings V2.
import boto3 
import json 

# Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. 
bedrock = boto3.client("bedrock-runtime", region_name="us-west-2")
s3vectors = boto3.client("s3vectors", region_name="us-west-2") 

# Query text to convert to an embedding. 
input_text = "adventures in space"

# Generate the vector embedding.
response = bedrock.invoke_model(
    modelId="amazon.titan-embed-text-v2:0",
    body=json.dumps({"inputText": input_text})
) 

# Extract embedding from response.
model_response = json.loads(response["body"].read())
embedding = model_response["embedding"]

# Query vector index.
response = s3vectors.query_vectors(
    vectorBucketName="media-embeddings",
    indexName="movies",
    queryVector={"float32": embedding}, 
    topK=3, 
    returnDistance=True,
    returnMetadata=True
)
print(json.dumps(response["vectors"], indent=2))

# Query vector index with a metadata filter.
response = s3vectors.query_vectors(
    vectorBucketName="media-embeddings",
    indexName="movies",
    queryVector={"float32": embedding}, 
    topK=3, 
    filter={"genre": "scifi"},
    returnDistance=True,
    returnMetadata=True
)
print(json.dumps(response["vectors"], indent=2))
```

## (선택 사항) S3 Vectors Embed CLI를 사용하여 벡터 임베딩 생성 자동화
<a name="s3-vectors-embed-CLI-tutorial"></a>

Amazon S3 Vectors Embed CLI는 S3 Vectors의 벡터 임베딩 작업을 간소화하는 독립형 명령줄 도구입니다. 단일 명령으로 Amazon Bedrock을 사용하여 데이터에 대한 벡터 임베딩을 만들고 S3 벡터 인덱스에 저장하고 쿼리할 수 있습니다. 이 도구는 다음과 같은 명령을 지원합니다.
+ `s3vectors-embed put`: 텍스트, 파일 콘텐츠 또는 S3 객체의 벡터 임베딩을 생성하고 S3 벡터 인덱스에 벡터로 저장합니다.
+ `s3vectors-embed query`: 쿼리 입력을 임베딩하고 S3 벡터 인덱스에서 유사한 벡터를 검색합니다.

명령 및 사용에 대한 자세한 내용은 [Amazon S3 Vectors Embed CLI GitHub 리포지토리](https://github.com/awslabs/s3vectors-embed-cli)를 참조하세요.

## (선택 사항) S3 Vectors를 Amazon Bedrock 지식 기반과 통합
<a name="s3-vectors-bedrock-kb-tutorial"></a>

Amazon Bedrock 지식 기반은 S3 Vectors와 통합되어 벡터 데이터세트의 비용 효과적이고 장기적인 스토리지를 제공합니다.

### 사전 조건
<a name="s3-vectors-bedrock-kb-prereq-tutorial"></a>

[사전 조건에](https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-console.html) 따라 Amazon Bedrock 지식 기반을 생성하는 데 필요한 권한이 있는지 확인합니다.
+ S3 Vectors 및 Amazon Bedrock 서비스 모두에 대한 적절한 IAM 권한. S3 Vectors의 IAM 권한에 대한 자세한 내용은 [S3 Vectors의 Identity and Access Management](s3-vectors-access-management.md) 섹션을 참조하세요.
+ 지식 기반으로 수집하기 위해 준비된 소스 문서.
+ 임베딩 모델 요구 사항에 대한 이해.

### 콘솔에서 S3 Vectors를 사용하여 Amazon Bedrock 지식 기반 만들기
<a name="s3-vectors-bedrock-kb-procedure-tutorial"></a>

Amazon Bedrock 지식 기반은 포괄적인 완전관리형 RAG 워크플로를 제공합니다. S3 Vectors로 지식 기반을 만들면 Amazon Bedrock은 S3 데이터 소스에서 데이터를 자동으로 가져오고, 콘텐츠를 텍스트 블록으로 변환하고, 임베딩을 생성하고, 벡터 인덱스에 저장합니다. 그런 다음 지식 기반을 쿼리하고 소스 데이터에서 검색된 청크를 기반으로 응답을 생성할 수 있습니다.

**콘솔에서 S3 Vectors를 사용하여 Amazon Bedrock 지식 기반 생성**

1. [Amazon Bedrock 권한이 있는 IAM 역할](https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html)을 사용하여 AWS Management Console에 로그인하고 [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 **만들기**를 선택합니다. 드롭다운 목록에서 **벡터 저장소가 있는 지식 기반**을 선택합니다.

1. 이 자습서에서는 **지식 기반 이름**, **지식 기반 설명** 및 **IAM 권한**을 기본값으로 유지합니다.

1. **데이터 소스 유형 선택**에서 지식 기반을 연결할 데이터 소스를 선택합니다. 이 자습서에서는 **Amazon S3**를 선택합니다.

1. (선택 사항) **태그** 또는 **애플리케이션 로그**를 제공합니다.

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

1. **데이터 소스 구성** 페이지에서 **데이터 소스 이름**, **데이터 소스 위치**, **구문 분석 전략** 및 **청크 전략**을 이 자습서의 기본 설정으로 유지합니다.

1. **S3 URI**에서 소스 파일이 포함된 S3 범용 버킷을 입력하거나 **S3 찾아보기**를 선택하고 S3 범용 버킷을 선택합니다.

1. 암호화된 S3 데이터의 경우 **S3 데이터에 대해 고객 관리형 KMS 키 추가**를 선택하고 고객 관리형 KMS 키를 지정합니다.

1. **다음**을 선택하여 **임베딩 모델** 및 **벡터 스토어** 옵션을 지정하는 다음 단계로 진행합니다.

1. **임베딩 모델** 섹션에서 **모델 선택**을 선택하고 S3 Vectors와 호환되는 임베딩 모델을 선택합니다. 부동 소수점 임베딩을 사용해야 합니다. 바이너리 유형은 지원되지 않습니다.

1. (선택 사항) **추가 구성** 섹션을 확장하여 다음 구성 옵션을 확인합니다(모든 모델이 모든 구성을 지원하는 것은 아님).
   + **임베딩 유형** - 데이터를 부동 소수점(float32) 벡터 임베딩(더 정확하지만 비용이 많이 듦) 또는 바이너리 벡터 임베딩(덜 정확하지만 비용이 적게 듦)으로 변환할지 여부입니다. S3 Vectors와 통합하려면 **부동 소수점 벡터 임베딩**을 선택해야 합니다.
   + **벡터 차원** - 임베딩 모델 권장 차원 크기를 선택합니다.

1. **벡터 스토어** 섹션에서 새 벡터 버킷의 자동 설정을 위해 권장 방법인 **빠른 새 벡터 스토어 생성**을 선택하거나, 사용 가능한 경우 **기존 벡터 스토어 사용**을 선택하여 기존 벡터 버킷을 사용합니다. 기존 벡터 스토어 흐름 사용에 대한 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Prerequisites for using a vector store you created for a knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)를 참조하세요.

1. **추가 구성**의 경우 - 기본적으로 벡터 버킷은 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화를 사용합니다. 암호화 설정에 대한 향상된 제어를 위해 AWS Key Management Service 키(SSE-KMS)를 사용한 서버 측 암호화에 자체 KMS 키를 사용하도록 선택할 수 있습니다.

1. **다음**을 선택하여 지식 기반 세부 정보를 검토한 다음 **지식 기반 생성**을 선택합니다.

**참고**  
지식 기반을 만드는 데 걸리는 시간은 구체적인 구성에 따라 달라집니다. 지식 기반 만들기가 완료되면 지식 기반 상태가 준비 또는 사용 가능 상태로 변경됩니다. 지식 기반이 준비되고 사용 가능해지면 데이터 소스를 최초로 한 번 동기화하고, 이후에는 콘텐츠를 최신 상태로 유지하고 싶을 때마다 동기화하세요. 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택하면 됩니다.

## (선택 사항) S3 Vectors를 Amazon OpenSearch와 통합
<a name="s3-vectors-opensearch-tutorial"></a>

[Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/)는 AWS 클라우드에서 OpenSearch의 배포, 확장 및 운영을 간소화해 주는 완전관리형 서비스입니다. S3 Vectors와 OpenSearch 간에는 두 가지 통합이 있습니다. 하나는 고성능 검색 기능을 위해 S3 Vectors에서 OpenSearch Serverless로 벡터 데이터를 내보내는 것입니다. 다른 하나는 OpenSearch 기능에 대한 액세스를 유지하면서 S3 Vectors를 OpenSearch 내에서 비용 효과적인 스토리지 엔진으로 사용하는 것입니다.

자세한 내용은 [OpenSearch Service에서 S3 Vectors 사용](s3-vectors-opensearch.md) 섹션을 참조하세요.

# 벡터 버킷
<a name="s3-vectors-buckets"></a>

벡터 버킷은 벡터 데이터를 저장하고 쿼리하기 위해 특별히 설계된 Amazon S3 버킷의 한 유형입니다. 벡터 버킷은 전용 API를 사용하여 벡터 데이터를 효율적으로 관리하고 벡터 임베딩 업로드, 저장 및 쿼리 비용을 절감합니다. 벡터 버킷은 벡터 데이터를 인덱스로 구성하기 위한 기반을 제공하므로 Amazon S3의 가용성, 내구성, 확장성 및 비용 효과를 활용하면서 대규모 데이터세트에서 유사성 검색을 수행할 수 있습니다.

벡터 버킷은 검색 시간이 1초 미만인 장기 벡터 스토리지에 최적화되어 있습니다. 벡터 데이터에 대해 유사성 쿼리를 수행하고 선택적으로 메타데이터를 연결하여 날짜, 범주 또는 사용자 선호도와 같은 특정 조건을 기반으로 쿼리를 필터링할 수 있습니다.

각 벡터 버킷에는 고유한 Amazon 리소스 이름(ARN)과 리소스 정책이 연결되어 있습니다. 벡터 버킷의 ARN은 다음 형식을 따릅니다.

```
arn:aws:s3vectors:Region:OwnerAccountID:bucket/bucket-name
```

벡터 버킷 내에서 벡터 인덱스를 만들어 데이터를 저장하고 쿼리합니다. 각 벡터 버킷은 특정 AWS 리전 내에 존재하며 벡터 버킷 내에 여러 벡터 인덱스를 만들 수 있습니다. 벡터 버킷은 IAM ID 기반 정책 및 버킷 정책을 포함한 보안 및 액세스 제어 메커니즘을 지원합니다. 버킷 정책을 사용하여 벡터 버킷 내의 특정 인덱스에 대한 액세스 권한을 부여하거나 제한할 수 있습니다.

벡터 버킷의 주요 특성:
+ 벡터 스토리지 및 유사성 검색 작업을 위해 특별히 구축되었습니다.
+ 강력히 일관된 쓰기를 통해 벡터 데이터에 즉시 액세스할 수 있습니다.
+ 데이터세트의 규모가 조정될 때 최상의 가격 대비 성능을 위해 벡터 데이터를 자동으로 최적화합니다.

버킷당 벡터 인덱스 제한 및 기타 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

**Topics**
+ [벡터 버킷 이름 지정 규칙](s3-vectors-buckets-naming.md)
+ [벡터 버킷 만들기](s3-vectors-buckets-create.md)
+ [벡터 버킷 나열](s3-vectors-buckets-list.md)
+ [벡터 버킷 속성 보기](s3-vectors-buckets-details.md)
+ [빈 벡터 버킷 삭제](s3-vectors-buckets-delete.md)
+ [벡터 버킷 정책 관리](s3-vectors-bucket-policy.md)
+ [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md)

# 벡터 버킷 이름 지정 규칙
<a name="s3-vectors-buckets-naming"></a>

벡터 버킷 이름은 AWS 리전 내에서 고유성을 보장하기 위해 특정 이름 지정 규칙을 따라야 합니다. Amazon S3는 다음 버킷 이름 지정 요구 사항을 적용하며, 이러한 규칙을 따르지 않으면 벡터 버킷을 만들 수 없습니다. 또한 필수는 아니지만 프로그래밍 방식으로 또는 콘솔을 통해 벡터 버킷으로 작업할 때 충돌을 방지하는 데 도움이 되는 모범 사례가 있습니다.

## 벡터 버킷 이름 지정 요구 사항
<a name="vector-bucket-naming-requirements"></a>

벡터 버킷을 만들 때 다음 요구 사항을 따라야 합니다.
+ 벡터 버킷 이름은 각 AWS 리전의 동일한 AWS 계정에서 고유해야 합니다.
+ 벡터 버킷 이름은 3자에서 63자 사이여야 합니다.
+ 벡터 버킷 이름은 소문자(a\$1z), 숫자(0\$19) 및 하이픈(-)으로만 구성될 수 있습니다.
+ 벡터 버킷 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.

## 이름 지정 모범 사례
<a name="vector-bucket-naming-best-practices"></a>

벡터 버킷의 이름을 지정할 때는 다음 모범 사례를 따르는 것이 좋습니다.
+ 벡터 데이터의 목적을 반영하는 설명이 포함된 이름(예: product-recommendations, document-embeddings)을 사용합니다.
+ 로그 및 URL에 표시될 수 있으므로 버킷 이름에 민감한 정보를 사용하지 않습니다.
+ 이름을 간결하지만 의미 있게 유지하여 관리 및 식별을 용이하게 합니다.

이러한 이름 지정 규칙을 사용하면 AWS Management Console, Amazon S3 REST API, AWS CLI 및 AWS SDK를 통해 벡터 버킷에 안정적으로 액세스할 수 있습니다.

# 벡터 버킷 만들기
<a name="s3-vectors-buckets-create"></a>

S3 콘솔 또는 AWS CLI를 사용하여 벡터 버킷을 만들 수 있습니다. 벡터 버킷에 저장된 모든 데이터는 항상 저장 시 암호화됩니다. 기본적으로 벡터 버킷은 SSE-S3를 사용하여 벡터 데이터를 암호화합니다. AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 사용하도록 버킷을 구성할 수도 있습니다. 벡터 버킷을 만든 후에는 버킷 암호화 설정을 변경할 수 없으므로 보안 요구 사항 및 규정 준수 요구 사항에 따라 적절한 암호화 방법을 선택하는 것이 중요합니다. 벡터 버킷의 보안에 대한 자세한 내용은 [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md) 섹션을 참조하세요.

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

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

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

1. **벡터 버킷 이름**에 버킷 이름을 입력합니다.

   버킷 이름은 다음 이름 지정 규칙을 따라야 합니다.
   + 버킷 이름은 3자에서 63자 사이여야 합니다.
   + 버킷 이름에는 소문자, 숫자, 하이픈만 사용할 수 있습니다.
   + 버킷 이름은 AWS 리전의 AWS 계정 내에서 고유해야 합니다.

   벡터 버킷 이름 지정 규칙에 대한 자세한 내용은 [벡터 버킷 이름 지정 규칙](s3-vectors-buckets-naming.md) 섹션을 참조하세요.
**중요**  
버킷을 만든 후에는 벡터 버킷 이름을 변경할 수 없습니다.

1. **암호화**에서 다음 옵션 중 하나를 선택합니다.
   + **암호화 유형을 지정하지 않음** - Amazon S3가 자동으로 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 모든 신규 벡터의 기본 암호화 수준으로 적용합니다. 추가 구성 없이 가장 간단한 설정을 하려면 이 옵션을 선택합니다.
   + **암호화 유형 지정** - 특정 암호화 방법을 선택합니다.
     + **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)** - 명시적으로 SSE-S3를 사용하도록 선택합니다. Amazon S3는 벡터 데이터를 스토리지에 쓸 때 암호화하고 액세스할 때 해독합니다. AWS는 모든 암호화 키를 자동으로 관리합니다.
     + **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)** - AWS KMS에서 고객 관리형 키(CMK)를 사용하여 암호화 키, 키 교체 및 액세스 정책을 더 세부적으로 제어할 수 있습니다.

       SSE-KMS를 선택하면 추가 옵션이 있습니다.
       + **AWS KMS 키 중에 선택** - 계정에서 기존 고객 관리형 키를 선택합니다.
       + **AWS KMS 키 ARN 입력** - KMS 키의 전체 ARN을 지정합니다(필수 형식).
       + **KMS 키 생성** - AWS KMS 콘솔을 열어 새로운 고객 관리형 키를 만듭니다.

       KMS 키 요구 사항:
       + KMS 키는 벡터 버킷과 동일한 리전에 있어야 합니다.
       + 전체 KMS 키 ARN을 지정해야 합니다(키 ID 및 별칭은 지원되지 않음).
       + S3 Vectors 서비스 위탁자(`indexing.s3vectors.amazonaws.com`)에게 키를 사용할 수 있는 `kms:Decrypt` 권한을 부여해야 합니다. AWS KMS 키 정책 예제에 대한 자세한 내용은 [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md) 섹션을 참조하세요.

       암호화 옵션 및 KMS 키 설정에 대한 자세한 내용은 [SSE-KMS 암호화 사용](s3-vectors-data-encryption.md#s3-vectors-sse-kms-encryption) 섹션을 참조하세요.
**중요**  
벡터 버킷을 만든 후에는 암호화 설정을 변경할 수 없습니다. 장기 보안 및 규정 준수 요구 사항에 따라 신중하게 선택합니다.

1. **태그(선택 사항)**에서 태그를 키-값 페어로 추가하고 AWS Billing and Cost Management를 사용하여 벡터 인덱스 비용을 추적하고 구성할 수 있습니다. **키**와 **값**을 입력합니다. 태그를 더 추가하려면 **태그 추가(Add Tag)**를 선택합니다. 벡터 인덱스에 최대 50개의 태그를 입력할 수 있습니다. 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

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

만든 후에 확인 메시지가 표시됩니다. 새 벡터 버킷이 벡터 버킷 목록에 나타나 버킷 내에 벡터 인덱스를 만들 준비가 되었습니다.

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

다음 명령을 사용하여 SSE-S3 암호화로 벡터 버킷을 만들 수 있습니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors create-vector-bucket \
   --vector-bucket-name "amzn-s3-demo-vector-bucket"
```

고객 관리형 KMS 키를 사용하여 SSE-KMS 암호화로 벡터 버킷 만들기:

```
aws s3vectors create-vector-bucket \
   --vector-bucket-name "amzn-s3-demo-vector-bucket" \
   --encryption-configuration '{"sseType": "aws:kms", "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"}'
```

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

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Create a vector bucket
s3vectors.create_vector_bucket(vectorBucketName="media-embeddings")
```

------

# 벡터 버킷 나열
<a name="s3-vectors-buckets-list"></a>

Amazon S3 콘솔, AWS CLI 또는 AWS SDK를 사용하여 모든 벡터 버킷을 볼 수 있습니다. 나열 작업은 계정에 벡터 버킷이 많을 때 특정 버킷을 찾는 데 도움이 되는 접두사 기반 필터링을 지원합니다. `ListVectorBuckets`, 접두사 제한 및 응답 제한에 대한 자세한 내용은 *Amazon S3 API 참조*의 [ListVectorBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectorBuckets.html)를 참조하세요.

## 접두사 검색 기능
<a name="s3-vectors-buckets-list-prefix-search"></a>

접두사 검색을 사용하면 특정 접두사로 시작하는 버킷을 나열할 수 있으므로 관련 벡터 버킷을 더 쉽게 구성하고 찾을 수 있습니다. 이는 관련 버킷을 그룹화하는 이름 지정 규칙을 사용할 때 특히 유용합니다.
+ **환경 기반**: `production-vectors-`, `staging-vectors-`, `dev-vectors-` 
+ **사용 사례 기반**: `ml-model-vectors-`, `document-search-`, `image-similarity-` 
+ **팀 기반**: `data-science-vectors-`, `ml-platform-vectors-` 

## S3 콘솔 사용
<a name="s3-vectors-buckets-list-console"></a>

벡터 버킷 나열

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

   콘솔에는 다음 정보와 함께 모든 벡터 버킷 목록이 표시됩니다.
   + **이름** - 벡터 버킷의 고유한 이름
   + **생성 날짜** - 버킷이 만들어진 시간
   + **Amazon 리소스 이름(ARN)** - 프로그래밍 방식 액세스를 위한 전체 ARN

목록 필터링:
+ 버킷 이름의 시작을 기반으로 버킷을 찾으려면 버킷 목록 위의 검색 상자에 벡터 버킷 이름 또는 접두사를 입력합니다.
+ 접두사를 사용하여 관련 버킷 그룹을 찾습니다(예: 모든 프로덕션 버킷을 찾으려면 ‘prod-’ 입력).

  입력하면서 목록이 실시간으로 업데이트됩니다.

## AWS CLI 사용
<a name="list-vector-bucket-CLI"></a>

```
aws s3vectors list-vector-buckets
```

## AWS SDK 사용
<a name="s3-vectors-buckets-list-sdk"></a>

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#List vector buckets
response = s3vectors.list_vector_buckets()
buckets = response["vectorBuckets"]
print(buckets)
```

------

# 벡터 버킷 속성 보기
<a name="s3-vectors-buckets-details"></a>

Amazon S3 REST API, AWS SDK, S3 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 속성, 암호화 설정 및 생성 세부 정보 등 벡터 버킷에 대한 세부 정보를 볼 수 있습니다. `GetVectorBucket`에 대한 자세한 내용은 *Amazon S3 API 참조*의 [GetVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucket.html)을 참조하세요.

## S3 콘솔 사용
<a name="console-procedure"></a>

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

1. 콘솔에 모든 벡터 버킷의 목록이 표시됩니다. 버킷 이름의 시작을 기반으로 버킷을 찾으려면 버킷 목록 위의 검색 상자에 벡터 버킷 이름 또는 접두사를 입력합니다. 벡터 버킷을 찾으면 **속성** 탭에서 암호화 설정, 태그 및 생성 세부 정보를 포함한 자세한 정보를 볼 수 있습니다.

## AWS CLI 사용
<a name="cli-procedure"></a>

```
aws s3vectors get-vector-bucket --vector-bucket-name "amzn-s3-demo-vector-bucket"
```

# 빈 벡터 버킷 삭제
<a name="s3-vectors-buckets-delete"></a>

더 이상 필요하지 않은 벡터 버킷은 삭제할 수 있습니다. 벡터 버킷을 삭제하려면 먼저 버킷 내의 모든 벡터 인덱스를 삭제해야 합니다. 벡터 인덱스를 삭제하면 해당 인덱스 내의 모든 벡터 데이터가 삭제됩니다. Amazon S3 REST API, AWS SDK, S3 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 벡터 버킷을 삭제할 수 있습니다.

벡터 버킷을 삭제하려면 다음을 수행해야 합니다.
+ 버킷의 모든 벡터 인덱스를 삭제합니다.
+ 버킷 또는 해당 인덱스에서 진행 중인 작업이 없는지 확인합니다.

**중요**  
버킷 삭제 작업은 영구적이며 취소할 수 없습니다.
버킷과 연결된 모든 데이터 및 구성이 영구적으로 손실됩니다.
버킷을 삭제한 후 버킷 이름을 다시 사용할 수 있게 됩니다.
삭제 후 버킷을 참조하는 모든 애플리케이션 또는 스크립트에 오류가 발생합니다.

## S3 콘솔 사용
<a name="console-procedure"></a>

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

1. 콘솔에 모든 벡터 버킷의 목록이 표시됩니다. 버킷 이름의 시작을 기반으로 버킷을 찾으려면 버킷 목록 위의 검색 상자에 벡터 버킷 이름 또는 접두사를 입력합니다. 벡터 버킷을 찾아 선택한 후 **삭제** 옵션을 선택합니다.

1. 이 삭제를 확인하려면 **delete**를 입력한 다음 **벡터 버킷 삭제**를 선택합니다.

## AWS CLI 사용
<a name="delete-vector-bucket-CLI"></a>

먼저 버킷에 벡터 인덱스가 없는지 확인합니다. 버킷이 비었는지 확인하는 방법에 대한 자세한 내용은 [벡터 인덱스 나열](s3-vectors-index-list.md) 섹션을 참조하세요.

인덱스가 있는 경우 각 인덱스에서 모든 벡터를 삭제한 다음 인덱스를 삭제해야 합니다. 버킷이 비었는지 확인하는 방법에 대한 자세한 내용은 [벡터 나열](s3-vectors-list.md), [벡터 인덱스에서 벡터 삭제](s3-vectors-delete.md) 및 [벡터 인덱스 삭제](s3-vectors-index-delete.md) 섹션을 참조하세요.

빈 벡터 버킷을 삭제하려면 다음 예제 명령을 사용하고 *사용자 입력 자리 표시자*를 실제 정보로 바꿉니다.

```
aws s3vectors delete-vector-bucket \
  --vector-bucket-name "amzn-s3-demo-vector-bucket"
```

## AWS SDK 사용
<a name="delete-vector-bucket-SDK"></a>

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Delete a vector bucket
response = s3vectors.delete_vector_bucket(vectorBucketName="media-embeddings")
```

------

# 벡터 버킷 정책 관리
<a name="s3-vectors-bucket-policy"></a>

벡터 버킷 정책은 버킷 및 그 콘텐츠에 대한 액세스를 제어하기 위해 벡터 버킷에 직접 연결하는 리소스 기반 정책입니다. Amazon S3 REST API, AWS SDK, S3 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 벡터 버킷 정책을 추가, 보기, 편집, 삭제할 수 있습니다. 벡터 버킷에 대한 버킷 정책은 다른 AWS 계정의 위탁자에게 권한을 부여할 수 있으므로 교차 계정 액세스 시나리오에 유용합니다.

## 정책 관리 작업
<a name="policy-management-operations"></a>
+ [PutVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectorBucketPolicy.html) - 버킷 정책을 추가하거나 업데이트합니다.
+ [GetVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucketPolicy.html) - 현재 버킷 정책을 검색합니다.
+ [DeleteVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucketPolicy.html) - 버킷 정책을 제거합니다.

## 벡터 버킷 정책 추가
<a name="vector-bucket-policies-cli"></a>

### S3 콘솔 사용
<a name="console-procedure"></a>

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

1. 왼쪽 탐색 창에서 **Amazon S3**를 선택합니다.

1. **벡터 버킷**을 선택하고 정책을 추가할 벡터 버킷 이름을 선택합니다.

1. **권한** 탭을 선택합니다.

1. **벡터 버킷 정책**에서 **편집**을 선택합니다.

1. 정책 편집기에서 정책 JSON을 입력합니다.

1. (선택 사항) **정책 예제**를 선택하여 필요에 맞게 조정할 수 있는 샘플 정책을 확인합니다.

1. 정책을 입력한 후 **변경 사항 저장**을 선택합니다.

### AWS CLI 사용
<a name="vector-bucket-policy-add-CLI"></a>

버킷 정책을 추가하거나 업데이트하려면 다음 예제 명령을 사용하고 *사용자 입력 자리 표시자*를 실제 정보로 바꿉니다.

```
aws s3vectors put-vector-bucket-policy \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --policy '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"s3vectors:*","Resource":"arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket"}]}'
```

## 벡터 버킷 정책 보기
<a name="vector-bucket-policy-get"></a>

### S3 콘솔 사용
<a name="console-procedure"></a>

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

1. 왼쪽 탐색 창에서 **Amazon S3**를 선택합니다.

1. **벡터 버킷**을 선택하고 정책을 보려는 벡터 버킷 이름을 선택합니다.

1. **권한** 탭을 선택합니다.

### AWS CLI 사용
<a name="vector-bucket-policy-get-CLI"></a>

버킷 정책을 확인하려면 다음 예제 명령을 사용하고 *사용자 입력 자리 표시자*를 실제 정보로 바꿉니다.

```
aws s3vectors get-vector-bucket-policy \
  --vector-bucket-name "amzn-s3-demo-vector-bucket"
```

## 벡터 버킷 정책 삭제
<a name="vector-bucket-policy-delete"></a>

### S3 콘솔 사용
<a name="console-procedure"></a>

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

1. 왼쪽 탐색 창에서 **Amazon S3**를 선택합니다.

1. **벡터 버킷**을 선택하고 정책을 삭제하려는 벡터 버킷 이름을 선택합니다.

1. **권한** 탭을 선택합니다.

1. **벡터 버킷 정책**에서 **삭제**를 선택합니다.

### AWS CLI 사용
<a name="vector-bucket-policy-delete-CLI"></a>

버킷 정책을 삭제하려면 다음 예제 명령을 사용하고 *사용자 입력 자리 표시자*를 실제 정보로 바꿉니다.

```
aws s3vectors delete-vector-bucket-policy \
  --vector-bucket-name "amzn-s3-demo-vector-bucket"
```

정책 예제 및 모범 사례를 포함하여 버킷 정책 만들기 및 관리에 대한 자세한 내용은 [S3 Vectors 리소스 기반 정책 예시](s3-vectors-resource-based-policies.md) 섹션을 참조하세요.

# S3 벡터 버킷에서 태그 사용
<a name="s3-vectors-tags"></a>

AWS 태그는 리소스, 이 경우 Amazon S3 벡터 버킷에 대한 메타데이터를 포함하는 키-값 페어입니다. S3 벡터 버킷을 생성할 때 태그를 지정하거나 기존 벡터 버킷에서 태그를 관리할 수 있습니다. 태그에 대한 일반적인 정보는 [비용 할당 또는 속성 기반 액세스 제어(ABAC)를 위한 태그 지정](tagging.md) 섹션을 참조하세요.

**참고**  
벡터 버킷에서 태그를 사용하는 데 표준 S3 API 요청 속도 외에는 추가 요금이 부과되지 않습니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

## 벡터 버킷과 함께 태그를 사용하는 일반적인 방법
<a name="common-ways-tags-vector-buckets"></a>

다음을 위해 S3 벡터 버킷에 태그를 사용합니다.
+ **속성 기반 액세스 제어(ABAC)** - 액세스 권한의 규모를 조정하고 태그를 기반으로 S3 벡터 버킷에 대한 액세스 권한을 부여합니다. 자세한 내용은 [속성 기반 액세스 제어(ABAC)에 태그 사용](tagging.md#using-tags-for-abac) 섹션을 참조하세요.

### S3 벡터 버킷의 ABAC
<a name="abac-vector-buckets"></a>

Amazon S3 벡터 버킷은 태그를 사용한 속성 기반 액세스 제어(ABAC)를 지원합니다. AWS 조직, IAM 및 S3 벡터 버킷 정책에서 태그 기반 조건 키를 사용합니다. 엔터프라이즈의 경우 Amazon S3의 ABAC는 여러 AWS 계정에 대한 권한 부여를 지원합니다.

IAM 정책에서 다음 전역 조건 키를 사용하여 벡터 버킷의 태그를 기반으로 S3 벡터 버킷에 대한 액세스를 제어할 수 있습니다.

`aws:ResourceTag/key-name`  
이 키를 사용하여 정책에서 지정한 태그 키-값 쌍을 리소스에 연결된 키-값 쌍과 비교합니다. 예를 들어 리소스에 값이 `Dept`인 태그 키 `Marketing`와 연결된 경우에만 리소스에 대한 액세스가 필요할 수 있습니다. 자세한 내용은 [AWS 리소스에 대한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)를 참조하십시오.

`aws:RequestTag/key-name`  
이 키를 사용하여 요청에서 전달된 태그 키 값 페어를 정책에서 지정한 태그 페어와 비교합니다. 예를 들어, 요청에 태그 키 `Dept`가 포함되어 있으며 값이 `Accounting`인지 확인할 수 있습니다. 자세한 내용은 [AWS 요청 중 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)를 참조하세요. 이 조건 키를 사용하여 `TagResource` 및 `CreateVectorBucket` API 작업 중에 전달할 수 있는 태그 키-값 페어를 제한할 수 있습니다.

`aws:TagKeys`  
이 키를 사용하여 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 정책을 사용하여 태그를 통해 액세스를 제어할 때 `aws:TagKeys` 조건 키를 사용하여 어떤 태그 키가 허용되는지 정의하는 것이 좋습니다. 예시 정책과 자세한 내용은 [태그 키를 기반으로 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)를 참조하세요. 태그를 사용하여 S3 벡터 버킷을 생성할 수 있습니다. `CreateVectorBucket` API 작업 중에 태그 지정을 허용하려면 `s3vectors:TagResource` 및 `s3vectors:CreateVectorBucket` 작업을 모두 포함하는 정책을 생성해야 합니다. 그런 다음 `aws:TagKeys` 조건 키를 사용하여 `CreateVectorBucket` 요청 내 특정 태그 사용을 강제 적용할 수 있습니다.

`s3vectors:VectorBucketTag/tag-key`  
이 조건 키를 사용하여 태그를 사용하는 벡터 버킷의 특정 데이터에 권한을 부여합니다. 이 조건 키는 모든 S3 벡터 작업에 대해 벡터 버킷에 할당된 태그에 적용됩니다. 태그가 있는 인덱스를 생성하더라도 이 조건 키는 해당 인덱스가 포함된 벡터 버킷에 적용된 태그에 적용됩니다. 예를 들어 버킷에 값이 `Marketing`인 태그 키 `Dept`가 첨부된 경우에만 버킷에 대한 액세스가 필요할 수 있습니다. 인덱스에 액세스할 때 이 조건은 해당 인덱스가 포함된 벡터 버킷과 연결된 태그를 참조하는 반면, `aws:ResourceTag/tag-key`는 인덱스 자체의 태그를 참조합니다.

### 벡터 버킷에 대한 ABAC 정책 예제
<a name="example-abac-policies-vector-buckets"></a>

Amazon S3 벡터 버킷에 대한 다음 예시 ABAC 정책을 참조하세요.

#### 1.1 - 특정 태그가 있는 벡터 버킷을 생성하거나 수정하는 IAM 정책
<a name="iam-policy-create-modify-buckets-tags"></a>

이 IAM 정책에서 이 정책을 사용하는 사용자 또는 역할은 벡터 버킷 생성 요청의 태그 키 `project` 및 태그 값 `Trinity`로 벡터 버킷에 태그를 지정하는 경우에만 S3 벡터 버킷을 생성할 수 있습니다. `TagResource` 요청에 태그 키-값 페어 `project:Trinity`가 포함되어 있는 한 기존 S3 벡터 버킷에 태그를 추가하거나 수정할 수도 있습니다. 이 정책은 벡터 버킷 또는 해당 객체에 대한 읽기, 쓰기 또는 삭제 권한을 부여하지 않습니다.

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "CreateVectorBucketWithTags",
      "Effect": "Allow",
      "Action": [
        "s3vectors:CreateVectorBucket",
        "s3vectors:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

#### 1.2 - 태그를 사용하여 벡터 버킷에 대한 작업을 제한하는 벡터 버킷 정책
<a name="bucket-policy-restrict-operations-tags"></a>

이 벡터 버킷 정책에서 IAM 위탁자(사용자 및 역할)는 벡터 버킷의 `project` 태그의 값이 위탁자의 `project` 태그의 값과 일치하는 경우에만 벡터 버킷에 대한 `PutVectorBucketPolicy` 작업을 사용하여 작업을 수행할 수 있습니다.

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "AllowObjectOperations",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": "s3vectors:PutVectorBucketPolicy",
      "Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/amzn-s3-demo-vector-bucket",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

#### 1.3 - 태그 지정 거버넌스를 유지 관리하는 기존 리소스의 태그를 수정하는 IAM 정책
<a name="iam-policy-modify-tags-governance"></a>

이 IAM 정책에서 IAM 위탁자(사용자 또는 역할)는 벡터 버킷의 `project` 태그 값이 위탁자의 `project` 태그 값과 일치하는 경우에만 벡터 버킷의 태그를 수정할 수 있습니다. 이러한 벡터 버킷에는 `aws:TagKeys` 조건 키에 지정된 태그 네 개, 즉 `project`, `environment`, `owner` 및 `cost-center`만 허용됩니다. 이렇게 하면 태그 거버넌스를 강제 적용하고, 무단 태그 수정을 방지하고, 벡터 버킷 간에 태그 지정 스키마를 일관되게 유지할 수 있습니다.

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3vectors:TagResource"
      ],
      "Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

#### 1.4 - `s3vectors:VectorBucketTag` 조건 키 사용
<a name="using-vectorbuckettag-condition-key"></a>

이 IAM 정책에서 조건문은 벡터 버킷에 태그 키 `Environment` 및 태그 값 `Production`이 있는 경우에만 벡터 버킷 및 벡터 인덱스의 작업에 대한 액세스를 허용합니다.

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessToTaggedBucket",
      "Effect": "Allow",
      "Action": "*",
      "Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/*",
      "Condition": {
        "StringEquals": {
          "s3vectors:VectorBucketTag/Environment": "Production"
        }
      }
    }
  ]
}
```

# 벡터 버킷의 태그 관리
<a name="managing-tags-vector-buckets"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK를 사용하거나 S3 API [TagResource](https://docs.aws.amazon.com/), [UntagResource](https://docs.aws.amazon.com/) 및 [ListTagsForResource](https://docs.aws.amazon.com/)를 사용하여 S3 벡터 버킷에 대한 태그를 추가하거나 관리할 수 있습니다. 자세한 내용은 다음을 참조하세요.

**Topics**
+ [태그를 사용하여 벡터 버킷 생성](creating-vector-buckets-with-tags.md)
+ [벡터 버킷에 태그 추가](adding-tag-vector-bucket.md)
+ [벡터 버킷 태그 보기](viewing-vector-bucket-tags.md)
+ [벡터 버킷에서 태그 삭제](deleting-tag-vector-bucket.md)

# 태그를 사용하여 벡터 버킷 생성
<a name="creating-vector-buckets-with-tags"></a>

Amazon S3 벡터 버킷을 생성할 때 태그를 지정할 수 있습니다. 벡터 버킷에서 태그를 사용하는 데 표준 S3 API 요청 속도 외에는 추가 요금이 부과되지 않습니다. 자세한 내용은 [Amazon S3 요금](https://docs.aws.amazon.com/s3/pricing/)을 참조하세요. 벡터 버킷 태그 지정에 대한 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

## 권한
<a name="bucket-tags-permissions"></a>

태그가 있는 벡터 버킷을 생성하려면 다음 권한이 있어야 합니다.
+ `s3vectors:CreateVectorBucket`
+ `s3vectors:TagResource`

## 오류 해결
<a name="bucket-tags-troubleshooting"></a>

태그가 있는 벡터 버킷을 생성하려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 버킷을 만들고 여기에 태그를 추가하는 데 필요한 [권한](#bucket-tags-permissions)이 있는지 확인합니다.
+ IAM 사용자 정책에서 속성 기반 액세스 제어(ABAC) 조건을 확인합니다. 벡터 버킷에 특정 태그 키 및 값으로만 레이블을 지정해야 할 수 있습니다. 자세한 내용은 [속성 기반 액세스 제어(ABAC)에 태그 사용](tagging.md#using-tags-for-abac) 섹션을 참조하세요.

## 단계
<a name="bucket-tags-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용하여 태그가 적용된 벡터 버킷을 생성할 수 있습니다.

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

**Amazon S3 콘솔을 사용하여 태그가 있는 벡터 버킷을 만드는 방법:**

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

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

1. 새 벡터 버킷을 만들려면 **벡터 버킷 생성**을 선택합니다.

1. 평소와 같이 벡터 버킷을 생성합니다. [벡터 버킷 만들기](s3-vectors-buckets-create.md) 섹션을 참조하세요.

1. **벡터 버킷 생성** 페이지에서 **태그**는 새 벡터 버킷을 생성할 때의 옵션입니다.

1. 벡터 버킷의 이름을 입력합니다.

1. **새 태그 추가**를 선택하여 태그 편집기를 열고 태그 키-값 페어를 입력합니다. 태그 키는 필수지만 값은 선택 사항입니다.

1. 다른 태그를 추가하려면 **새 태그 추가**를 다시 선택합니다. 최대 50개의 태그 키-값 페어를 입력할 수 있습니다.

1. 새 벡터 버킷에 대한 옵션 지정을 완료한 후 **벡터 버킷 생성**을 선택합니다.

### REST API 사용
<a name="bucket-tags-api"></a>

태그가 있는 벡터 버킷을 만들기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon S3 Vectors API 참조*의 다음 섹션을 참조하세요.

[CreateVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateVectorBucket.html)

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

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예시는 AWS CLI를 사용하여 태그가 있는 벡터 버킷을 만드는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

벡터 버킷을 생성할 때는 구성 세부 정보를 제공하고 다음과 같은 명명 규칙을 사용해야 합니다. `example-vector-bucket` 

```
aws s3vector create-vector-bucket --vector-bucket-name acc-bucket \
  --tags Department=Accounting,Stage=Prod
```

# 벡터 버킷에 태그 추가
<a name="adding-tag-vector-bucket"></a>

Amazon S3 벡터 버킷에 태그를 추가하고 이러한 태그를 수정할 수 있습니다. 벡터 버킷에서 태그를 사용하는 데 표준 S3 API 요청 속도 외에는 추가 요금이 부과되지 않습니다. 자세한 내용은 [Amazon S3 요금](https://docs.aws.amazon.com/s3/pricing/)을 참조하세요. 벡터 버킷 태그 지정에 대한 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

## 권한
<a name="add-bucket-tag-permissions"></a>

벡터 버킷에 태그를 추가하려면 다음 권한이 있어야 합니다.
+ `s3vectors:TagResource`

## 오류 해결
<a name="add-bucket-tag-troubleshooting"></a>

벡터 버킷에 태그를 추가하려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 버킷에 태그를 추가하는 데 필요한 [권한](#add-bucket-tag-permissions)이 있는지 확인합니다.
+ AWS 예약된 접두사 `aws:`로 시작하는 태그 키를 추가하려고 했다면 태그 키를 변경하고 다시 시도합니다.

## 단계
<a name="add-bucket-tag-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용하여 벡터 버킷에 태그를 추가할 수 있습니다.

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

**Amazon S3 콘솔을 사용하여 벡터 버킷에 태그를 추가하는 방법:**

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

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

1. 벡터 버킷 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **태그** 섹션으로 스크롤하고 **새 태그 추가**를 선택합니다.

1. **태그 추가** 페이지가 열립니다. 최대 50개의 태그 키-값 페어를 입력할 수 있습니다.

1. 키 이름이 기존 태그와 동일한 새 태그를 추가하는 경우 새 태그의 값이 기존 태그의 값을 덮어씁니다.

1. 이 페이지에서 기존 태그의 값을 편집할 수도 있습니다.

1. 태그를 추가한 후 **변경 사항 저장**을 선택합니다.

### REST API 사용
<a name="add-bucket-tag-api"></a>

벡터 버킷에 태그를 추가하기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon S3 Vectors API 참조*의 다음 섹션을 참조하세요.

[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_TagResource.html)

### AWS CLI 사용
<a name="add-bucket-tag-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예제는 AWS CLI를 사용하여 벡터 버킷에 태그를 추가하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors tag-resource \
--resource-arn arn:aws:s3vectors:us-east-1:012345678900:bucket/acc-bucket \
--tags Stage=Prod,CostCenter=Marketing
```

# 벡터 버킷 태그 보기
<a name="viewing-vector-bucket-tags"></a>

Amazon S3 벡터 버킷에 적용된 태그를 보거나 나열할 수 있습니다. 벡터 버킷 태그 지정에 대한 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

## 권한
<a name="view-bucket-tag-permissions"></a>

벡터 버킷에 적용된 태그를 보려면 다음 권한이 있어야 합니다.
+ `s3vectors:ListTagsForResource`

## 오류 해결
<a name="view-bucket-tag-troubleshooting"></a>

벡터 버킷의 태그를 나열하거나 보려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 버킷의 태그를 보거나 나열하는 데 필요한 [권한](#view-bucket-tag-permissions)이 있는지 확인합니다.

## 단계
<a name="view-bucket-tag-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API 및 AWS SDK를 사용하여 벡터 버킷에 적용된 태그를 볼 수 있습니다.

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

**Amazon S3 콘솔을 사용하여 벡터 버킷에 적용된 태그를 보는 방법**

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

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

1. 벡터 버킷 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **태그** 섹션으로 스크롤하여 벡터 버킷에 적용된 모든 태그를 봅니다.

1. **태그** 섹션에는 기본적으로 사용자 정의 태그가 표시됩니다. AWS가 생성한 태그 탭을 선택하여 AWS 서비스가 벡터 버킷에 적용한 태그를 볼 수 있습니다.

### REST API 사용
<a name="view-bucket-tag-api"></a>

벡터 버킷에 적용된 태그를 보기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 Amazon Simple Vectors API 참조의 다음 섹션을 참조하세요.

[ListTagsforResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListTagsForResource.html)

### AWS CLI 사용
<a name="view-bucket-tag-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예시에서는 벡터 버킷에 적용된 태그를 보는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors list-tags-for-resource \ 
--resource-arn arn:aws:s3vectors:us-east-1:012345678900:bucket/acc-bucket
```

# 벡터 버킷에서 태그 삭제
<a name="deleting-tag-vector-bucket"></a>

S3 벡터 버킷에서 태그를 제거할 수 있습니다. AWS 태그는 리소스, 이 경우 Amazon S3 벡터 버킷에 대한 메타데이터를 포함하는 키-값 페어입니다. 벡터 버킷 태그 지정에 대한 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

**참고**  
태그를 삭제하고 나중에 비용 추적 또는 액세스 제어에 사용 중이었다는 것을 알게 되면 벡터 버킷에 태그를 다시 추가할 수 있습니다.

## 권한
<a name="delete-bucket-tag-permissions"></a>

벡터 버킷에서 태그를 삭제하려면 다음 권한이 있어야 합니다.
+ `s3vectors:UntagResource`

## 오류 해결
<a name="delete-bucket-tag-troubleshooting"></a>

벡터 버킷에서 태그를 삭제하려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 버킷에서 태그를 삭제하는 데 필요한 [권한](#delete-bucket-tag-permissions)이 있는지 확인합니다.

## 단계
<a name="delete-bucket-tag-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API 및 AWS SDK를 사용하여 벡터 버킷에서 태그를 삭제할 수 있습니다.

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

**Amazon S3 콘솔을 사용하여 벡터 버킷에서 태그를 삭제하는 방법:**

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

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

1. 벡터 버킷 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **태그** 섹션으로 스크롤하여 삭제하려는 태그 옆의 확인란을 선택합니다.

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

1. **사용자 정의 태그 삭제** 팝업이 나타나고 선택한 태그 삭제를 확인하라는 메시지가 표시됩니다.

1. [**삭제**]를 선택하여 확인합니다.

### REST API 사용
<a name="delete-bucket-tag-api"></a>

벡터 버킷에서 태그를 삭제하기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon S3 Vectors API 참조*의 다음 섹션을 참조하세요.

[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_UntagResource.html)

### AWS CLI 사용
<a name="delete-bucket-tag-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예제는 AWS CLI를 사용하여 벡터 버킷에서 태그를 삭제하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors untag-resource \
--resource-arn arn:aws:s3vectors:us-east-1:012345678900:bucket/acc-bucket \
--tag-keys CostCenter Department
```

# 벡터 인덱스
<a name="s3-vectors-indexes"></a>

**참고**  
벡터 인덱스 구성 파라미터를 신중하게 선택합니다. 벡터 인덱스를 만든 후에는 벡터 인덱스 이름, 차원, 거리 지표 또는 필터링할 수 없는 메타데이터 키를 업데이트할 수 없습니다. 이러한 값을 변경하려면 새 벡터 인덱스를 만들어야 합니다.

벡터 인덱스는 효율적인 유사성 검색 작업을 위해 벡터 데이터를 저장하고 구성하는 벡터 버킷 내의 리소스입니다. 벡터 인덱스를 만들 때 거리 지표(`Cosine` 또는 `Euclidean`), 벡터에 있어야 하는 차원 수, 유사성 쿼리 중에 필터링에서 제외하려는 메타데이터 필드 목록(선택 사항)을 지정합니다.

버킷당 벡터 인덱스 제한, 인덱스당 벡터 제한 및 벡터당 차원 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

벡터마다 고유한 Amazon 리소스 이름(ARN)이 있습니다. 벡터 인덱스의 ARN은 다음 형식을 따릅니다.

```
arn:aws:s3vectors:region:account-id:bucket/bucket-name/index/index-name
```

## 벡터 인덱스 이름 지정 요구 사항
<a name="s3-vectors-indexes-naming"></a>
+ 벡터 인덱스 이름은 벡터 버킷 내에서 고유해야 합니다.
+ 벡터 인덱스 이름은 3\$163자 이내여야 합니다.
+ 유효한 문자는 소문자(a\$1z), 숫자(0\$19), 하이픈(-), 점(.)입니다.
+ 벡터 인덱스 이름은 글자 또는 숫자로 시작하고 끝나야 합니다.

## 차원 요구 사항
<a name="s3-vectors-indexes-dimensions"></a>

차원은 벡터의 값 수입니다. 인덱스에 추가된 모든 벡터는 정확히 이 수의 값을 가져야 합니다.
+ 차원은 1에서 4,096 사이의 정수여야 합니다.
+ 차원이 클수록 스토리지 공간이 더 많이 필요합니다.

## 거리 지표 옵션
<a name="s3-vectors-indexes-distance-metrics"></a>

거리 지표는 벡터 간의 유사성을 계산하는 방법을 지정합니다. 벡터 임베딩을 만들 때 더 정확한 결과를 얻으려면 임베딩 모델의 권장 거리 지표를 선택합니다.
+ **코사인** - 벡터 간 각도의 코사인을 측정합니다. 정규화된 벡터 및 방향이 크기보다 중요한 경우에 가장 적합합니다.
+ **유클리드** - 벡터 간의 직선 거리를 측정합니다. 방향과 크기가 모두 중요한 경우에 가장 적합합니다.

## 필터링 불가능한 메타데이터 키
<a name="s3-vectors-indexes-metadata"></a>

메타데이터 키를 사용하면 저장 및 검색 중에 벡터에 추가 정보를 키-값 페어로 연결할 수 있습니다. 기본적으로 모든 메타데이터는 필터링이 가능하므로 이를 사용하여 쿼리 결과를 필터링할 수 있습니다. 그러나 필터링에 사용하지 않고 벡터와 함께 정보를 저장하려는 경우 특정 메타데이터 키를 필터링할 수 없는 것으로 지정할 수 있습니다.

기본 메타데이터 키와 달리 이러한 키는 쿼리 필터로 사용할 수 없습니다. 필터링 불가능한 메타데이터 키는 검색할 수 있지만 검색, 쿼리 또는 필터링할 수는 없습니다. 인덱스를 찾은 후에만 액세스할 수 있습니다.

필터링 불가능한 메타데이터 키를 사용하면 검색 결과로 검색하려고 하지만 필터링할 필요는 없는 추가 컨텍스트로 벡터를 보강할 수 있습니다. 필터링 불가능한 메타데이터 키의 일반적인 예는 텍스트를 벡터에 임베딩하고 원래 텍스트 자체를 필터링 불가능한 메타데이터로 포함하려는 경우입니다. 이렇게 하면 필터링 가능한 메타데이터 크기 제한을 늘리지 않고도 벡터 검색 결과와 함께 소스 텍스트를 반환할 수 있습니다. 다른 예로는 단지 참조용으로 생성 타임스탬프, 소스 URL 또는 설명 정보를 저장하는 것이 있습니다. 벡터를 검색할 때 필터링 불가능한 메타데이터 키에 액세스할 수 있지만 기본 메타데이터 키와 달리 이러한 키는 쿼리 필터로 사용할 수 없습니다.

필터링 불가능한 메타데이터 키에 대한 요구 사항은 다음과 같습니다.
+ 필터링 불가능한 메타데이터 키는 벡터 인덱스 내에서 고유해야 합니다.
+ 필터링 불가능한 메타데이터 키는 1\$163자여야 합니다.
+ 벡터 인덱스가 만들어진 후에는 필터링 불가능한 메타데이터 키를 수정할 수 없습니다.
+ S3 Vectors는 인덱스당 필터링 불가능한 메타데이터 키를 10개까지 지원합니다.

필터링 불가능한 메타데이터 키에 대한 자세한 내용은 [필터링 불가능한 메타데이터 키](s3-vectors-metadata-filtering.md#s3-vectors-metadata-filtering-non-filterable) 섹션을 참조하세요.

**Topics**
+ [벡터 인덱스 이름 지정 요구 사항](#s3-vectors-indexes-naming)
+ [차원 요구 사항](#s3-vectors-indexes-dimensions)
+ [거리 지표 옵션](#s3-vectors-indexes-distance-metrics)
+ [필터링 불가능한 메타데이터 키](#s3-vectors-indexes-metadata)
+ [벡터 버킷에서 벡터 인덱스 만들기](s3-vectors-create-index.md)
+ [벡터 인덱스 나열](s3-vectors-index-list.md)
+ [벡터 인덱스 삭제](s3-vectors-index-delete.md)
+ [S3 벡터 인덱스에서 태그 사용](vector-index-tagging.md)

# 벡터 버킷에서 벡터 인덱스 만들기
<a name="s3-vectors-create-index"></a>

**참고**  
벡터 인덱스 구성 파라미터를 신중하게 선택합니다. 벡터 인덱스를 만든 후에는 벡터 인덱스 이름, 차원, 거리 지표 또는 필터링할 수 없는 메타데이터 키를 업데이트할 수 없습니다. 이러한 값을 변경하려면 새 벡터 인덱스를 만들어야 합니다.

벡터 인덱스는 효율적인 유사성 검색을 위해 벡터 데이터를 저장하고 구성하는 벡터 버킷 내의 리소스입니다. 벡터 인덱스를 만들 때 차원, 유사성 계산에 사용되는 거리 지표, 필터링 불가능한 메타데이터 키(선택 사항)와 같이 해당 인덱스의 모든 벡터가 공유해야 하는 특성을 정의합니다. 인덱스 생성 시 벡터 인덱스에 대한 전용 암호화 설정 및 태그를 선택적으로 구성할 수도 있습니다. 벡터 인덱스 이름 지정 요구 사항, 차원 요구 사항, 거리 지표 옵션 및 필터링 불가능한 메타데이터 키에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요. 벡터 인덱스의 암호화 구성 설정에 대한 자세한 내용은 [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md) 섹션을 참조하세요. 태그 설정에 대한 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

 벡터 인덱스는 기존 벡터 버킷 내에서 만들어야 하며, 만든 후 수정할 수 없는 특정 구성 파라미터가 필요합니다.

## S3 콘솔 사용
<a name="s3-vectors-create-index-console"></a>

**벡터 인덱스 생성**

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

1. 벡터 버킷 목록에서 벡터 인덱스를 만들려는 버킷의 이름을 선택합니다.

1. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

1. **벡터 인덱스 이름**에 벡터 인덱스의 이름을 입력합니다.

   벡터 인덱스 이름은 벡터 버킷 내에서 고유해야 합니다. 인덱스 이름은 3\$163자 이내로 작성해야 합니다. 유효한 문자는 소문자(a\$1z), 숫자(0\$19), 하이픈(-), 점(.)입니다. 벡터 인덱스 이름 지정 요구 사항에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

1. **차원**에 각 벡터의 값 수를 입력합니다.
**참고**  
**차원** 값은 각 벡터에 포함될 숫자 값의 수를 결정합니다.
이 인덱스에 추가된 모든 벡터에는 정확히 이 수의 값이 있어야 합니다.
차원은 1에서 4,096 사이여야 합니다.
차원이 클수록 스토리지 공간이 더 많이 필요합니다.
임베딩 모델의 출력 차원에 따라를 선택합니다.

   차원 요구 사항에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

1. **거리 지표**에서 다음 옵션 중 하나를 선택합니다.
   + **코사인** - 벡터 간 각도의 코사인을 측정합니다. 정규화된 벡터 및 방향이 크기보다 중요한 경우에 가장 적합합니다.
   + **유클리드** - 벡터 간의 직선 거리를 측정합니다. 방향과 크기가 모두 중요한 경우에 가장 적합합니다.

1. (선택 사항) **필터링 불가능한 메타데이터** 아래에서 저장되지만 필터링에 사용되지 않는 메타데이터 키를 구성합니다.

   필터링 불가능한 메타데이터 키 추가:

   1. **키 추가**를 선택합니다.

   1. 키 이름(1\$163자, 이 벡터 인덱스 내에서 고유)을 입력합니다.

   1. 반복하여 추가 키(최대 10개의 키)를 추가합니다.
**참고**  
벡터 인덱스를 만든 후 벡터 데이터를 삽입할 때 필터링 가능한 메타데이터를 각 벡터에 키-값 페어로 연결할 수 있습니다. 기본적으로 벡터에 연결된 모든 메타데이터 키는 필터링이 가능하며, 유사성 쿼리에서 필터로 사용할 수 있습니다. 벡터 인덱스 만들기 중에 필터링 불가능한 것으로 지정된 메타데이터 키만 필터링에서 제외됩니다. 총 메타데이터 제약 조건과 필터링 가능한 메타데이터 제약 조건을 포함하여 벡터당 메타데이터 크기 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

1. 구성을 신중하게 검토합니다.
**참고**  
이러한 설정은 만든 후에 변경할 수 없습니다.

1. **암호화**에서 **암호화 유형 지정**을 선택합니다. **암호화에 버킷 설정을 사용**하거나 벡터 인덱스에 대한 암호화 설정을 재정의할 수 있습니다. 버킷 수준 설정을 재정의하는 경우, 벡터 인덱스의 암호화 유형을 **AWS 키 관리 서비스를 사용한 서버 측 암호화(SSE-KMS)** 또는 **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)**로 지정할 수 있습니다. 벡터 인덱스의 암호화 구성 설정에 대한 자세한 내용은 [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md) 섹션을 참조하세요.

1. **태그(선택 사항)**에서 태그를 키-값 페어로 추가하고 AWS Billing and Cost Management를 사용하여 벡터 인덱스 비용을 추적하고 구성할 수 있습니다. **키**와 **값**을 입력합니다. 태그를 더 추가하려면 **태그 추가(Add Tag)**를 선택합니다. 벡터 인덱스에 최대 50개의 태그를 입력할 수 있습니다. 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

1. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

## AWS CLI 사용
<a name="s3-vectors-create-index-cli"></a>

벡터 버킷에서 벡터 인덱스를 만들려면 다음 예제 명령을 사용하고 `user input placeholders`를 자체 정보로 바꿉니다.

**예제 1: 필터링 불가능한 메타데이터 키를 사용하여 벡터 인덱스 만들기**

```
aws s3vectors create-index \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --data-type "float32" \
  --dimension 1 \
  --distance-metric "cosine" \
  --metadata-configuration '{"nonFilterableMetadataKeys":["nonFilterableKey1"]}'
```

**예제 2: 필터링 불가능한 메타데이터 키 없이 벡터 인덱스 만들기**

```
aws s3vectors create-index \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx2" \
  --data-type "float32" \
  --dimension 4096 \
  --distance-metric "euclidean"
```

또한 모든 메타데이터(필터링 가능한 메타데이터와 필터링 불가능한 메타데이터 모두)는 `GetVectors`, `ListVectors` 또는 `QueryVectors` API 작업을 사용하여 동일한 방식으로 검색됩니다. 다음 CLI 명령은 메타데이터(필터링 불가능한 메타데이터 포함)를 사용하여 벡터를 검색하는 방법을 보여줍니다.

요청 예제:

```
aws s3vectors get-vectors \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --keys '["vec1", "vec3"]' \
  --return-data \
  --return-metadata \
```

응답 예제: 

```
{
    "vectors": [
        {
            "key": "vec1",
            "data": {
                "float32": [
                    0.10000000149011612,
                    0.20000000298023224,
                    0.30000001192092896,
                    0.4000000059604645,
                    0.5
                ]
            },
            "metadata": {
                "category": "test",
                "text": "First vector"
            }
        },
        {
            "key": "vec3",
            "data": {
                "float32": [
                    0.6000000238418579,
                    0.699999988079071,
                    0.800000011920929,
                    0.8999999761581421,
                    1.0
                ]
            },
            "metadata": {
                "text": "Third vector",
                "category": "test"
            }
        }
    ]
}
```

응답에는 인덱스 생성 중에 필터링 가능 또는 필터링 불가능으로 지정되었는지 여부에 관계없이 벡터와 연결된 모든 메타데이터가 포함됩니다.

## AWS SDK 사용
<a name="s3-vectors-create-index-sdk"></a>

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Create a vector index "movies" in the vector bucket "media-embeddings" without non-filterable metadata keys
s3vectors.create_index(
    vectorBucketName="media-embeddings",
    indexName="movies",
    dimension=3,
    distanceMetric="cosine",
    dataType = "float32"
)


#Create a vector index "movies" in the vector bucket "media-embeddings" with non-filterable metadata keys
s3vectors.create_index(
    vectorBucketName="media-embeddings",
    indexName="movies",
    dimension=3,
    distanceMetric="cosine",
    dataType = "float32",
    metadataConfiguration= {"nonFilterableMetadataKeys": ["nonFilterableMetadataKey1"]}
)
```

------

# 벡터 인덱스 나열
<a name="s3-vectors-index-list"></a>

벡터 버킷 내의 모든 벡터 인덱스를 볼 수 있습니다. 나열 작업은 버킷에 인덱스가 많을 때 특정 인덱스를 찾는 데 도움이 되는 접두사 기반 필터링을 지원합니다. `ListIndexes`, 접두사 제한 및 응답 제한에 대한 자세한 내용은 Amazon Simple Storage Service API 참조의 [ListIndexes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListIndexes.html)를 참조하세요.

## 접두사 검색 기능
<a name="s3-vectors-index-prefix-search-capability"></a>

접두사 검색을 사용하면 특정 접두사로 시작하는 인덱스를 나열할 수 있으므로 관련 벡터 인덱스를 더 쉽게 구성하고 찾을 수 있습니다. 이는 관련 인덱스를 그룹화하는 이름 지정 규칙을 사용할 때 특히 유용합니다.
+ **데이터 유형별:** `text-embeddings-`, `image-features-`, `audio-vectors-` 
+ **모델별:** `model1-embeddings-`, `model2-vectors-`, `custom-model-` 
+ **사용 사례별:** `search-index-`, `recommendation-`, `similarity-` 
+ **환경별:** `prod-vectors-`, `staging-vectors-`, `dev-vectors-` 

### S3 콘솔 사용
<a name="s3-vectors-index-list-console"></a>

**벡터 인덱스를 나열하려면**

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

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

1. 벡터 버킷 목록에서 확인하려는 객체가 포함된 버킷 이름을 선택합니다.

1. 콘솔에는 다음을 포함하여 버킷에 있는 모든 벡터 인덱스의 포괄적인 목록이 표시됩니다.
   + **이름** - 각 인덱스의 이름입니다.
   + **생성 날짜** - 인덱스가 만들어진 시간입니다.
   + **Amazon 리소스 이름(ARN)** - 각 인덱스에 대한 전체 ARN입니다.

**목록 필터링**

1. 인덱스 목록 위의 검색 상자에 인덱스 이름 또는 접두사를 입력합니다. 접두사를 사용하여 관련 인덱스 그룹을 찾습니다.

1. 입력하면서 목록이 실시간으로 업데이트됩니다.

### AWS CLI 사용
<a name="s3-vectors-list-cli"></a>

다음 예제 명령을 사용하려면 *사용자 입력 자리 표시자*를 실제 정보로 바꿉니다.

**벡터 버킷에서 특정 접두사가 있는 인덱스 나열**

요청 예제:

```
aws s3vectors list-indexes \
  --vector-bucket-name "amzn-s3-demo-bucket" \
  --prefix "idx" \
  --max-results 1
```

응답 예제:

```
{
    "nextToken": "lObb29ZkzxMGtBXs97Rkbs26xdtKemu4brsnq2jX8DCocADkILv5cRphemXS3PXXFnQBihQBmESgEeKaGA",
    "indexes": [
        {
            "vectorBucketName": "amzn-s3-demo-bucket",
            "indexName": "idx",
            "indexArn": "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/index/idx",
            "creationTime": "2025-06-12T15:50:23+00:00"
        }
    ]
}
```

**페이지 매김이 있는 인덱스 나열**

요청 예제:

```
aws s3vectors list-indexes \
  --vector-bucket-name "amzn-s3-demo-bucket" \
  --prefix "idx" \
  --next-token "lObb29ZkzxMGtBXs97Rkbs26xdtKemu4brsnq2jX8DCocADkILv5cRphemXS3PXXFnQBihQBmESgEeKaGA"
```

응답 예제: 

```
{
    "indexes": [
        {
            "vectorBucketName": "amzn-s3-demo-bucket",
            "indexName": "idx2",
            "indexArn": "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/index/idx2",
            "creationTime": "2025-06-12T15:45:37+00:00"
        }
    ]
}
```

### AWS SDK 사용
<a name="s3-vectors-list-sdk"></a>

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#List vector indexes in your vector bucket
response = s3vectors.list_indexes(vectorBucketName="media-embeddings")
indexes = response["indexes"]
print(indexes)
```

------

# 벡터 인덱스 삭제
<a name="s3-vectors-index-delete"></a>

더 이상 필요하지 않은 프록시는 삭제할 수 있습니다. 이 작업은 인덱스와 인덱스 내에 저장된 모든 벡터를 영구적으로 제거합니다.

**중요**  
벡터 인덱스를 삭제할 때 다음 사항을 알아야 합니다.  
인덱스에 벡터가 포함된 경우에도 벡터 인덱스를 삭제할 수 있습니다.
인덱스에 저장된 모든 벡터가 영구적으로 삭제됩니다.
해당 벡터와 연결된 모든 메타데이터가 영구적으로 손실됩니다.
작업은 실행 취소하거나 되돌릴 수 없습니다.
인덱스에서 진행 중인 모든 작업은 즉시 실패합니다.
인덱스를 쿼리하는 애플리케이션에 오류가 발생합니다.
인덱스 이름을 버킷 내에서 재사용할 수 있게 됩니다.

## AWS CLI 사용
<a name="cli-delete-vector-index"></a>

벡터 인덱스를 삭제하기 전에 벡터 인덱스를 확인합니다. 인덱스 세부 정보를 확인하는 방법에 대한 자세한 내용은 *Amazon S3 API 참조*의 [GetIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetIndex.html)를 참조하세요. 인덱스 내에서 벡터를 나열하여 삭제할 내용을 확인하는 방법에 대한 자세한 내용은 [벡터 인덱스 나열](s3-vectors-index-list.md) 섹션을 참조하세요.

벡터 인덱스를 삭제하려면 다음 예제 명령을 사용합니다. *user input placeholders*를 사용자의 정보로 대체합니다.

```
aws s3vectors delete-index --vector-bucket-name "amzn-s3-demo-vector-bucket" \
          --index-name "idx2"
```

인덱스 삭제 여부를 확인하는 방법에 대한 자세한 내용은 [벡터 인덱스 나열](s3-vectors-index-list.md) 섹션을 참조하세요.

## AWS SDK 사용
<a name="sdk-delete-vector-index"></a>

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Delete a vector index
response = s3vectors.delete_index(
    vectorBucketName="media-embeddings",
    indexName="movies")
```

------

# S3 벡터 인덱스에서 태그 사용
<a name="vector-index-tagging"></a>

AWS 태그는 리소스, 이 경우 Amazon S3 벡터 인덱스를 포함하는 키-값 페어입니다. S3 벡터 인덱스를 생성할 때 태그를 지정하거나 기존 벡터 인덱스에서 태그를 관리할 수 있습니다. 태그에 대한 일반적인 정보는 [비용 할당 또는 속성 기반 액세스 제어(ABAC)를 위한 태그 지정](tagging.md) 섹션을 참조하세요.

**참고**  
벡터 인덱스에서 태그를 사용하는 데는 표준 S3 API 요청 요금 외에는 추가 요금이 부과되지 않습니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

## 벡터 인덱스와 함께 태그를 사용하는 일반적인 방법
<a name="common-ways-tags-vector-indexes"></a>

다음의 경우 S3 벡터 인덱스에 태그를 사용합니다.
+ **비용 할당** - AWS Billing and Cost Management에서 벡터 인덱스 태그별로 스토리지 비용을 추적합니다. 자세한 내용은 [비용 할당에 태그 사용](tagging.md#using-tags-for-cost-allocation) 섹션을 참조하세요.
+ **속성 기반 액세스 제어(ABAC)** - 액세스 권한의 규모를 조정하고 태그를 기반으로 S3 벡터 인덱스에 대한 액세스 권한을 부여합니다. 자세한 내용은 [속성 기반 액세스 제어(ABAC)에 태그 사용](tagging.md#using-tags-for-abac) 섹션을 참조하세요.

**참고**  
비용 할당과 액세스 제어에 동일한 태그를 사용할 수 있습니다.

### S3 벡터 인덱스에 대한 ABAC
<a name="abac-vector-indexes"></a>

Amazon S3 벡터 인덱스는 태그를 사용한 속성 기반 액세스 제어(ABAC)를 지원합니다. AWS 조직, IAM 및 S3 벡터 인덱스 정책에서 태그 기반 조건 키를 사용합니다. 엔터프라이즈의 경우 Amazon S3의 ABAC는 여러 AWS 계정에 대한 권한 부여를 지원합니다.

IAM 정책에서 다음 전역 조건 키를 사용하여 벡터 인덱스의 태그를 기반으로 S3 벡터 인덱스에 대한 액세스를 제어할 수 있습니다.

`aws:ResourceTag/key-name`  
이 키를 사용하여 정책에서 지정한 태그 키-값 쌍을 리소스에 연결된 키-값 쌍과 비교합니다. 예를 들어 리소스에 값이 `Dept`인 태그 키 `Marketing`와 연결된 경우에만 리소스에 대한 액세스가 필요할 수 있습니다. 자세한 내용은 [AWS 리소스에 대한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)를 참조하십시오.

`aws:RequestTag/key-name`  
이 키를 사용하여 요청에서 전달된 태그 키 값 페어를 정책에서 지정한 태그 페어와 비교합니다. 예를 들어, 요청에 태그 키 `Dept`가 포함되어 있으며 값이 `Accounting`인지 확인할 수 있습니다. 자세한 내용은 [AWS 요청 중 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)를 참조하세요. 이 조건 키를 사용하여 `TagResource` 및 `CreateIndex` API 작업 중에 전달할 수 있는 태그 키-값 페어를 제한할 수 있습니다.

`aws:TagKeys`  
이 키를 사용하여 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 정책을 사용하여 태그를 통해 액세스를 제어할 때 `aws:TagKeys` 조건 키를 사용하여 어떤 태그 키가 허용되는지 정의하는 것이 좋습니다. 예시 정책과 자세한 내용은 [태그 키를 기반으로 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)를 참조하세요. 태그를 사용하여 S3 벡터 인덱스를 생성할 수 있습니다. `CreateVectorBucket` API 작업 중에 태그 지정을 허용하려면 `s3vectors:TagResource` 및 `s3vectors:CreateVectorBucket` 작업을 모두 포함하는 정책을 생성해야 합니다. 그런 다음 `aws:TagKeys` 조건 키를 사용하여 `CreateVectorBucket` 요청 내 특정 태그 사용을 강제 적용할 수 있습니다.

### 벡터 인덱스에 대한 ABAC 정책 예제
<a name="example-abac-policies-vector-indexes"></a>

Amazon S3 벡터 인덱스에 대한 다음 예제 ABAC 정책을 확인하세요.

#### 1.1 - 특정 태그가 있는 벡터 인덱스를 만들거나 수정하는 IAM 정책
<a name="iam-policy-create-modify-indexes-tags"></a>

이 IAM 정책에서 이 정책을 사용하는 사용자 또는 역할은 벡터 인덱스 생성 요청의 태그 키 `project` 및 태그 값 `Trinity`로 벡터 인덱스에 태그를 지정하는 경우에만 S3 벡터 인덱스를 생성할 수 있습니다. `TagResource` 요청에 태그 키-값 페어 `project:Trinity`가 포함되어 있는 한 기존 S3 벡터 인덱스에 태그를 추가하거나 수정할 수도 있습니다. 이 정책은 벡터 인덱스 또는 해당 객체에 대한 읽기, 쓰기 또는 삭제 권한을 부여하지 않습니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateVectorIndexWithTags",
      "Effect": "Allow",
      "Action": [
        "s3vectors:CreateIndex",
        "s3vectors:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

#### 1.2 - 태그 지정 거버넌스를 유지 관리하는 기존 리소스의 태그를 수정하는 IAM 정책
<a name="iam-policy-modify-tags-governance"></a>

이 IAM 정책에서 IAM 위탁자(사용자 또는 역할)는 벡터 인덱스의 `project` 태그 값이 위탁자의 `project` 태그 값과 일치하는 경우에만 벡터 인덱스의 태그를 수정할 수 있습니다. 이러한 벡터 인덱스에는 `aws:TagKeys` 조건 키에 지정된 태그 네 개, 즉 `project`, `environment`, `owner` 및 `cost-center`만 허용됩니다. 이렇게 하면 태그 거버넌스를 강제 적용하고, 무단 태그 수정을 방지하고, 벡터 인덱스 간에 태그 지정 스키마를 일관되게 유지할 수 있습니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceTaggingRulesOnModification",
      "Effect": "Allow",
      "Action": [
        "s3vectors:TagResource"
      ],
      "Resource": "arn:aws::s3vectors:us-west-2:111122223333:bucket/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

# 벡터 인덱스에 대한 태그 관리
<a name="managing-tags-vector-indexes"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK를 사용하거나 S3 API [TagResource](https://docs.aws.amazon.com/), [UntagResource](https://docs.aws.amazon.com/) 및 [ListTagsForResource](https://docs.aws.amazon.com/)를 사용하여 S3 벡터 인덱스에 대한 태그를 추가하거나 관리할 수 있습니다. 자세한 내용은 다음을 참조하세요.

**Topics**
+ [태그를 사용하여 벡터 인덱스 생성](creating-vector-indexes-with-tags.md)
+ [벡터 인덱스에 태그 추가](adding-tag-vector-index.md)
+ [벡터 인덱스 태그 보기](viewing-vector-index-tags.md)
+ [벡터 인덱스에서 태그 삭제](deleting-tag-vector-index.md)

# 태그를 사용하여 벡터 인덱스 생성
<a name="creating-vector-indexes-with-tags"></a>

Amazon S3 벡터 인덱스를 생성할 때 태그를 지정할 수 있습니다. 벡터 인덱스에서 태그를 사용하는 데는 표준 S3 API 요청 요금 외에는 추가 요금이 부과되지 않습니다. 자세한 내용은 [Amazon S3 요금](https://docs.aws.amazon.com/s3/pricing/)을 참조하세요. 벡터 인덱스 태그 지정에 대한 자세한 내용은 [S3 벡터 인덱스에서 태그 사용](vector-index-tagging.md) 섹션을 참조하세요.

## 권한
<a name="index-tags-permissions"></a>

태그가 있는 벡터 인덱스를 만들려면 다음 권한이 있어야 합니다.
+ `s3vectors:CreateIndex`
+ `s3vectors:TagResource`

## 오류 해결
<a name="index-tags-troubleshooting"></a>

태그가 있는 벡터 인덱스를 만들려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 인덱스를 만들고 여기에 태그를 추가하는 데 필요한 [권한](#index-tags-permissions)이 있는지 확인합니다.
+ IAM 사용자 정책에서 속성 기반 액세스 제어(ABAC) 조건을 확인합니다. 벡터 인덱스에 특정 태그 키 및 값으로만 레이블을 지정해야 할 수 있습니다. 자세한 내용은 [속성 기반 액세스 제어(ABAC)에 태그 사용](tagging.md#using-tags-for-abac) 섹션을 참조하세요.

## 단계
<a name="index-tags-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용하여 태그가 적용된 벡터 인덱스를 만들 수 있습니다.

### S3 콘솔 사용
<a name="index-tags-console"></a>

**Amazon S3 콘솔을 사용하여 태그가 있는 벡터 인덱스 만들기:**

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

1. 왼쪽 탐색 창에서 **벡터 인덱스**를 선택합니다.

1. **벡터 인덱스 생성**을 선택하여 새 벡터 인덱스를 생성합니다.

1. 평소와 같이 벡터 인덱스를 생성합니다. [벡터 버킷에서 벡터 인덱스 만들기](s3-vectors-create-index.md) 섹션을 참조하세요.

1. **벡터 인덱스 생성** 페이지에서 **태그**는 새 벡터 인덱스를 생성할 때의 옵션입니다.

1. 벡터 인덱스의 이름을 입력합니다.

1. **새 태그 추가**를 선택하여 태그 편집기를 열고 태그 키-값 페어를 입력합니다. 태그 키는 필수지만 값은 선택 사항입니다.

1. 다른 태그를 추가하려면 **새 태그 추가**를 다시 선택합니다. 최대 50개의 태그 키-값 페어를 입력할 수 있습니다.

1. 새 벡터 인덱스에 대한 옵션 지정을 완료한 후 **벡터 인덱스 생성**을 선택합니다.

### REST API 사용
<a name="index-tags-api"></a>

태그가 있는 벡터 인덱스를 만들기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon S3 Vectors API 참조*의 다음 섹션을 참조하세요.

[CreateIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateIndex.html)

### AWS CLI 사용
<a name="index-tags-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예제는 AWS CLI를 사용하여 태그가 있는 벡터 인덱스를 만드는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

벡터 인덱스를 생성할 때는 구성 세부 정보를 제공하고 다음과 같은 명명 규칙을 사용해야 합니다. `example-vector-index` 

```
aws s3vectors create-index --vector-bucket-name acc-bucket --data-type "float32" \
 --index-name accounts-index --dimension 1024 --distance-metric euclidean \
 --tags Department=Accounting,Stage=Prod
```

# 벡터 인덱스에 태그 추가
<a name="adding-tag-vector-index"></a>

Amazon S3 벡터 인덱스에 태그를 추가하고 이러한 태그를 수정할 수 있습니다. 벡터 인덱스에서 태그를 사용하는 데는 표준 S3 API 요청 요금 외에는 추가 요금이 부과되지 않습니다. 자세한 내용은 [Amazon S3 요금](https://docs.aws.amazon.com/s3/pricing/)을 참조하세요. 벡터 인덱스 태그 지정에 대한 자세한 내용은 [S3 벡터 인덱스에서 태그 사용](vector-index-tagging.md) 섹션을 참조하세요.

## 권한
<a name="add-index-tag-permissions"></a>

벡터 인덱스에 태그를 추가하려면 다음 권한이 있어야 합니다.
+ `s3vectors:TagResource`

## 오류 해결
<a name="add-index-tag-troubleshooting"></a>

벡터 인덱스에 태그를 추가하려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 인덱스에 태그를 추가하는 데 필요한 [권한](#add-index-tag-permissions)이 있는지 확인합니다.
+ AWS 예약된 접두사 `aws:`로 시작하는 태그 키를 추가하려고 했다면 태그 키를 변경하고 다시 시도합니다.

## 단계
<a name="add-index-tag-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용하여 벡터 인덱스에 태그를 추가할 수 있습니다.

### S3 콘솔 사용
<a name="add-index-tag-console"></a>

**Amazon S3 콘솔을 사용하여 벡터 인덱스에 태그를 추가하려면**

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

1. 왼쪽 탐색 창에서 **벡터 인덱스**를 선택합니다.

1. 벡터 인덱스 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **태그** 섹션으로 스크롤하고 **새 태그 추가**를 선택합니다.

1. **태그 추가** 페이지가 열립니다. 최대 50개의 태그 키-값 페어를 입력할 수 있습니다.

1. 키 이름이 기존 태그와 동일한 새 태그를 추가하는 경우 새 태그의 값이 기존 태그의 값을 덮어씁니다.

1. 이 페이지에서 기존 태그의 값을 편집할 수도 있습니다.

1. 태그를 추가한 후 **변경 사항 저장**을 선택합니다.

### REST API 사용
<a name="add-index-tag-api"></a>

벡터 인덱스에 태그를 추가하기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon S3 Vectors API 참조*의 다음 섹션을 참조하세요.

[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_TagResource.html)

### AWS CLI 사용
<a name="add-index-tag-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예제는 AWS CLI를 사용하여 벡터 인덱스에 태그를 추가하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors tag-resource \
--resource-arn arn:aws:s3vectors:us-east-1:012345678900:bucket/acc-bucket/index/accounts-index \
--tags Stage=Prod,CostCenter=Marketing
```

# 벡터 인덱스 태그 보기
<a name="viewing-vector-index-tags"></a>

Amazon S3 벡터 인덱스에 적용된 태그를 보거나 나열할 수 있습니다. 벡터 인덱스 태그 지정에 대한 자세한 내용은 [S3 벡터 인덱스에서 태그 사용](vector-index-tagging.md) 섹션을 참조하세요.

## 권한
<a name="view-index-tag-permissions"></a>

벡터 인덱스에 적용된 태그를 보려면 다음 권한이 있어야 합니다.
+ `s3vectors:ListTagsForResource`

## 오류 해결
<a name="view-index-tag-troubleshooting"></a>

벡터 인덱스의 태그를 나열하거나 보려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 인덱스의 태그를 보거나 나열하는 데 필요한 [권한](#view-index-tag-permissions)이 있는지 확인합니다.

## 단계
<a name="view-index-tag-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용하여 벡터 인덱스에 적용된 태그를 볼 수 있습니다.

### S3 콘솔 사용
<a name="view-index-tag-console"></a>

**Amazon S3 콘솔을 사용하여 벡터 인덱스에 적용된 태그를 보려면**

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

1. 왼쪽 탐색 창에서 **벡터 인덱스**를 선택합니다.

1. 벡터 인덱스 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **태그** 섹션으로 스크롤하여 벡터 인덱스에 적용된 모든 태그를 봅니다.

1. **태그** 섹션에는 기본적으로 사용자 정의 태그가 표시됩니다. AWS가 생성한 태그 탭을 선택하여 AWS 서비스가 벡터 인덱스에 적용한 태그를 볼 수 있습니다.

### REST API 사용
<a name="view-index-tag-api"></a>

벡터 인덱스에 적용된 태그를 보기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 Amazon Simple Vectors API 참조의 다음 섹션을 참조하세요.

[ListTagsforResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListTagsForResource.html)

### AWS CLI 사용
<a name="view-index-tag-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예시에서는 벡터 인덱스에 적용된 태그를 보는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors list-tags-for-resource \ 
  --resource-arn arn:aws:s3vectors:us-east-1:012345678900:bucket/acc-bucket/index/accounts-index
```

# 벡터 인덱스에서 태그 삭제
<a name="deleting-tag-vector-index"></a>

S3 벡터 인덱스에서 태그를 제거할 수 있습니다. AWS 태그는 리소스, 이 경우 Amazon S3 벡터 인덱스를 포함하는 키-값 페어입니다. 벡터 인덱스 태그 지정에 대한 자세한 내용은 [S3 벡터 인덱스에서 태그 사용](vector-index-tagging.md) 섹션을 참조하세요.

**참고**  
태그를 삭제하고 나중에 비용 추적 또는 액세스 제어에 사용 중이었다는 것을 알게 되면 벡터 인덱스에 태그를 다시 추가할 수 있습니다.

## 권한
<a name="delete-index-tag-permissions"></a>

벡터 인덱스에서 태그를 삭제하려면 다음 권한이 있어야 합니다.
+ `s3vectors:UntagResource`

## 오류 해결
<a name="delete-index-tag-troubleshooting"></a>

벡터 인덱스에서 태그를 삭제하려고 할 때 오류가 발생하면 다음을 수행할 수 있습니다.
+ 벡터 인덱스에서 태그를 삭제하는 데 필요한 [권한](#delete-index-tag-permissions)이 있는지 확인합니다.

## 단계
<a name="delete-index-tag-steps"></a>

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), Amazon S3 REST API, AWS SDK를 사용하여 벡터 인덱스에서 태그를 삭제할 수 있습니다.

### S3 콘솔 사용
<a name="delete-index-tag-console"></a>

**Amazon S3 콘솔을 사용하여 벡터 인덱스에서 태그를 삭제하려면**

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

1. 왼쪽 탐색 창에서 **벡터 인덱스**를 선택합니다.

1. 벡터 인덱스 이름을 선택합니다.

1. **속성** 탭을 선택합니다.

1. **태그** 섹션으로 스크롤하여 삭제하려는 태그 옆의 확인란을 선택합니다.

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

1. **사용자 정의 태그 삭제** 팝업이 나타나고 선택한 태그 삭제를 확인하라는 메시지가 표시됩니다.

1. [**삭제**]를 선택하여 확인합니다.

### REST API 사용
<a name="delete-index-tag-api"></a>

벡터 인덱스에서 태그를 삭제하기 위한 Amazon S3 REST API 지원에 대한 자세한 내용은 *Amazon S3 Vectors API 참조*의 다음 섹션을 참조하세요.

[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_UntagResource.html)

### AWS CLI 사용
<a name="delete-index-tag-cli"></a>

AWS CLI를 설치하려면 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 설치](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

다음 CLI 예제는 AWS CLI를 사용하여 벡터 인덱스에서 태그를 삭제하는 방법을 보여줍니다. 명령을 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors untag-resource \
--resource-arn arn:aws:s3vectors:us-east-1:012345678900:bucket/acc-bucket/index/accounts-index \
--tag-keys CostCenter Department
```

# 벡터
<a name="s3-vectors-vectors"></a>

각 벡터는 벡터 인덱스의 각 벡터를 고유하게 식별하는 키로 구성됩니다. 또한 메타데이터(예: 연도, 작성자, 장르, 위치)를 키 값 페어로 각 벡터에 연결할 수 있습니다.

벡터 데이터 작업에는 벡터 삽입, 나열, 쿼리 및 삭제가 포함됩니다. 비정형 데이터의 새 벡터 임베딩을 생성하려면 Amazon Bedrock의 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) API 작업을 사용하여 사용하려는 임베딩 모델의 모델 ID를 지정할 수 있습니다. 또한 오픈 소스 Amazon S3 Vectors Embed CLI 도구는 명령줄에서 임베딩을 생성하고 시맨틱 검색을 수행하는 간소화된 방법을 제공합니다. Amazon Bedrock 파운데이션 모델을 사용한 벡터 임베딩 생성과 S3 벡터 인덱스 내의 시맨틱 검색 작업을 모두 자동화하는 이 오픈 소스 도구에 대한 자세한 내용은 [`s3vectors-embed-cli`를 사용하여 벡터 임베딩 생성 및 시맨틱 검색 수행](s3-vectors-cli.md) 섹션을 참조하세요.

## 벡터 개념
<a name="s3-vectors-concepts"></a>

**벡터 키**: 각 벡터는 인덱스 내의 고유한 벡터 키로 식별됩니다. 벡터 키는 최대 1,024자까지 가능하며 벡터 인덱스 내에서 고유해야 합니다. 키는 대/소문자를 구분하며 UTF-8 문자를 포함할 수 있습니다.

**벡터 차원**: 차원은 벡터의 값 수입니다. 차원이 클수록 스토리지 공간이 더 많이 필요합니다. 인덱스의 모든 벡터는 인덱스를 생성할 때 지정된 동일한 수의 차원을 가져야 합니다. 차원은 1에서 4,096 사이의 정수여야 합니다.

**메타데이터**: 벡터에 메타데이터를 키-값 페어로 연결하여 추가 컨텍스트를 제공하고 쿼리 중에 필터링을 활성화할 수 있습니다. 메타데이터에는 필터링 가능한 메타데이터 키와 필터링 불가능한 메타데이터 키가 모두 포함됩니다. 필터링 가능한 메타데이터는 쿼리 필터링에 사용됩니다. 필터링 불가능한 메타데이터 키는 벡터 인덱스를 만드는 중에 지정되며, 추가 컨텍스트를 제공하지만 필터링에 사용할 수 없습니다. 메타데이터는 문자열, 숫자 및 부울 유형을 지원합니다. 필터링 가능한 메타데이터와 필터링 불가능한 메타데이터에 대한 자세한 내용은 [메타데이터 필터링](s3-vectors-metadata-filtering.md) 섹션을 참조하세요. 벡터당 크기 제한 및 벡터당 최대 메타데이터 키를 포함한 메타데이터 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md)을 참조하세요.

**Topics**
+ [벡터 개념](#s3-vectors-concepts)
+ [벡터 인덱스에 벡터 삽입](s3-vectors-index-create.md)
+ [벡터 나열](s3-vectors-list.md)
+ [벡터 쿼리](s3-vectors-query.md)
+ [벡터 인덱스에서 벡터 삭제](s3-vectors-delete.md)
+ [메타데이터 필터링](s3-vectors-metadata-filtering.md)

# 벡터 인덱스에 벡터 삽입
<a name="s3-vectors-index-create"></a>

[PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 작업을 사용하여 벡터 인덱스에 벡터를 추가할 수 있습니다. 각 벡터는 벡터 인덱스의 각 벡터를 고유하게 식별하는 키로 구성됩니다. 인덱스에 이미 있는 키로 벡터를 배치하면 기존 벡터를 완전히 덮어쓰므로 이전 벡터를 더 이상 검색할 수 없습니다. 쓰기 처리량을 극대화하고 비용을 최적화하려면 벡터를 `PutVectors`에 대한 최대 배치 크기까지 대량 배치로 삽입하는 것이 좋습니다. 그러나 라이브와 같이 더 작은 배치를 사용해야 하는 워크로드의 경우 수신 벡터 데이터를 즉시 검색할 수 있어야 합니다. 더 많은 수의 동시 `PutVectors` 요청을 초당 허용되는 최대 요청 한도까지 사용하여 쓰기 처리량을 높일 수 있습니다. `PutVectors` API 직접 호출당 벡터의 제한인 `PutVectors`의 최대 배치 크기와 최대 요청 및 초당 벡터 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요. 또한 메타데이터(예: 연도, 작성자, 장르, 위치)를 키-값 페어로 각 벡터에 연결할 수 있습니다. 기본적으로 벡터에 연결된 모든 메타데이터 키는 필터링이 가능하며, 유사성 쿼리에서 필터로 사용할 수 있습니다. 벡터 인덱스 만들기 중에 필터링 불가능한 것으로 지정된 메타데이터 키만 필터링에서 제외됩니다. S3 벡터 인덱스는 문자열, 숫자, 부울 및 목록 유형의 메타데이터를 지원합니다. 벡터당 총 메타데이터 크기 제한 및 벡터당 필터링 가능한 메타데이터 크기 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요. 메타데이터 크기가 이러한 제한을 초과하면 `PutVectors` API 작업에서 `400 Bad Request` 오류가 반환됩니다.

`PutVectors` API 작업을 사용하여 벡터 인덱스에 벡터 데이터를 추가하기 전에 원시 데이터를 부동 소수점 숫자의 배열로 콘텐츠를 숫자로 표현한 벡터 임베딩으로 변환해야 합니다. 벡터 임베딩은 콘텐츠의 시맨틱 의미를 캡처하여 `PutVectors` 작업을 통해 벡터 인덱스에 저장된 유사성 검색을 가능하게 합니다. 데이터 유형 및 사용 사례에 따라 다양한 방법을 사용하여 벡터 임베딩을 생성할 수 있습니다. 이러한 방법에는 기계 학습 프레임워크, 특수 임베딩 라이브러리 또는 Amazon Bedrock과 같은 AWS 서비스 사용이 포함됩니다. 예를 들어 Amazon Bedrock을 사용하는 경우 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) API 작업 및 선호하는 임베딩 모델을 사용하여 임베딩을 생성할 수 있습니다.

또한 Amazon Bedrock 지식 기반은 Amazon Bedrock이 S3 데이터 소스에서 데이터를 자동으로 가져오고, 콘텐츠를 텍스트 블록으로 변환하고, 임베딩을 생성하고, 벡터 인덱스에 저장하는 포괄적인 완전관리형 RAG 워크플로를 제공합니다. 그런 다음 지식 기반을 쿼리하고 소스 데이터에서 검색된 청크를 기반으로 응답을 생성할 수 있습니다.

또한 오픈 소스 Amazon S3 Vectors Embed CLI 도구는 명령줄에서 임베딩을 생성하고 시맨틱 검색을 수행하는 간소화된 방법을 제공합니다. Amazon Bedrock 파운데이션 모델을 사용한 벡터 임베딩 생성과 S3 벡터 인덱스 내의 시맨틱 검색 작업을 모두 자동화하는 이 오픈 소스 도구에 대한 자세한 내용은 [`s3vectors-embed-cli`를 사용하여 벡터 임베딩 생성 및 시맨틱 검색 수행](s3-vectors-cli.md) 섹션을 참조하세요.

**참고**  
벡터 데이터를 벡터 인덱스에 삽입할 때 벡터 데이터를 `float32`(32비트 부동 소수점) 값으로 제공해야 합니다. 더 높은 정밀도 값을 AWS SDK에 전달하면 S3 Vectors는 값을 저장하기 전에 값을 32비트 부동 소수점으로 변환하고 [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html), [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) 및 [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) 작업은 `float32` 값을 반환합니다. AWS SDKs마다 기본 숫자 유형이 다를 수 있으므로 사용 중인 SDK에 관계없이 벡터에 `float32` 형식이 올바르게 지정되었는지 확인합니다. 예를 들어 Python에서 `numpy.float32`를 사용하거나 값을 명시적으로 캐스팅합니다.

## AWS SDK 사용
<a name="s3-vectors-create-sdk"></a>

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

```
# Populate a vector index with embeddings from Amazon Titan Text Embeddings V2.
import boto3
import json

# Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. 
bedrock = boto3.client("bedrock-runtime", region_name="us-west-2")
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

# Texts to convert to embeddings.
texts = [
    "Star Wars: A farm boy joins rebels to fight an evil empire in space", 
    "Jurassic Park: Scientists create dinosaurs in a theme park that goes wrong",
    "Finding Nemo: A father fish searches the ocean to find his lost son"
]

# Generate vector embeddings.
embeddings = []
for text in texts:
    response = bedrock.invoke_model(
        modelId="amazon.titan-embed-text-v2:0",
        body=json.dumps({"inputText": text})
    )

    # Extract embedding from response.
    response_body = json.loads(response["body"].read())
    embeddings.append(response_body["embedding"])

# Write embeddings into vector index with metadata.
s3vectors.put_vectors(
    vectorBucketName="media-embeddings",   
    indexName="movies",   
    vectors=[
        {
            "key": "Star Wars",
            "data": {"float32": embeddings[0]},
            "metadata": {"source_text": texts[0], "genre":"scifi"}
        },
        {
            "key": "Jurassic Park",
            "data": {"float32": embeddings[1]},
            "metadata": {"source_text": texts[1], "genre":"scifi"}
        },
        {
            "key": "Finding Nemo",
            "data": {"float32": embeddings[2]},
            "metadata": {"source_text": texts[2], "genre":"family"}
        }
    ]
)
```

------

# 벡터 나열
<a name="s3-vectors-list"></a>

[ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) API 작업을 사용하여 벡터 인덱스에 벡터를 나열할 수 있습니다. 페이지당 반환할 수 있는 최대 벡터 수에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요. 응답에는 결과가 잘릴 때 페이지 매김 토큰이 포함됩니다. `ListVectors`의 응답 요소에 대한 자세한 내용은 *Amazon S3 API 참조*의 [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors)를 참조하세요. `ListVectors`를 사용하여 지정된 벡터 인덱스에서 벡터 데이터를 내보낼 수도 있습니다. `ListVectors`는 강력히 일관됩니다. WRITE 작업 후 모든 변경 사항이 반영된 벡터를 즉시 나열할 수 있습니다.

## AWS CLI 사용
<a name="list-vectors-index-cli"></a>

벡터를 나열하려면 다음 예제 명령을 사용합니다. *user input placeholders*를 사용자의 정보로 대체합니다.

`segment-count` 및 `segment-index` 파라미터를 사용하면 여러 병렬 요청에서 나열 작업을 파티셔닝할 수 있습니다. `segment-count` 값(예: `2`)을 지정할 때 인덱스를 여러 세그먼트로 나눕니다. `segment-index` 파라미터(0부터 시작)에 따라 나열할 세그먼트가 결정됩니다. 이 접근 방식은 병렬 처리를 활성화하여 큰 벡터 인덱스를 나열할 때 성능을 개선하는 데 도움이 됩니다. `segment-count` 및 `segment-index`에 대한 자세한 내용은 *Amazon S3 API 참조*의 [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors)를 참조하세요.

**인덱스의 모든 벡터 나열**

요청 예제:

```
aws s3vectors list-vectors \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --segment-count 2 \
  --segment-index 0 \
  --return-data \
  --return-metadata
```

응답 예제:

```
{
    "vectors": [
        {
            "key": "vec3",
            "data": {
                "float32": [0.4000000059604645]
            },
            "metadata": {
                "nonFilterableKey": "val4",
                "filterableKey": "val2"
            }
        }
    ]
}
```

**페이지 매김이 있는 벡터 나열**

요청 예제:

```
aws s3vectors list-vectors \
  --vector-bucket-name "amzn-s3-demo-vector-bucket" \
  --index-name "idx" \
  --segment-count 2 \
  --segment-index 0 \
  --return-data \
  --return-metadata \
  --next-token "zWfh7e57H2jBfBtRRmC7OfMwl209G9dg3j2qM6kM4t0rps6ClYzJykgMOil9eGqU5nhf_gTq53IfoUdTnsg"
```

응답 예제:

```
{
    "vectors": [
        {
            "key": "vec1",
            "data": {
                "float32": [0.5]
            },
            "metadata": {
                "nonFilterableKey": "val2",
                "filterableKey": "val1"
            }
        }
    ]
}
```

## AWS SDK 사용
<a name="list-vectors-index-sdk"></a>

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

예: 벡터 인덱스에 벡터 나열

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#List vectors in your vector index 

response = s3vectors.list_vectors( 
    vectorBucketName="media-embeddings",
    indexName="movies",
    maxResults = 600,
    returnData = True,
    returnMetadata = True
)

vectors = response["vectors"]

print(vectors)
```

예: 벡터 인덱스의 모든 벡터를 병렬로 나열

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#List vectors in the 1st half of vectors in the index.
response = s3vectors.list_vectors( 
    vectorBucketName="media-embeddings",
    indexName="movies",
    segmentCount=2,
    segmentIndex=1,
    maxResults = 600,
    returnData = True,
    returnMetadata = True
)

vectors = response["vectors"]

#List vectors starting from the 2nd half of vectors in the index.
# This can be ran in parallel with the first `list_vectors` call.
response = s3vectors.list_vectors( 
    vectorBucketName="media-embeddings",
    indexName="movies",
    segmentCount=2,
    segmentIndex=1,
    maxResults = 600,
    returnData = True,
    returnMetadata = True
)

vectors = response["vectors"]

print(vectors)
```

------

# 벡터 쿼리
<a name="s3-vectors-query"></a>

쿼리 벡터, 반환할 관련 결과 수(가장 가까운 Top K 근사치), 인덱스 ARN을 지정하는 [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) API 작업을 사용하여 유사성 쿼리를 실행할 수 있습니다. 또한 쿼리에서 메타데이터 필터를 사용하여 필터와 일치하는 벡터만 검색할 수 있습니다. 필터링 불가능한 메타데이터 필드를 기준으로 필터링하도록 요청하면 요청이 `400 Bad Request` 오류를 반환합니다. 메타데이터 필터링에 대한 자세한 내용은 [메타데이터 필터링](s3-vectors-metadata-filtering.md) 섹션을 참조하세요.

응답에서 벡터 키는 기본적으로 반환됩니다. 필요에 따라 응답에 거리와 메타데이터를 포함할 수 있습니다.

쿼리 벡터를 생성할 때 벡터 인덱스에 저장된 초기 벡터를 생성하는 데 사용된 것과 동일한 벡터 임베딩 모델을 사용해야 합니다. 예를 들어 Amazon Bedrock에서 Amazon Titan Text Embeddings V2 모델을 사용하여 문서의 벡터 임베딩을 만드는 경우 동일한 임베딩 모델을 사용하여 질문을 쿼리 벡터로 변환합니다. 또한 Amazon Bedrock 지식 기반은 Amazon Bedrock이 S3 데이터 소스에서 데이터를 자동으로 가져오고, 콘텐츠를 텍스트 블록으로 변환하고, 임베딩을 생성하고, 벡터 인덱스에 저장하는 포괄적인 완전관리형 RAG 워크플로를 제공합니다. 그런 다음 지식 기반을 쿼리하고 소스 데이터에서 검색된 청크를 기반으로 응답을 생성할 수 있습니다. 콘솔의 Amazon Bedrock 지식 기반에서 벡터를 쿼리하는 방법에 대한 자세한 내용은 [(선택 사항) S3 Vectors를 Amazon Bedrock 지식 기반과 통합](s3-vectors-getting-started.md#s3-vectors-bedrock-kb-tutorial) 섹션을 참조하세요.

또한 오픈 소스 Amazon S3 Vectors Embed CLI 도구는 명령줄에서 시맨틱 검색을 수행하는 간소화된 방법을 제공합니다. 이 오픈 소스 도구는 Amazon Bedrock 파운데이션 모델을 사용하여 벡터 임베딩 생성을 처리하고 S3 벡터 인덱스에 대해 시맨틱 검색 작업을 실행하여 쿼리 프로세스를 간소화합니다. 이 도구를 사용하여 벡터 데이터를 쿼리하는 방법에 대한 자세한 내용은 [`s3vectors-embed-cli`를 사용하여 벡터 임베딩 생성 및 시맨틱 검색 수행](s3-vectors-cli.md) 섹션을 참조하세요.

S3 Vectors는 콜드 쿼리에 대해 1초 미만의 응답 시간을 제공하여 Amazon S3 탄력적 처리량을 활용하여 수백만 개의 벡터를 효율적으로 검색합니다. 따라서 쿼리 빈도가 낮은 워크로드에 매우 비용 효율적입니다. 웜 쿼리의 경우 S3 Vectors는 최소 100ms의 응답 시간을 제공할 수 있으므로 반복되거나 빈번한 쿼리 패턴이 있는 워크로드에 도움이 됩니다.

벡터 임베딩에 대한 유사성 쿼리를 수행하려면 벡터 임베딩 모델, 벡터 데이터세트 크기(벡터 및 차원 수), 쿼리 분포 등 몇 가지 요인이 평균 재현율 성능에 영향을 미칠 수 있습니다. S3 Vectors는 대부분의 데이터세트에 대해 90% 이상의 평균 재현율을 제공합니다. 평균 재현율은 쿼리 결과의 품질을 측정합니다. 평균 재현율 90%는 응답에 쿼리 벡터를 기준으로 벡터 인덱스에 저장된 실제 가장 가까운 벡터(실측 정보)의 90%가 포함되어 있음을 의미합니다. 그러나 실제 성능은 특정 사용 사례에 따라 다를 수 있으므로 대표 데이터 및 쿼리를 사용하여 자체 테스트를 수행함으로써 S3 Vectors가 재현 요구 사항을 충족하는지 검증하는 것이 좋습니다.

## AWS SDK 사용
<a name="querty-vectors-sdk"></a>

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

```
# Query a vector index with an embedding from Amazon Titan Text Embeddings V2.
import boto3 
import json 

# Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. 
bedrock = boto3.client("bedrock-runtime", region_name="us-west-2")
s3vectors = boto3.client("s3vectors", region_name="us-west-2") 

# Query text to convert to an embedding. 
input_text = "adventures in space"

# Generate the vector embedding.
response = bedrock.invoke_model(
    modelId="amazon.titan-embed-text-v2:0",
    body=json.dumps({"inputText": input_text})
) 

# Extract embedding from response.
model_response = json.loads(response["body"].read())
embedding = model_response["embedding"]

# Query vector index.
response = s3vectors.query_vectors(
    vectorBucketName="media-embeddings",
    indexName="movies",
    queryVector={"float32": embedding}, 
    topK=3, 
    returnDistance=True,
    returnMetadata=True
)
print(json.dumps(response["vectors"], indent=2))

# Query vector index with a metadata filter.
response = s3vectors.query_vectors(
    vectorBucketName="media-embeddings",
    indexName="movies",
    queryVector={"float32": embedding}, 
    topK=3, 
    filter={"genre": "scifi"},
    returnDistance=True,
    returnMetadata=True
)
print(json.dumps(response["vectors"], indent=2))
```

------

# 벡터 인덱스에서 벡터 삭제
<a name="s3-vectors-delete"></a>

[DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html) API를 사용해 벡터 키를 지정하여 벡터 인덱스에서 특정 벡터를 삭제할 수 있습니다. 이 작업은 나머지 벡터 데이터를 보존하면서 오래된 데이터나 잘못된 데이터를 제거하는 데 유용합니다.

## AWS CLI 사용
<a name="delete-vectors-cli"></a>

벡터를 삭제하려면 다음 예제 명령을 사용합니다. *user input placeholders*를 사용자의 정보로 대체합니다.

```
aws s3vectors delete-vectors \
 --vector-bucket-name "amzn-s3-demo-vector-bucket" \
 --index-name "idx" \
 --keys '["vec2","vec3"]'
```

## AWS SDK 사용
<a name="s3-vectors-delete-sdk"></a>

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

```
import boto3

# Create a S3 Vectors client in the AWS Region of your choice. 
s3vectors = boto3.client("s3vectors", region_name="us-west-2")

#Delete vectors in a vector index
response = s3vectors.delete_vectors(
    vectorBucketName="media-embeddings",
    indexName="movies",
    keys=["Star Wars", "Finding Nemo"])
```

------

# 메타데이터 필터링
<a name="s3-vectors-metadata-filtering"></a>

메타데이터 필터링을 사용하면 벡터에 연결된 특정 속성을 기반으로 쿼리 결과를 필터링할 수 있습니다. 쿼리 작업과 함께 메타데이터 필터를 사용하여 유사성 기준 및 특정 메타데이터 조건과 모두 일치하는 벡터를 찾을 수 있습니다.

S3 Vectors는 필터링 가능한 메타데이터와 필터링 불가능한 메타데이터라는 두 가지 유형의 메타데이터를 지원합니다. 주요 차이점은 필터링 가능한 메타데이터는 쿼리 필터에 사용할 수 있지만 크기 제한이 더 엄격한 반면, 필터링 불가능한 메타데이터는 필터에 사용할 수 없지만 크기 제한 내에 더 많은 양의 데이터를 저장할 수 있다는 것입니다. 벡터당 크기 제한 및 벡터당 최대 메타데이터 키를 포함하여 메타데이터 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

S3 Vectors는 벡터 검색과 필터 평가를 동시에 수행합니다. S3 Vectors는 인덱스의 후보 벡터를 검색하여 유사한 상위 K개 벡터를 찾는 동시에 각 후보 벡터가 메타데이터 필터 조건과 일치하는지 검증합니다. 예를 들어 유사한 영화 임베딩을 검색하고 genre='mystery'로 필터링하면 S3 Vectors는 장르 메타데이터가 'mystery'와 일치하는 유사한 영화 임베딩만 반환합니다. 벡터 검색 후 메타데이터 필터를 적용하는 것과 달리 이 필터링 방식은 일치하는 결과를 찾을 가능성이 더 높습니다. 참고: 벡터 인덱스에 일치하는 결과가 매우 적은 경우 필터가 있는 쿼리는 상위 K개보다 적은 결과를 반환할 수 있습니다.

**Topics**
+ [필터링 가능한 메타데이터](#s3-vectors-metadata-filtering-filterable)
+ [필터링 가능한 유효한 메타데이터의 예](#s3-vectors-metadata-filtering-examples)
+ [필터링 불가능한 메타데이터 키](#s3-vectors-metadata-filtering-non-filterable)

## 필터링 가능한 메타데이터
<a name="s3-vectors-metadata-filtering-filterable"></a>

필터링 가능한 메타데이터를 사용하면 특정 메타데이터 값을 기반으로 쿼리 결과를 필터링할 수 있습니다. 기본적으로 모든 메타데이터 필드는 벡터 인덱스를 만드는 중에 필터링 불가능한 것으로 명시적으로 지정되지 않는 한 유사성 쿼리에서 필터링할 수 있습니다. S3 Vectors는 벡터당 크기 제한이 있는 메타데이터의 문자열, 숫자, 부울 및 목록 유형을 지원합니다. 메타데이터 유형은 범주, 타임스탬프 또는 상태 값과 같이 필터링 기준으로 사용하려는 속성에 적합합니다.

메타데이터 크기가 지원되는 제한을 초과하면 [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 작업이 `400 Bad Request` 오류를 반환합니다. 벡터당 필터링 가능한 메타데이터 크기 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

다음 작업은 필터링 가능한 메타데이터와 함께 사용할 수 있습니다.


| 연산자 | 유효한 입력 유형 | 설명 | 
| --- | --- | --- | 
| \$1eq | 문자열, 숫자, 부울 | 단일 값에 대한 정확한 일치 비교입니다.배열 메타데이터 값과 비교할 때 입력 값이 배열의 요소와 일치하면 true를 반환합니다. 예를 들어 `{"category": {"$eq": "documentary"}}`는 벡터를 `"category": ["documentary", "romance"]` 메타데이터와 일치시킵니다. | 
| \$1ne | 문자열, 숫자, 부울 | 같지 않음 비교 | 
| \$1gt | 숫자 | 초과 비교 | 
| \$1gte | 숫자 | 초과 또는 같음 비교 | 
| \$1lt | 숫자 | 미만 비교 | 
| \$1lte | 숫자 | 미만 또는 같음 비교 | 
| \$1in | 비어 있지 않은 프리미티브 배열 | 배열의 값 중 하나 이상과 일치 | 
| \$1nin | 비어 있지 않은 프리미티브 배열 | 배열의 값과 일치하지 않음 | 
| \$1exists | 부울 | 필드가 존재하는지 확인 | 
| \$1and | 비어 있지 않은 필터 배열 | 여러 조건의 논리적 AND | 
| \$1or | 비어 있지 않은 필터 배열 | 여러 조건의 논리적 OR | 

## 필터링 가능한 유효한 메타데이터의 예
<a name="s3-vectors-metadata-filtering-examples"></a>

**단순 동등성**  

```
{"genre": "documentary"}
```
이 필터는 장르 메타데이터 키가 ‘documentary’와 같은 벡터와 일치합니다. 연산자를 지정하지 않으면 S3 Vectors는 \$1eq 연산자를 자동으로 사용합니다.

**명시적 동등성**  

```
// Example: Exact match
{"genre": {"$eq": "documentary"}}
```

```
// Example: Not equal to
{"genre": {"$ne": "drama"}}
```

**숫자 비교**  

```
{"year": {"$gt": 2019}}
```

```
{"year": {"$gte": 2020}}
```

```
{"year": {"$lt": 2020}}
```

```
{"year": {"$lte": 2020}}
```

**배열 연산자**  

```
{"genre": {"$in": ["comedy", "documentary"]}}
```

```
{"genre": {"$nin": ["comedy", "documentary"]}}
```

**존재 확인**  

```
{"genre": {"$exists": true}}
```
`$exists` 필터는 해당 메타데이터 키에 대해 저장된 값에 관계없이 ‘genre’ 메타데이터 키가 있는 벡터와 일치합니다.

**논리 연산자**  

```
{"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

```
{"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
```

**가격 범위(동일한 필드의 여러 조건)**  

```
{"price": {"$gte": 10, "$lte": 50}}
```

메타데이터 필터링을 사용하여 벡터를 쿼리하는 방법에 대한 자세한 내용은 [메타데이터 필터링](s3-vectors.md#s3-vectors-filtering-metadata) 섹션을 참조하세요.

## 필터링 불가능한 메타데이터 키
<a name="s3-vectors-metadata-filtering-non-filterable"></a>

필터링 불가능한 메타데이터는 쿼리 필터에 사용할 수 없지만 필터링 가능한 메타데이터보다 많은 양의 컨텍스트 데이터를 저장할 수 있습니다. 검색할 필요는 없지만 쿼리 결과와 함께 반환할 수 있는 큰 텍스트 청크, 자세한 설명 또는 기타 컨텍스트 정보를 저장하는 데 적합합니다. 예를 들어 전체 문서 텍스트, 이미지 설명 또는 자세한 제품 사양을 필터링 불가능한 메타데이터로 저장할 수 있습니다.

필터링 불가능한 메타데이터 키는 벡터 인덱스 생성 중에 명시적으로 구성해야 합니다. 메타데이터 키가 인덱스 생성 중에 필터링 불가능으로 지정되면 나중에 필터링 가능으로 변경할 수 없습니다. 여러 메타데이터 키를 벡터 인덱스당 필터링 불가능한 것으로 구성할 수 있으며, 각 메타데이터 키 이름은 63자로 제한됩니다. 벡터 인덱스당 허용되는 필터링 불가능한 메타데이터 키의 최대 수에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

필터링 불가능한 메타데이터는 필터링할 수 없지만 `return-metadata` 파라미터를 사용하여 쿼리 결과와 함께 검색할 수 있습니다. 다음과 같이 일부 사용 사례에 필터링 불가능한 메타데이터를 사용할 수 있습니다.
+ 별도의 데이터 소스를 구문 분석하지 않고 애플리케이션에 컨텍스트를 제공하는 데 사용합니다.
+ 필터링 가능한 메타데이터 크기 제한을 초과하는 더 큰 텍스트 청크를 저장합니다.
+ [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) API 작업을 사용하여 벡터 내보내기에 포함합니다.

필터링 불가능한 메타데이터 구성에 대한 자세한 내용은 [벡터 버킷에서 벡터 인덱스 만들기](s3-vectors-create-index.md) 섹션을 참조하세요.

# 한계 및 제한
<a name="s3-vectors-limitations"></a>

Amazon S3 Vectors에는 벡터 스토리지 및 검색 애플리케이션을 계획할 때 알아야 할 특정 한계 및 제한있습니다.
+ 계정의 AWS 리전당 벡터 버킷 수: 10,000개
+ 벡터 버킷당 벡터 인덱스 수: 10,000개
+ 벡터 인덱스당 벡터: 최대 20억 개
+ 벡터당 차원 값 수: 1\$14,096개
+ 벡터당 총 메타데이터: 최대 40KB(필터링 가능 \$1 필터링 불가능)
+ 벡터당 총 메타데이터 키 수: 최대 50개
+ 벡터당 필터링 가능한 메타데이터: 최대 2KB
+ 벡터 인덱스당 필터링 불가능한 메타데이터 키 수: 최대 10개
+ 벡터 인덱스별 초당 PutVectors 및 DeleteVectors 요청 통합: 최대 1,000개 
+ 벡터 인덱스별 초당 삽입 및 삭제된 결합된 벡터: 최대 2,500개 
+ 요청 페이로드 크기: 최대 20MiB
+ [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 직접 호출당 벡터 수: 최대 500개
+ [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html) API 직접 호출당 벡터 수: 최대 500개
+ [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) API 직접 호출당 벡터 수: 최대 100개
+ [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) 요청당 Top-K 결과: 최대 100개
+ [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) 응답의 페이지당 나열되는 벡터 수: 최대 1,000개
+ [ListVectorBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectorBuckets.html) 응답의 페이지당 나열된 벡터 버킷 수: 최대 500개.
+ [ListIndexes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListIndexes.html) 응답의 페이지당 나열된 벡터 인덱스: 최대 500개.
+ ListVectors API 직접 호출의 병렬 목록에 대한 세그먼트 수: 최대 16개

# S3 Vectors 모범 사례
<a name="s3-vectors-best-practices"></a>

Amazon S3 Vectors는 AI 지원 애플리케이션 및 Amazon S3에 저장된 콘텐츠의 시맨틱 검색에 사용할 수 있도록 특별히 구축되고 비용 최적화된 벡터 스토리지를 제공합니다. S3 Vectors는 벡터 데이터세트를 저장하기 위한 S3 수준의 탄력성과 내구성을 제공하도록 설계되어 콜드 쿼리의 경우 1초 미만, 웜 쿼리의 경우 100밀리초 이내의 빠른 쿼리 성능을 제공합니다. 따라서 벡터 인덱스를 구축하고 확장해야 하는 애플리케이션에 적합합니다. S3 Vectors를 사용하면 전용 API 작업 세트를 사용하여 인프라를 프로비저닝하지 않고도 벡터 데이터에 대한 유사성 쿼리를 저장, 액세스 및 수행할 수 있습니다. 자세한 내용은 [S3 Vectors 및 벡터 버킷 작업](s3-vectors.md) 섹션을 참조하세요.

 S3 Vectors를 최대한 활용하려면 다음과 같은 모범 사례를 수행하는 것이 좋습니다.

**벡터 삽입 및 삭제**  
애플리케이션은 벡터 인덱스당 초당 최대 1,000개의 [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) 또는 [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) 요청을 달성하거나, 벡터 인덱스당 초당 최대 2,500개의 벡터를 삽입 또는 삭제할 수 있습니다(둘 중 먼저 도달하는 제한이 적용됨). 요청 속도를 초과하면 `429 TooManyRequestsException` 오류가 발생할 수 있습니다.  
비용을 최적화하려면 벡터를 API 요청당 최대 500개의 벡터 배치 크기까지 대량 배치로 삽입 및 삭제하는 것이 좋습니다. 워크로드에 더 작은 배치가 필요한 경우 초당 최대 1,000개의 요청 한도까지 동시 요청을 보낼 수 있습니다. 초당 벡터 2,500개의 최대 처리량에 도달하려면 초당 5개의 배치를 각각 500개의 벡터로 보내거나 초당 1,000개의 배치를 각각 평균 2.5개의 벡터로 보낼 수 있습니다.

**S3 벡터 인덱스에서 벡터 액세스 및 쿼리**  
 애플리케이션은 하나의 S3 벡터 인덱스에서 초당 수백 개의 [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html), [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) 또는 [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) 요청을 달성할 수 있습니다. 요청 속도를 초과하면 `429 TooManyRequestsException` 오류가 발생할 수 있습니다. 재시도 메커니즘을 사용하고 더 적은 요청을 보내도록 애플리케이션을 구성하는 것이 좋습니다.

**벡터 인덱스 간 규모 조정**  
벡터 인덱스당 쿼리 성능을 개선하려면 가능한 경우 여러 벡터 인덱스로 벡터를 분할하도록 애플리케이션을 구성하는 것이 좋습니다. 예를 들어 다중 테넌트 워크로드가 있고 애플리케이션이 각 테넌트를 독립적으로 쿼리하는 경우 각 테넌트의 벡터를 별도의 벡터 인덱스에 저장하는 것이 좋습니다. 자세한 내용은 [벡터 인덱스](s3-vectors-indexes.md) 섹션을 참조하세요.

**별도의 벡터 인덱스를 사용하여 다중 테넌시 구현**  
각 테넌트에 대해 단일 벡터 인덱스를 사용하여 벡터 데이터를 구성하면 다중 테넌시를 달성할 수 있습니다. IAM 및 버킷 정책을 사용하여 각 테넌트의 액세스를 지정된 벡터 인덱스로만 제한할 수 있습니다. 이 접근 방식은 각 테넌트에 대해 별도의 버킷을 만들 필요가 없으므로 데이터 격리를 유지하고 관리를 간소화하는 데 도움이 됩니다. 자세한 내용은 [S3 Vectors의 Identity and Access Management](s3-vectors-access-management.md) 섹션을 참조하세요.

**벡터 인덱스에 대해 필터링 불가능한 메타데이터 필드 구성**  
벡터 인덱스를 만들 때 필터링이 필요하지 않은 메타데이터 필드를 필터링 불가능한 메타데이터 키로 구성합니다. 예를 들어 벡터 임베딩용 텍스트 청크는 참조용으로만 필요한 경우 필터링 불가능한 메타데이터 필드로 저장합니다. 자세한 내용은 [필터링 불가능한 메타데이터 키](s3-vectors-metadata-filtering.md#s3-vectors-metadata-filtering-non-filterable) 섹션을 참조하세요.

# `s3vectors-embed-cli`를 사용하여 벡터 임베딩 생성 및 시맨틱 검색 수행
<a name="s3-vectors-cli"></a>

Amazon S3 Vectors는 단일 명령에서 임베딩 생성과 벡터 작업을 결합하여 벡터 데이터 작업을 간소화하는 Amazon S3 Vectors Embed CLI(`s3vectors-embed-cli`)라는 독립형 오픈 소스 도구를 제공합니다. 이 CLI 도구는 Amazon Bedrock 파운데이션 모델 및 벡터 인덱스 내의 시맨틱 검색 작업을 사용하여 벡터 임베딩 생성을 자동화하여 S3 Vectors를 빠르게 시작하는 데 도움이 됩니다.

S3 Vectors Embed CLI는 Amazon Bedrock 임베딩 모델을 S3 Vectors 작업과 통합하기 위한 두 가지 기본 명령을 제공합니다.
+ `s3vectors-embed put`: 벡터 임베딩을 생성하여 벡터 인덱스에 삽입합니다. 특히 Amazon Bedrock 모델을 통해 텍스트와 이미지를 벡터 임베딩으로 변환하고, 벡터 인덱스에 자동으로 저장합니다.
+ `s3vectors-embed query`: Amazon Bedrock 모델 및 벡터 인덱스의 쿼리 벡터를 통해 쿼리 입력에서 벡터 임베딩을 생성합니다.

Amazon S3 Vectors Embed CLI는 [Amazon Web Services - Labs GitHub 리포지토리](https://github.com/awslabs)에서 사용할 수 있습니다. 자세한 설치 지침, 명령 파라미터, 예제 및 모범 사례는 [Amazon S3 Vectors Embed CLI GitHub 리포지토리](https://github.com/awslabs/s3vectors-embed-cli)를 참조하세요.

더 많은 제어 및 사용자 지정을 제공하는 하위 수준 S3 Vectors API 작업은 *Amazon Simple Storage Service API 참조*의 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_Amazon_S3_Vectors.html)를 참조하세요.

# 다른 AWS 서비스와 함께 S3 Vectors 사용
<a name="s3-vectors-integration"></a>

S3 Vectors는 다른 AWS 서비스와 통합되어 벡터 처리 기능을 개선하고 AI 및 기계 학습 워크로드를 위한 포괄적인 솔루션을 제공합니다. 이러한 통합을 통해 다른 AWS 서비스의 특수 기능과 함께 S3 Vectors의 비용 효과적인 스토리지를 활용할 수 있습니다.

## 사용 가능한 통합
<a name="s3-vectors-integration-available"></a>

S3 Vectors는 다음 AWS 서비스와의 기본 통합을 제공합니다.
+ [Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/) - 높은 초당 쿼리 수(QPS) 및 짧은 지연 시간 벡터 검색을 위해 벡터 인덱스의 스냅샷을 Amazon OpenSearch Service로 내보낼 수 있습니다. 또한 Amazon OpenSearch Service는 하이브리드 검색, 집계, 고급 필터링, 패싯된 검색 등 고급 검색 기능에 Amazon OpenSearch Service API 작업을 계속 사용하면서 비용을 최적화하려는 고객을 위한 새로운 저비용 엔진으로 Amazon S3 Vectors를 추가합니다.
+ [Amazon Bedrock 지식 기반](https://aws.amazon.com/bedrock/knowledge-bases/) - S3 Vectors를 검색 증강 생성(RAG) 애플리케이션의 벡터 스토어로 사용하여 지식 기반 작업에 대한 쿼리 성능을 유지하면서 스토리지 비용을 절감합니다. Amazon Bedrock 콘솔 또는 [Amazon SageMaker AI Unified Studio](https://aws.amazon.com/sagemaker/unified-studio/)를 통해 이 통합에 액세스할 수 있습니다.

## 통합 이점
<a name="s3-vectors-integration-benefits"></a>

이러한 통합은 다음과 같은 몇 가지 주요 이점을 제공합니다.
+ **비용 최적화**: 고급 검색 기능을 위해 Amazon OpenSearch를 사용하는 등 특정 워크로드에 특수 서비스를 사용하는 동시에 대규모 벡터 데이터세트를 S3 Vectors에 비용 효과적으로 저장합니다.
+ **성능 유연성**: 처리량이 낮은 스토리지 및 산발적 쿼리를 위한 S3 Vectors와 처리량이 높고 지연 시간이 짧은 작업을 위한 기타 서비스 중에 성능 요구 사항에 적합한 통합을 선택합니다.
+ **워크플로 통합**: 벡터 작업을 기존 AWS 기반 AI 및 ML 파이프라인에 원활하게 통합합니다.
+ **간소화된 관리**: 사용자 지정 솔루션을 구축하는 대신 관리형 통합을 사용하여 운영 복잡성을 줄입니다.

**Topics**
+ [사용 가능한 통합](#s3-vectors-integration-available)
+ [통합 이점](#s3-vectors-integration-benefits)
+ [OpenSearch Service에서 S3 Vectors 사용](s3-vectors-opensearch.md)
+ [Amazon Bedrock 지식 베이스에서 S3 Vectors 사용](s3-vectors-bedrock-kb.md)

# OpenSearch Service에서 S3 Vectors 사용
<a name="s3-vectors-opensearch"></a>

Amazon S3 Vectors는 OpenSearch와 통합되어 유연한 벡터 스토리지 및 검색 기능을 제공합니다. 이 통합을 통해 OpenSearch의 고급 검색 기능을 활용하면서 S3 Vectors에 벡터를 저장하여 비용을 최적화할 수 있습니다.

S3 Vectors와 OpenSearch 간에는 두 가지 통합이 있습니다. 하나는 고성능 검색 기능을 위해 S3 Vectors에서 OpenSearch Serverless로 벡터 데이터를 내보내는 것입니다. 다른 하나는 OpenSearch 기능에 대한 액세스를 유지하면서 S3 Vectors를 OpenSearch 내에서 비용 효과적인 스토리지 엔진으로 사용하는 것입니다.

## OpenSearch Serverless로 내보내기
<a name="s3-vectors-opensearch-export"></a>

고성능 검색 작업, 하이브리드 검색, 집계, 고급 필터링 및 패싯된 검색을 위해 S3 Vectors에서 OpenSearch Serverless 컬렉션으로 벡터 인덱스를 내보낼 수 있습니다. 내보내면 S3 Vectors에 남아 있는 동안 데이터가 OpenSearch Serverless로 복사되므로 이 기간 동안 두 서비스에 대한 비용을 지불하게 됩니다.

### 이 통합을 사용해야 하는 경우
<a name="s3-vectors-opensearch-export-when"></a>

다음이 필요한 경우 S3 Vectors에서 OpenSearch Serverless로 내보내는 것이 좋습니다.
+ 벡터 유사성을 키워드 검색과 결합하는 **하이브리드 검색 기능**.
+ 까다로운 워크로드에 대한 **높은 쿼리 처리량**.
+ 밀리초의 응답 시간이 필요한 실시간 애플리케이션을 위한 **지연 시간이 짧은 응답**.
+ 집계, 패싯된 검색 및 복잡한 필터링을 포함하는 **고급 분석**.

### 사전 조건
<a name="s3-vectors-opensearch-export-prereq"></a>

OpenSearch에서 S3 Vectors를 사용하기 전에 다음이 있는지 확인합니다.
+ 데이터가 포함된 벡터 인덱스가 있는 기존 S3 벡터 버킷.
+ S3 Vectors 및 OpenSearch Service 모두에 대한 적절한 IAM 권한.
+ 적절한 통합 방법을 선택하기 위한 성능 요구 사항에 대한 이해.

### 시작하기
<a name="s3-vectors-opensearch-export-getting-started"></a>

** 사용AWS Management Console**

**벡터 데이터를 OpenSearch로 내보내기**

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

1. 벡터 버킷 목록에서 내보내려는 벡터 데이터가 포함된 버킷 이름을 선택합니다.

1. **벡터 인덱스**에서 내보내려는 벡터 인덱스 옆에 있는 라디오 버튼을 선택합니다.

1. **고급 검색 내보내기**를 선택한 다음 **OpenSearch로 내보내기**를 선택합니다.

**중요**  
**특정 시점 내보내기**: 내보내기는 내보내기가 시작될 때까지 데이터를 캡처합니다. OpenSearch로 수집하는 동안 벡터 데이터를 업데이트하는 경우 모든 업데이트가 OpenSearch에 반영되지는 않습니다.
**일회성 작업**: 일회성 내보내기이며, S3 Vectors 데이터와 동기화되지 않습니다. 후속 변경 사항을 캡처하려면 수동으로 다시 내보내야 합니다.

그런 다음 S3 Vectors와 Amazon OpenSearch Service의 통합을 구성하고 관리하기 위해 주로 OpenSearch 콘솔을 통해 작업합니다.

**OpenSearch로 내보내기 보기**

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

1. 벡터 버킷 목록에서 내보내려는 벡터 데이터가 포함된 버킷 이름을 선택합니다.

1. **벡터 인덱스**에서 **고급 검색 내보내기**를 선택한 다음 **OpenSearch로 내보내기 보기**를 선택합니다.

그런 다음 OpenSearch 콘솔을 통해 OpenSearch로 내보내기를 볼 수 있습니다.

OpenSearch Serverless 컬렉션 만들기 및 관리에 대한자세한 내용은 *Amazon OpenSearch Service 개발자 안내서*의 [Creating and managing Amazon OpenSearch Service Serverless collections](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-collections.html)를 참조하세요.

## S3 Vectors 엔진과 함께 OpenSearch 사용
<a name="s3-vectors-opensearch-engine"></a>

S3 Vectors를 [Amazon OpenSearch 관리형 클러스터](https://aws.amazon.com/opensearch-service/features/managed/)의 기본 스토리지 엔진으로 사용하여 OpenSearch 기능을 유지하면서 비용 최적화된 벡터 스토리지를 제공할 수 있습니다.

### 이 통합을 사용해야 하는 경우
<a name="s3-vectors-opensearch-engine-when"></a>

다음이 필요한 경우 S3 Vectors 엔진과 함께 OpenSearch를 사용하는 것이 좋습니다.
+ 벡터 유사성을 키워드 검색과 결합하는 **하이브리드 검색 기능**.
+ 빈도가 낮거나 산발적인 사용 패턴을 가질 수 있는 **낮은 쿼리 처리량**.
+ 비용 절감의 대가로 더 긴 응답 시간을 수용할 수 있는 애플리케이션을 위한 **더 높은 지연 시간 허용 범위**.
+ 집계, 패싯된 검색 및 복잡한 필터링을 포함하는 **고급 분석**.
+ 비용 효과적인 벡터 스토리지로 확장하려는 **기존 OpenSearch 워크플로**.

### 사전 조건
<a name="s3-vectors-opensearch-engine-prereq"></a>

S3 Vectors 엔진과 함께 OpenSearch를 사용하기 전에 다음을 갖추어야 합니다.
+ 기존 OpenSearch 관리형 도메인. 자세한 내용을 알아보려면 [Amazon OpenSearch Service 개발자 안내서](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)의 *Amazon OpenSearch Service 도메인 생성 및 관리*를 참조하세요.
+ 적절한 통합 방법을 선택하기 위한 성능 요구 사항에 대한 이해.

### 시작하기
<a name="s3-vectors-opensearch-engine-getting-started"></a>

S3 Vectors 엔진과 함께 OpenSearch를 사용하려면 OpenSearch에서 인덱스를 만드는 동안 엔진을 `S3_Vectors`로 설정합니다. 엔진 유형을 지정하는 위치를 포함하여 OpenSearch Service에서 인덱스를 만들 때 사용하는 템플릿에 대한 자세한 내용은 [Methods and engines](https://docs.opensearch.org/docs/latest/field-types/supported-field-types/knn-methods-engines/)를 참조하세요. OpenSearch와 S3 Vectors 엔진 간의 통합에 대한 자세한 내용은 *Amazon OpenSearch Service 개발자 안내서*의 [Advanced search capabilities with an S3 Vectors engine](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/s3-vector-opensearch-integration-engine.html)을 참조하세요.

# Amazon Bedrock 지식 베이스에서 S3 Vectors 사용
<a name="s3-vectors-bedrock-kb"></a>

S3 Vectors는 [Amazon Bedrock 지식 베이스](https://aws.amazon.com/bedrock/knowledge-bases/) 및 [Amazon SageMaker AI Unified Studio](https://aws.amazon.com/sagemaker/unified-studio/)와 통합되어 검색 증강 생성(RAG) 애플리케이션을 위한 벡터 스토리지를 간소화하고 그 비용을 줄입니다.

Amazon Bedrock 임베딩 모델을 S3 Vectors 작업과 통합하는 상위 수준 CLI 명령에 대한 자세한 내용은 다음을 참조하세요.

**Topics**
+ [통합 개요](#s3-vectors-bedrock-kb-overview)
+ [이 통합을 사용해야 하는 경우](#s3-vectors-bedrock-kb-when)
+ [지원되는 임베딩 모델](#s3-vectors-bedrock-kb-models)
+ [사전 조건 및 권한](#s3-vectors-bedrock-kb-prereq)
+ [S3 Vectors를 사용하여 지식 베이스 만들기](#s3-vectors-bedrock-kb-create)
+ [지식 베이스 관리 및 쿼리](#s3-vectors-bedrock-kb-manage)
+ [제한 사항](#s3-vectors-bedrock-kb-limits)

## 통합 개요
<a name="s3-vectors-bedrock-kb-overview"></a>

Amazon Bedrock에서 지식 베이스를 만들 때 S3 Vectors를 벡터 스토어로 선택할 수 있습니다. 이 통합은 다음을 제공합니다.
+ 큰 벡터 데이터세트가 있는 RAG 애플리케이션의 **비용 절감**
+ Amazon Bedrock의 완전관리형 RAG 워크플로와 **원활하게 통합**
+ Amazon Bedrock 서비스에서 처리하는 **자동 벡터 관리**
+ 지식 기반 검색 작업을 위한 **1초 미만의 콜드 쿼리 지연 시간과 최소 100밀리초의 웜 쿼리 지연 시간**.

Amazon Bedrock 지식 기반은 포괄적인 완전관리형 RAG 워크플로를 제공합니다. S3 Vectors로 지식 기반을 만들면 Amazon Bedrock은 S3 데이터 소스에서 데이터를 자동으로 가져오고, 콘텐츠를 텍스트 블록으로 변환하고, 임베딩을 생성하고, 벡터 인덱스에 저장합니다. 그런 다음 지식 기반을 쿼리하고 소스 데이터에서 검색된 청크를 기반으로 응답을 생성할 수 있습니다.

## 이 통합을 사용해야 하는 경우
<a name="s3-vectors-bedrock-kb-when"></a>

다음 사항이 필요한 경우 Amazon Bedrock 지식 베이스와 함께 S3 Vectors를 사용하는 것을 고려하세요.
+ 1초 미만의 쿼리 지연 시간이 애플리케이션 요구 사항을 충족하는 대규모 데이터세트를 위한 **비용 효과적인 벡터 스토리지**
+ 설명서, 정책 및 시각적 콘텐츠 내용을 검색하는 등의 사용 사례에 대한 **텍스트 및 이미지 기반 문서 검색**
+ 지연 시간이 매우 짧은 응답보다 스토리지 비용 최적화가 우선시되는 **RAG 애플리케이션**
+ S3 Vectors API 작업을 직접 학습할 필요 없는 **관리형 벡터 작업** - 익숙한 Amazon Bedrock 인터페이스를 계속 사용할 수 있습니다.
+ Amazon S3의 내구성과 확장성을 갖춘 **장기 벡터 스토리지**

이 통합은 작성된 콘텐츠 및 이미지의 내용을 검색하고 인사이트를 추출해야 하는 RAG 애플리케이션을 구축하며, S3 Vectors의 비용상 이점이 허용 가능한 쿼리 성능 요구 사항에 부합하는 조직에 적합합니다.

## 지원되는 임베딩 모델
<a name="s3-vectors-bedrock-kb-models"></a>

*Amazon Bedrock 사용 설명서*의 [벡터 임베딩에 지원되는 모델](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html#knowledge-base-supported-embeddings)을 참조하세요.

## 사전 조건 및 권한
<a name="s3-vectors-bedrock-kb-prereq"></a>

S3 Vectors를 사용하여 지식 베이스를 만들기 전에 다음이 있는지 확인합니다.
+ S3 Vectors 및 Amazon Bedrock 서비스 모두에 대한 적절한 IAM 권한. S3 Vectors의 IAM 권한에 대한 자세한 내용은 [S3 Vectors의 Identity and Access Management](s3-vectors-access-management.md) 섹션을 참조하세요. Amazon Bedrock 지식 베이스 서비스 역할이 S3 Vectors에 액세스하기 위한 IAM 권한에 대한 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Amazon S3 Vectors의 벡터 스토어에 액세스할 수 있는 권한](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-s3vectors)을 참조하세요.
+ 지식 기반으로 수집하기 위해 준비된 소스 문서.
+ 임베딩 모델 요구 사항에 대한 이해.

보안 구성을 설정할 때 필요한 AWS 서비스에 액세스하기 위한 Amazon Bedrock 권한을 제공하는 IAM 역할을 선택할 수 있습니다. Amazon Bedrock이 서비스 역할을 만들도록 하거나 자체 사용자 지정 역할을 사용할 수 있습니다. 사용자 지정 역할을 사용하는 경우, 벡터 버킷 및 벡터 인덱스에 대한 액세스를 사용자 지정 역할로 제한하는 벡터 버킷 정책을 구성합니다.

필요한 권한 및 IAM 역할에 대한 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Create a service role for Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)를 참조하세요. 서비스 역할에는 S3 Vectors 및 AWS KMS API 작업에 대한 권한도 있어야 합니다.

## S3 Vectors를 사용하여 지식 베이스 만들기
<a name="s3-vectors-bedrock-kb-create"></a>

두 가지 방법을 통해 S3 Vectors를 사용하는 지식 베이스를 만들 수 있습니다.

### 방법 1: Amazon Bedrock 콘솔 사용
<a name="s3-vectors-bedrock-kb-create-console"></a>

Amazon Bedrock 콘솔에서 지식 베이스를 만들 때 벡터 스토어 옵션으로 ‘S3 벡터 버킷’을 선택할 수 있습니다. 다음과 같은 두 가지 설정 옵션이 있습니다.
+ **새 벡터 스토어를 빠르게 만들기** - Amazon Bedrock이 S3 벡터 버킷과 벡터 인덱스를 만들고 사용자에게 필요한 설정으로 구성합니다. 기본적으로 벡터 버킷은 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화를 사용합니다. 선택적으로 AWS KMS를 사용하여 버킷을 암호화할 수 있습니다. 콘솔에서 **새 벡터 스토어를 빠르게 만들기**에 대한 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Create a knowledge base by connecting to a data source in Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html)를 참조하세요.
+ **만든 벡터 스토어 선택** - 이전에 만든 계정에서 기존 S3 벡터 버킷 및 벡터 인덱스를 선택합니다. Amazon Bedrock 지식 베이스 콘솔에서 S3 벡터 버킷 및 벡터 인덱스를 만드는 것에 대한 자세한 내용은 *Amazon Bedrock 사용 설명서*의 [Prerequisites for using a vector store you created for a knowledge base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)에서 S3 Vectors 탭을 참조하세요.

단계별 지침은 *Amazon Bedrock 사용 설명서*의 [Create a knowledge base by connecting to a data source in Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html)를 참조하세요.

### 방법 2: Amazon SageMaker Unified Studio 사용
<a name="s3-vectors-bedrock-kb-create-studio"></a>

[Amazon SageMaker AI Unified Studio](https://aws.amazon.com/sagemaker/unified-studio/)에서 Amazon Bedrock을 통해 S3 Vectors를 사용하여 지식 베이스를 만들고 관리할 수도 있습니다. 이를 통해 지식 베이스를 사용하는 AI 애플리케이션을 구축하고 테스트하기 위한 통합 개발 환경을 제공할 수 있습니다.

[SageMaker AI Unified Studio의 Amazon Bedrock](https://aws.amazon.com/bedrock/unifiedstudio/)은 통합 노트북 기능이 필요하고 여러 AWS ML 및 분석 서비스에 걸쳐 작업하는 사용자를 위해 설계되었습니다. 생성형 AI 애플리케이션을 구축할 때 S3 벡터 버킷을 빠르게 만들고 이를 지식 베이스의 벡터 스토어로 구성할 수 있습니다.

SageMaker AI Unified Studio에서 Amazon Bedrock과 함께 S3 Vectors를 사용하는 것에 대한 자세한 내용은 *SageMaker AI Unified Studio 사용 설명서*의 [Add a data source to your Amazon Bedrock app](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/data-sources.html)을 참조하세요.

## 지식 베이스 관리 및 쿼리
<a name="s3-vectors-bedrock-kb-manage"></a>

### 데이터 동기화 및 관리
<a name="s3-vectors-bedrock-kb-manage-sync"></a>

Amazon Bedrock 지식 베이스는 데이터 소스와 벡터 임베딩을 동기화된 상태로 유지하기 위한 수집 작업을 제공합니다. 데이터 소스를 동기화하면 Amazon Bedrock은 각 문서를 스캔하여 벡터 스토어로 인덱싱되었는지 확인합니다. [IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) 작업을 사용하여 벡터 스토어로 문서를 직접 인덱싱할 수도 있습니다. 데이터 동기화를 보장하기 위해 각 지식 베이스에 대해 별도의 벡터 스토어를 만드는 것이 좋습니다.

지식 베이스 또는 데이터 소스 리소스를 삭제할 때 Amazon Bedrock은 `Delete`(기본값) 및 `Retain`의 두 가지 데이터 삭제 정책을 제공합니다. `Delete` 정책을 선택하면 벡터 인덱스 및 벡터 버킷의 벡터가 자동으로 삭제됩니다.

### 쿼리 및 검색
<a name="s3-vectors-bedrock-kb-manage-query"></a>

지식 베이스를 설정한 후 다음을 수행할 수 있습니다.
+ API [검색](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 작업을 사용하여 소스 데이터에서 **청크를 검색**합니다.
+ [RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 작업을 사용하여 검색된 청크를 기반으로 **응답을 생성**합니다.
+ Amazon Bedrock 콘솔에서 직접 **쿼리를 테스트**합니다.

응답은 원본 소스 데이터에 대한 인용과 함께 반환됩니다.

## 제한 사항
<a name="s3-vectors-bedrock-kb-limits"></a>

Amazon Bedrock 지식 베이스와 함께 S3 Vectors를 사용하는 경우 다음 제한 사항을 염두에 두어야 합니다.
+ **시맨틱 검색 전용**: S3 Vectors는 시맨틱 검색을 지원하지만 하이브리드 검색 기능은 지원하지 않습니다.
+ **S3 Vectors 크기 제한**: 각 벡터에는 메타데이터 전체 크기 제한과 필터링 가능한 메타데이터에 대한 크기 제한이 있어, 사용자 지정 메타데이터 및 필터링 옵션에 제약이 따를 수 있습니다. Amazon Bedrock 지식 기반에서 S3 Vectors를 벡터 스토어로 사용하는 경우 벡터당 최대 1KB의 사용자 지정 메타데이터와 35개의 메타데이터 키를 연결할 수 있습니다.
+ **청킹 전략 제약 조건**: Amazon Bedrock 지식 기반에서 계층적 청킹과 함께 매우 높은 토큰 수를 사용하는 경우, 상위-하위 청크 관계 및 계층적 컨텍스트가 S3 Vectors에 필터링할 수 없는 메타데이터로 저장되므로 최대 메타데이터 크기 제한을 초과할 수 있습니다. 벡터당 메타데이터 크기 제한에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.
+ **부동 소수점 벡터만**: 바이너리 벡터 임베딩은 지원되지 않습니다.

Amazon Bedrock 지식 베이스 작업에 대한 포괄적인 지침은 *Amazon Bedrock 사용 설명서*의 [Retrieve data and generate AI responses with Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)를 참조하세요.

# S3 Vectors에 대한 AWS 리전, 엔드포인트 및 할당량
<a name="s3-vectors-regions-quotas"></a>

다음 섹션에는 Amazon S3 Tables에 대해 지원되는 AWS 리전 및 서비스 할당량이 포함되어 있습니다.

## S3 Vectors AWS 리전 및 엔드포인트
<a name="s3-vectors-regions-endpoints"></a>

Amazon S3 Vectors는 현재 다음 AWS 리전에서만 사용할 수 있습니다. AWS 서비스에 프로그래밍 방식으로 연결하려면 엔드포인트를 사용해야 합니다. AWS 서비스 엔드포인트에 대한 자세한 내용은 AWS 일반 참조의 [AWS service endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요. Amazon S3 엔드포인트에 대한 자세한 내용은 AWS 일반 참조의 [Amazon S3 endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/s3.html)를 참조하세요.

S3 Vectors 엔드포인트는 IPv6 및 IPv4를 통한 요청을 지원하는 듀얼 스택 엔드포인트입니다.

S3 Vectors는 AWS PrivateLink 인터페이스 엔드포인트와의 프라이빗 연결을 지원합니다. 자세한 내용은 [S3 벡터용 VPC 엔드포인트](s3-vectors-privatelink.md) 섹션을 참조하세요.


**S3 Vectors AWS 리전 및 엔드포인트**  

| 리전 이름 | 리전 | 엔드포인트 | 프로토콜 | 서명 버전 지원 | 
| --- | --- | --- | --- | --- | 
| 미국 동부(버지니아 북부) | us-east-1 | s3vectors.us-east-1.api.aws | HTTPS | 4 | 
| 미국 동부(오하이오) | us-east-2 | s3vectors.us-east-2.api.aws | HTTPS | 4 | 
| 미국 서부(오리곤) | us-west-2 | s3vectors.us-west-2.api.aws | HTTPS | 4 | 
| EU Central 1(프랑크푸르트) | eu-central-1 | s3vectors.eu-central-1.api.aws | HTTPS | 4 | 
| 아시아 태평양(시드니) | ap-southeast-2 | s3vectors.ap-southeast-2.api.aws | HTTPS | 4 | 
| 아시아 태평양(뭄바이) | ap-south-1 | s3vectors.ap-south-1.api.aws | HTTPS | 4 | 
| 아시아 태평양(싱가포르) | ap-southeast-1 | s3vectors.ap-southeast-1.api.aws | HTTPS | 4 | 
| 아시아 태평양(서울) | ap-northeast-2 | s3vectors.ap-northeast-2.api.aws | HTTPS | 4 | 
| 아시아 태평양(도쿄) | ap-northeast-1 | s3vectors.ap-northeast-1.api.aws | HTTPS | 4 | 
| 캐나다(중부) | ca-central-1 | s3vectors.ca-central-1.api.aws | HTTPS | 4 | 
| 유럽(아일랜드) | eu-west-1 | s3vectors.eu-west-1.api.aws | HTTPS | 4 | 
| 유럽(런던) | eu-west-2 | s3vectors.eu-west-2.api.aws | HTTPS | 4 | 
| 유럽(파리) | eu-west-3 | s3vectors.eu-west-3.api.aws | HTTPS | 4 | 
| 유럽(스톡홀름) | eu-north-1 | s3vectors.eu-north-1.api.aws | HTTPS | 4 | 

## S3 Vectors 서비스 할당량
<a name="s3-vectors-service-quotas"></a>

Quotas는 AWS 계정의 최대 서비스 리소스 또는 작업 수입니다. 제한은 S3 Vectors 리소스에 대한 서비스 할당량입니다.

S3 Vectors에 적용되는 자세한 제한은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

별도로 명시되지 않는 한 각 할당량은 AWS 리전별로 적용됩니다. 일부 할당량에 대한 증가를 요청할 수 있으며 다른 할당량은 늘릴 수 없습니다. 할당량 증가 요청에 대한 자세한 정보는 *Service Quotas 사용 설명서*의 [Requesting a quota increase](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)를 참조하세요. Amazon S3 할당량에 대한 자세한 내용은 *AWS 일반 참조*의 [Amazon S3 endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/s3.html)를 참조하세요.

# S3 Vectors의 보안
<a name="s3-vectors-security"></a>

Amazon S3 Vectors는 내구성이 뛰어난 벡터 스토리지를 제공합니다. S3 Vectors에 기록된 데이터는 99.999999999%(9개의 11)의 데이터 내구성을 위해 설계된 S3에 저장됩니다.

S3 Vectors는 저장 데이터 암호화 및 보안 데이터 전송을 포함하는 보안 접근 방식을 구현합니다. 기계 학습 애플리케이션을 위해 수백만 개의 벡터를 저장하든 시맨틱 검색 시스템을 구축하든 S3 Vectors는 조직의 규정 준수 및 데이터 보호 요구 사항을 충족하는 데 필요한 보안 제어를 제공합니다.

**Topics**
+ [S3 Vectors의 Identity and Access Management](s3-vectors-access-management.md)
+ [S3 Vectors의 데이터 보호 및 암호화](s3-vectors-data-encryption.md)
+ [S3 벡터용 VPC 엔드포인트](s3-vectors-privatelink.md)

# S3 Vectors의 Identity and Access Management
<a name="s3-vectors-access-management"></a>

S3 Vectors의 액세스 관리는 AWS 보안 모범 사례를 따르며, 승인된 사용자와 애플리케이션만 벡터 데이터에 액세스할 수 있도록 여러 계층의 제어를 제공합니다. 이 서비스는 IAM과 통합되며 ID 기반 정책과 리소스 기반 정책을 모두 지원하므로 조직 전체에서 권한을 구성하고 관리하는 방법에 유연성을 제공합니다.

## 요청 인증 및 권한 부여
<a name="s3-vectors-authenticating-authorizing"></a>

S3 Vectors는 AWS 표준 인증 및 권한 부여 메커니즘을 사용하여 벡터 버킷 및 해당 콘텐츠에 대한 액세스를 보호합니다. S3 Vectors에 대한 모든 요청은 유효한 AWS 자격 증명을 사용하여 인증되어야 하며 서비스는 ID 기반 정책, 리소스 기반 정책 및 해당 서비스 제어 정책의 조합을 기반으로 권한을 평가합니다.

인증 프로세스는 클라이언트가 AWS 자격 증명(액세스 키, AWS STS의 임시 자격 증명 또는 IAM 역할)을 사용하여 S3 Vectors에 요청할 때 시작됩니다. 서비스는 이러한 자격 증명을 검증한 다음 요청된 작업 및 대상 리소스를 기준으로 인증된 ID와 연결된 권한을 평가합니다. 이 평가 프로세스는 여러 정책 유형을 고려하고 최소 권한 원칙을 적용하여 요청을 허용할지 또는 거부할지를 결정합니다.

S3 Vectors의 권한 부여는 여러 수준의 세부 수준에서 작동합니다. 벡터 버킷 수준, 개별 벡터 인덱스 수준 또는 인덱스 내의 특정 작업에서도 액세스를 제어할 수 있습니다. 이 계층적 권한 모델을 사용하면 조직 구조 및 데이터 거버넌스 요구 사항에 맞는 정교한 액세스 제어 체계를 구현할 수 있습니다.

## 벡터 버킷에 대해 정의된 리소스 유형
<a name="s3-vectors-resource-types"></a>

S3 Vectors는 IAM 정책 및 리소스 기반 정책에서 참조할 수 있는 특정 리소스 유형을 정의합니다. 이러한 리소스 유형을 이해하는 것은 올바른 사용자 및 애플리케이션에 적절한 수준의 액세스를 제공하는 효과적인 액세스 제어 정책을 만드는 데 필수적입니다.

다음 테이블에서는 S3 Vectors에서 사용할 수 있는 리소스 유형을 설명합니다.


**S3 Vectors에서 사용 가능한 리소스 유형**  

| 리소스 유형 | ARN 형식 | 설명 | 
| --- | --- | --- | 
| VectorBucket | arn:aws:s3vectors:region:123456789012:bucket/bucket-name | 벡터 버킷을 나타내며 버킷 만들기, 삭제 또는 구성과 같은 버킷 수준 작업에 사용됩니다. | 
| Index | arn:aws:s3vectors:region:123456789012:bucket/bucket-name/index/index-name | 버킷 내의 벡터 인덱스를 나타내며 벡터 쿼리 또는 인덱스 콘텐츠 관리와 같은 인덱스별 작업에 사용됩니다. | 

## 벡터 버킷에 대한 정책 작업
<a name="s3-vectors-policy-actions"></a>

S3 Vectors는 벡터 버킷 및 인덱스에서 수행할 수 있는 다양한 작업에 해당하는 포괄적인 정책 작업 세트를 제공합니다. 이러한 작업은 특정 작업을 수행할 수 있는 사용자를 세밀하게 제어하도록 설계되어 최소 권한 원칙을 효과적으로 구현할 수 있습니다.

다음 표에는 S3 Vectors 리소스에 사용할 수 있는 모든 정책 작업이 나열되어 있습니다.


**S3 Vectors 리소스에 대한 정책 작업**  

| 리소스 유형 | API 작업 | 정책 작업 | 정책 작업 설명 | 액세스 레벨 | 조건 키 | 
| --- | --- | --- | --- | --- | --- | 
| 계정 | [ListVectorBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectorBuckets.html) | s3vectors:ListVectorBuckets | 계정 및 리전의 모든 벡터 버킷을 나열할 수 있는 권한을 부여합니다. | List |  | 
| VectorBucket | [CreateVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateVectorBucket.html) | s3vectors:CreateVectorBucket | 지정된 구성으로 새 벡터 버킷을 만들 수 있는 권한을 부여합니다. | 쓰기 | s3vectors:sseType, s3vectors:kmsKeyArn | 
| VectorBucket | [GetVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucket.html) | s3vectors:GetVectorBucket | 벡터 버킷 속성 및 구성을 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| VectorBucket | [DeleteVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucket.html) | s3vectors:DeleteVectorBucket | 빈 벡터 버킷을 삭제할 수 있는 권한을 부여합니다. | 쓰기 |  | 
| VectorBucket | [ListIndexes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListIndexes.html) | s3vectors:ListIndexes | 벡터 버킷 내의 모든 인덱스를 나열할 수 있는 권한을 부여합니다. | List |  | 
| VectorBucket | [PutVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectorBucketPolicy.html) | s3vectors:PutVectorBucketPolicy | 벡터 버킷에 리소스 기반 정책을 적용하거나 업데이트할 수 있는 권한을 부여합니다. | 권한 관리 |  | 
| VectorBucket | [GetVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucketPolicy.html) | s3vectors:GetVectorBucketPolicy | 벡터 버킷에 연결된 리소스 기반 정책을 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| VectorBucket | [DeleteVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucketPolicy.html) | s3vectors:DeleteVectorBucketPolicy | 벡터 버킷에서 리소스 기반 정책을 제거할 수 있는 권한을 부여합니다. | 권한 관리 |  | 
| Index | [CreateIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateIndex.html) | s3vectors:CreateIndex | 지정된 차원 및 메타데이터 구성으로 새 벡터 인덱스를 만들 수 있는 권한을 부여합니다. | 쓰기 |  | 
| Index | [GetIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetIndex.html) | s3vectors:GetIndex | 벡터 인덱스 속성 및 구성을 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| Index | [DeleteIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteIndex.html) | s3vectors:DeleteIndex | 벡터 인덱스와 모든 해당 콘텐츠를 삭제할 수 있는 권한을 부여합니다. | 쓰기 |  | 
| Index | [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) | (필수) s3vectors:QueryVectors | 인덱스의 벡터를 기준으로 유사성 쿼리를 수행할 수 있는 권한을 부여합니다.  **`s3vectors:QueryVectors`만** 사용하면 쿼리 벡터에서 가장 가까운 근사 최근접 벡터 키와 계산된 거리를 검색할 수 있습니다. 이 권한은 메타데이터 필터를 설정하지 않고 메타데이터를 요청하지 않는 경우에만 충분합니다(`returnMetadata` 파라미터를 false로 설정하거나 지정하지 않은 상태로 유지). | 읽기 |  | 
|  |  | (조건부 필수): s3vectors:GetVectors | 메타데이터 필터를 설정하고 요청에서 `returnMetadata`를 true로 설정하는 경우 필수입니다.  **`s3vectors:QueryVectors` 및 `s3vectors:GetVectors`를 모두** 사용하면 메타데이터 기준을 사용하여 결과를 필터링하고 관련 데이터, 메타데이터 및 쿼리 벡터에서 계산된 거리와 함께 벡터 키를 검색할 수 있습니다. | 읽기 |  | 
| Index | [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) | s3vectors:PutVectors | 인덱스에서 벡터를 추가하거나 업데이트할 수 있는 권한을 부여합니다. | 쓰기 |  | 
| Index | [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) | s3vectors:GetVectors | 벡터 키로 특정 벡터와 해당 메타데이터를 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| Index | [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) | (필수) s3vectors:ListVectors | 인덱스의 벡터 키를 나열할 수 있는 권한을 부여합니다. **`s3vectors:ListVectors`만** 사용하면 `returnData` 및 `returnMetadata` 파라미터가 모두 false이거나 지정되지 않은 경우 벡터 키를 나열할 수 있습니다. | 읽기 |  | 
|  |  | (조건부 필수): s3vectors:GetVectors | 요청에서 `returnData` 또는 `returnMetadata` 파라미터를 true로 설정하는 경우 필요합니다.  **`s3vectors:ListVectors` 및 `s3vectors:GetVectors`를 모두** 사용하면 `returnData` 및 `returnMetadata`를 true로 설정하여 벡터 키와 관련 데이터 및 메타데이터를 검색할 수 있습니다. | 읽기 |  | 
| Index | [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html) | s3vectors:DeleteVectors | 인덱스에서 특정 벡터를 삭제할 수 있는 권한을 부여합니다. | 쓰기 |  | 

이러한 작업은 다양한 방식으로 결합하여 특정 액세스 요구 사항에 맞는 정책을 만들 수 있습니다. 예를 들어 `s3vectors:GetVectorBucket`, `s3vectors:ListIndexes`, `s3vectors:QueryVectors` 및 `s3vectors:GetVectors` 작업을 포함하는 읽기 전용 정책 또는 쿼리 및 벡터 검색 권한을 포함하지만 인덱스 만들기 또는 삭제와 같은 관리 작업은 제외하는 정책을 만들 수 있습니다.

## 벡터 버킷에 사용되는 조건 키
<a name="s3-vectors-condition-keys"></a>


**벡터 버킷에 사용되는 조건 키**  

|  | 조건 키 | 설명 | 형식 | 
| --- | --- | --- | --- | 
| 1 | s3vectors:sseType | 서버 측 암호화 유형을 기준으로 액세스를 필터링합니다. 유효한 값: AES256 \$1 aws:kms | 문자열 | 
| 2 | s3vectors:kmsKeyArn | 벡터 버킷을 암호화하는 데 사용되는 키의 AWS AWS KMS 키 ARN을 기준으로 액세스를 필터링합니다. | ARN | 

# S3 Vectors ID 기반 정책 예제
<a name="s3-vectors-iam-policies"></a>

IAM ID 기반 정책은 IAM 사용자, 그룹 또는 역할에 연결하여 S3 Vectors 리소스에서 수행할 수 있는 작업을 정의하는 JSON 문서입니다. 이러한 정책은 요청하는 ID의 컨텍스트에서 평가되며 AWS 환경 전체에서 권한을 관리하는 중앙 집중식 방법을 제공합니다. ID 기반 정책은 누가 어떤 권한을 갖고 있는지에 대한 명확한 감사 추적을 제공하며, 액세스 요구 사항이 변화함에 따라 쉽게 수정할 수 있습니다.

S3 Vectors에 대한 ID 기반 정책을 설계할 때는 벡터 데이터와 상호 작용할 다양한 유형의 사용자 및 애플리케이션을 고려하세요. 일반적인 패턴에는 벡터를 쿼리해야 하는 데이터 과학자, 벡터 데이터를 로드하고 관리해야 하는 데이터 엔지니어, 버킷 구성을 완전히 제어해야 하는 관리자, 특정 벡터 인덱스에 대한 특정 읽기 또는 쓰기 액세스가 필요한 애플리케이션이 포함됩니다.

## 정책 예제
<a name="s3-vectors-iam-policies-examples"></a>

### 관리 액세스 정책
<a name="s3-vectors-iam-policies-admin"></a>

이 정책은 플랫폼 관리자 또는 DevOps 팀에 적합한 S3 Vectors 리소스에 대한 전체 관리 액세스를 제공합니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAdministrativeAccess",
            "Effect": "Allow",
            "Action": [
                "s3vectors:CreateVectorBucket",
                "s3vectors:PutVectorBucketPolicy",
                "s3vectors:DeleteVectorBucket",
                "s3vectors:DeleteVectorBucketPolicy",
                "s3vectors:GetVectorBucket",
                "s3vectors:GetVectorBucketPolicy",
                "s3vectors:ListVectorBuckets",
                "s3vectors:CreateIndex",
                "s3vectors:DeleteIndex",
                "s3vectors:GetIndex",
                "s3vectors:ListIndexes",
                "s3vectors:DeleteVectors",
                "s3vectors:GetVectors",
                "s3vectors:ListVectors",
                "s3vectors:PutVectors",
                "s3vectors:QueryVectors"
            ],
            "Resource": "*"
        }
    ]
}
```

### 애플리케이션별 액세스 정책
<a name="s3-vectors-iam-policies-app"></a>

이 정책은 지정된 벡터 인덱스에서 특정 작업을 수행해야 하는 애플리케이션을 위해 설계되었습니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowApplicationVectorAccess",
            "Effect": "Allow",
            "Action": [
                "s3vectors:QueryVectors",
                "s3vectors:GetVectors",
                "s3vectors:PutVectors",
                "s3vectors:ListVectors"
            ],
            "Resource": [
                "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket/index/product-recommendations",
                "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket/index/content-similarity"
            ]
        },
        {
            "Sid": "AllowGetIndex",
            "Effect": "Allow",
            "Action": "s3vectors:GetIndex",
            "Resource": "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket/index/*"
        },
        {
            "Sid": "AllowIndexInspection",
            "Effect": "Allow",
            "Action": "s3vectors:ListIndexes",
            "Resource": "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket"
        }  
    ]
}
```

# S3 Vectors 리소스 기반 정책 예시
<a name="s3-vectors-resource-based-policies"></a>

리소스 기반 정책은 리소스에 연결됩니다. 벡터 버킷에 대한 리소스 기반 정책을 만들 수 있습니다. S3 Vectors에 대한 리소스 기반 정책은 벡터 버킷에 직접 연결하는 JSON의 표준 AWS 정책 형식을 사용하여 버킷 및 해당 콘텐츠에 대한 액세스를 제어합니다.

사용자, 그룹 또는 역할에 연결된 ID 기반 정책과 달리 리소스 기반 정책은 리소스 자체(벡터 버킷)에 연결되며 다른 AWS 계정의 위탁자에게 권한을 부여할 수 있습니다. 따라서 조직 경계를 넘어 벡터 데이터를 공유하거나 액세스 중인 특정 리소스를 기반으로 세분화된 액세스 제어를 구현해야 하는 시나리오에 적합합니다.

리소스 기반 정책은 ID 기반 정책과 함께 평가되며 유효 권한은 모든 해당 정책의 조합에 의해 결정됩니다. 즉, 리소스 기반 정책이 명시적으로 권한을 부여하지 않는 한 작업을 수행하려면 위탁자에게 ID 기반 정책(사용자/역할에 연결됨)과 리소스 기반 정책(버킷에 연결됨) 모두의 권한이 필요합니다.

## 예제 1: 교차 계정 액세스 정책
<a name="s3-vectors-resource-based-policies-example1"></a>

이 정책은 다른 AWS 계정의 사용자에게 특정 권한을 부여하는 방법을 보여줍니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountBucketAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam:123456789012:role/Admin"
            },
            "Action": [
                "s3vectors:CreateIndex",
                "s3vectors:ListIndexes",
                "s3vectors:QueryVectors",
                "s3vectors:PutVectors",
                "s3vectors:DeleteIndex"
            ],
            "Resource": [
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/*",
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket"
            ]
        }
    ]
}
```

## 예제 2: 벡터 인덱스 수준 작업 거부
<a name="s3-vectors-resource-based-policies-example2"></a>

이 정책은 IAM 역할에 대한 특정 벡터 인덱스 수준 작업을 거부하는 방법을 보여줍니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyIndexLevelActions",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam:123456789012:role/External-Role-Name"
            },
            "Action": [
                "s3vectors:QueryVectors",
                "s3vectors:PutVectors",
                "s3vectors:DeleteIndex",
                "s3vectors:GetVectors",
                "s3vectors:GetIndex",
                "s3vectors:DeleteVectors",
                "s3vectors:CreateIndex",
                "s3vectors:ListVectors"
            ],
            "Resource": "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/*"
        }
    ]
}
```

## 예제 3: 벡터 인덱스 및 버킷 수준 모두에서 수정 작업 거부
<a name="s3-vectors-resource-based-policies-example3"></a>

이 정책은 여러 리소스를 지정하여 벡터 인덱스 및 버킷 수준 작업 모두에 대한 수정 요청을 거부하는 방법을 보여줍니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyModificationActionsAtBucketandIndexLevels",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam:123456789012:role/External-Role-Name"
            },
            "Action": [
                "s3vectors:CreateVectorBucket",
                "s3vectors:DeleteVectorBucket",
                "s3vectors:PutVectorBucketPolicy",
                "s3vectors:DeleteVectorBucketPolicy",                
                "s3vectors:CreateIndex",
                "s3vectors:DeleteIndex",
                "s3vectors:PutVectors",
                "s3vectors:DeleteVectors"
            ],
            "Resource": [
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/*",
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket"
            ]
        }
    ]
}
```

# S3 Vectors의 데이터 보호 및 암호화
<a name="s3-vectors-data-encryption"></a>

Amazon S3 Vectors는 벡터 데이터에 대해 99.999999999%(11개의 9)의 내구성을 제공하므로 벡터 스토리지 요구 사항에 대해 탁월한 신뢰성을 보장합니다. 이러한 내구성은 하드웨어 장애 또는 기타 중단이 발생하더라도 데이터 무결성과 가용성을 유지하도록 설계된 Amazon S3의 검증된 인프라를 기반으로 합니다.

S3 Vectors의 데이터 보호에는 저장 및 전송 중 모두에 벡터 데이터를 보호하도록 설계된 여러 계층의 보안 제어가 포함됩니다.

기본적으로 Amazon S3 Vectors 벡터 버킷의 모든 새 벡터는 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화를 사용합니다. SSE-S3 암호화로 벡터 버킷을 만들면 버킷의 모든 후속 작업은 자동으로 암호화를 사용합니다.

또한 S3 Vectors는 AWS Key Management Service(KMS)와 통합되어 유연한 암호화 키 관리 옵션을 제공하므로 권한 제어 및 감사 가능성을 위해 고객 관리형 키를 선택할 수 있습니다.

벡터 버킷 내에 벡터 인덱스를 생성할 때 선택적으로 벡터 버킷 수준 암호화 설정을 재정의하고 벡터 인덱스 수준에서 암호화 구성(SSE-S3 또는 KMS)을 제공할 수 있습니다. 벡터 인덱스 생성 시 특정 암호화를 지정하지 않으면 인덱스가 속한 벡터 버킷에서 암호화 구성을 상속합니다.

## Amazon S3 벡터 버킷 및 인덱스에 대한 서버 측 암호화 동작 설정
<a name="s3-vectors-setting-encryption"></a>

S3 Vectors의 암호화 구성은 벡터 버킷을 만들 때 지정할 수 있는 기본 보안 설정입니다. 이 설계는 버킷에 저장된 모든 벡터 데이터가 생성 시점부터 암호화되도록 합니다. 기본적으로 암호화 구성은 버킷 내의 모든 벡터, 벡터 인덱스 및 메타데이터에 적용되므로 벡터 버킷의 전체 벡터 데이터세트에서 일관된 보호를 제공합니다. 또한 선택적으로 벡터 버킷 수준 암호화 설정을 재정의하고 벡터 인덱스 수준에서 전용 암호화 구성(SSE-S3 또는 AWS KMS)을 제공할 수 있습니다.

**중요**  
벡터 버킷을 만든 후에는 벡터 버킷의 암호화 설정을 변경할 수 없습니다. 규정 준수 요구 사항, 키 관리 기본 설정, 기존 보안 인프라와의 통합을 포함하여 버킷 생성 프로세스 중에 암호화 요구 사항을 신중하게 고려해야 합니다.

벡터 버킷 수준에서 SSE-S3 또는 SSE-KMS 암호화 유형을 설정하면 기본적으로 버킷 내의 모든 벡터 인덱스 및 벡터에 적용됩니다. 암호화 구성은 벡터 데이터 자체뿐만 아니라 연결된 모든 메타데이터에도 적용됩니다.

또한 선택적으로 벡터 버킷 수준 암호화 설정을 재정의하고 벡터 인덱스 수준에서 전용 암호화 구성(SSE-S3 또는 KMS)을 제공할 수 있습니다. 벡터 인덱스를 만든 후에는 벡터 인덱스의 암호화 설정을 변경할 수 없습니다.

### SSE-S3 암호화 사용
<a name="s3-vectors-sse-s3-encryption"></a>

Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화는 AWS가 암호화 프로세스의 모든 측면을 관리하는 벡터 버킷을 위한 간단하고 효과적인 암호화 솔루션을 제공합니다. 이 암호화 방법은 `AES-256` 암호화를 사용하며 운영 오버헤드를 최소화하면서 강력한 보안을 제공하도록 설계되어 암호화 키를 관리할 필요 없이 강력한 암호화를 조직에 제공합니다.

Amazon S3는 SSE-S3를 사용하여 암호화 키의 생성, 교체 및 관리를 자동으로 처리합니다. SSE-S3는 추가 구성이나 지속적인 관리 요구 사항 없이 강력한 보안을 제공합니다. 암호화 및 해독 프로세스는 서비스에서 자동으로 처리되며 표준 S3 Vectors 요금 외에 SSE-S3 암호화를 사용하는 데 따르는 추가 요금은 없습니다.

### SSE-KMS 암호화 사용
<a name="s3-vectors-sse-kms-encryption"></a>

AWS Key Management Service 키(SSE-KMS)를 사용한 서버 측 암호화는 암호화 키에 대한 향상된 제어를 제공하고 키 사용에 대한 세부 감사 로깅을 가능하게 합니다. 이 암호화 방법은 엄격한 규정 준수 요구 사항이 있는 조직, 사용자 지정 키 교체 정책을 구현해야 하는 조직 또는 데이터 액세스에 대한 자세한 감사 추적이 필요한 환경에 적합합니다.

SSE-KMS를 사용하면 고객 관리형 키(CMK)를 사용하여 벡터 데이터를 암호화할 수 있습니다. 고객 관리형 키는 최고 수준의 제어를 제공하므로 AWS CloudTrail을 통해 키 정책을 정의하고, 키를 활성화 또는 비활성화하고, 키 사용을 모니터링할 수 있습니다. 이러한 제어 수준을 통해 SSE-KMS는 특정 데이터 거버넌스 요구 사항이 있는 규제 대상 산업 또는 조직에 특히 적합합니다.

고객 관리형 키와 함께 SSE-KMS를 사용하는 경우 키를 사용하여 데이터를 암호화하고 해독할 수 있는 사용자를 완벽하게 제어할 수 있습니다. 키에 액세스할 수 있는 사용자, 역할 또는 서비스를 지정하는 세부 키 정책을 만들 수 있습니다.

#### SSE-KMS에 대한 중요 고려 사항
<a name="s3-vectors-sse-kms-considerations"></a>
+ **KMS 키 형식 요구 사항:** S3 Vectors에서는 전체 Amazon 리소스 이름(ARN) 형식을 사용하여 KMS 키를 지정해야 합니다. 키 ID 또는 키 별칭은 지원되지 않습니다.
+ **서비스 위탁자 권한:** S3 Vectors에서 고객 관리형 키를 사용하는 경우, S3 Vectors 서비스 위탁자에게 KMS 키를 사용할 수 있는 권한을 명시적으로 부여해야 합니다. 이 요구 사항은 서비스가 사용자를 대신하여 데이터를 암호화하고 해독할 수 있도록 보장합니다. 액세스가 필요한 서비스 위탁자는 `indexing.s3vectors.amazonaws.com`입니다.

**예제: S3 Vectors에 대한 KMS 키 정책**

S3 Vectors와 함께 고객 관리형 KMS 키를 사용하려면 S3 Vectors 서비스 위탁자에 대한 권한을 포함하도록 키 정책을 업데이트해야 합니다. 다음은 포괄적인 키 정책 예제입니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3VectorsServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "indexing.s3vectors.amazonaws.com"
            },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3vectors:aws-region:123456789012:bucket/*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ForAnyValue:StringEquals": {
                    "kms:EncryptionContextKeys": ["aws:s3vectors:arn", "aws:s3vectors:resource-id"]
                }
            }
        },
        {
            "Sid": "AllowApplicationAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam:123456789012:role/VectorApplicationRole",
                    "arn:aws:iam:123456789012:user/DataScientist"
                ]
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "s3vectors.aws-region.amazonaws.com"
                },
                "ForAnyValue:StringEquals": {
                    "kms:EncryptionContextKeys": ["aws:s3vectors:arn", "aws:s3vectors:resource-id"]
                }
            }
        }
    ]
}
```
+ **필수 KMS 권한**
  + S3 Vectors 서비스 위탁자 권한:
    + `kms:Decrypt` - 백그라운드 작업에서 인덱스를 유지 관리하고 최적화하기 위해 고객 관리형 키의 S3 Vectors 서비스 위탁자(`indexing.s3vectors.amazonaws.com`)에 의해 요구됩니다.
  + IAM 위탁자 권한
    + `kms:Decrypt` - 모든 벡터 수준 작업([PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html), [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html), [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html), [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html), [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html))에 필요합니다.
    + `kms:GenerateDataKey` - 고객 관리형 키를 사용하여 벡터 버킷을 만드는 데 필요합니다.
+ **교차 계정 액세스 고려 사항:** SSE-KMS를 사용하여 교차 계정 액세스 패턴을 구현할 때, KMS 키 정책이 다른 계정의 적절한 위탁자로부터 액세스를 허용하는지 확인해야 합니다. 키 ARN 형식은 액세스 중인 계정 컨텍스트에 관계없이 키에 대한 명확한 참조를 제공하므로 교차 계정 시나리오에서 특히 중요합니다.

# S3 Vectors에서 암호화 설정
<a name="s3-vectors-sectting-encryption"></a>

이 주제에서는 S3 벡터 버킷 및 인덱스의 암호화 구성을 설정하는 방법을 설명합니다.

시작하기 전에 다음 항목이 준비되었는지 확인합니다.
+ 버킷 및 인덱스 속성을 볼 수 있는 적절한 권한.

## S3 콘솔 사용
<a name="viewing-encryption-settings-in-the-console"></a>

**벡터 버킷의 암호화 구성**

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

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

1. [**Bucket Name**]에서 버킷 이름을 입력합니다.

   버킷 이름은 다음과 같아야 합니다.
   + 이 AWS 리전에 대해 계정 내에서 고유해야 합니다.
   + 3\$163자 이내여야 합니다.
   + 소문자, 숫자 및 하이픈(-)만 포함해야 합니다.

1. **암호화**에서 선택합니다.
   + **암호화 유형 지정** - 특정 암호화 방법을 선택합니다.
     + **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)** - SSE-S3를 사용하면 Amazon S3가 암호화 키의 생성, 교체 및 관리를 자동으로 처리합니다.
     + **AWS Key Management Service 키(SSE-KMS)를 사용한 서버 측 암호화** - SSE-S3와 유사하지만, AWS KMS에서 고객 관리형 키(CMK)를 사용하므로 키를 더 세부적으로 제어할 수 있습니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 참조하세요.

       이 옵션을 선택하는 경우 **AWS KMS 키**에서 다음 옵션 중 하나를 선택합니다.
       + **AWS KMS 키 중에 선택** - 드롭다운 목록에서 기존 KMS 키를 선택합니다.
       + **AWS KMS 키 ARN 입력** - KMS 키의 Amazon 리소스 이름(ARN)을 입력합니다.
       + **KMS 키 생성** – AWS KMS 콘솔에서 새로운 고객 관리형 키를 만듭니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Creating symmetric customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)를 참조하세요.
**참고**  
KMS 키에는 다음 요구 사항이 적용됩니다.  
AWS KMS 키 ID는 비워둘 수 없습니다.
KMS 키는 이 버킷이 만들어지는 리전과 동일한 리전에 있어야 합니다.
AWS KMS 키 ARN은 ‘arn:aws:kms:’로 시작해야 합니다.
**중요**  
벡터 버킷을 만든 후에는 암호화 설정을 변경할 수 없습니다.

1. **AWS KMS 키 ARN 입력**을 선택한 경우 제공된 텍스트 필드에 ARN을 입력합니다.

1. **KMS 키 생성**을 선택하면 콘솔이 새 탭에서 AWS KMS 콘솔을 엽니다. KMS 키를 만들기 위한 지침은 *AWS Key Management Service 개발자 안내서*의 [Creating symmetric customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)를 참조하세요.

1. **벡터 버킷 생성**을 선택합니다.
**중요**  
KMS 암호화를 사용하는 경우 버킷의 객체에 액세스해야 하는 IAM 위탁자에 선택한 KMS 키에 필요한 KMS 권한(kms:Decrypt)이 있는지 확인합니다.

**벡터 인덱스의 암호화를 구성하려면**

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

1. 탐색 창에서 **벡터 버킷**을 선택합니다.

1. 벡터 버킷 목록에서 벡터 인덱스를 만들려는 버킷의 이름을 선택합니다.

1. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

1. **벡터 인덱스 이름**에 벡터 인덱스의 이름을 입력합니다.

   벡터 인덱스 이름은 벡터 버킷 내에서 고유해야 합니다. 인덱스 이름은 3\$163자 이내로 작성해야 합니다. 유효한 문자는 소문자(a\$1z), 숫자(0\$19), 하이픈(-), 점(.)입니다. 벡터 인덱스 이름 지정 요구 사항에 대한 자세한 내용은 [벡터 버킷 이름 지정 규칙](s3-vectors-buckets-naming.md) 섹션을 참조하세요.

1. **차원**에 각 벡터의 값 수를 입력합니다.
**참고**  
**차원** 값은 각 벡터에 포함될 숫자 값의 수를 결정합니다.
이 인덱스에 추가된 모든 벡터에는 정확히 이 수의 값이 있어야 합니다.
차원은 1에서 4,096 사이여야 합니다.
차원이 클수록 스토리지 공간이 더 많이 필요합니다.
임베딩 모델의 출력 차원에 따라를 선택합니다.
차원 요구 사항에 대한 자세한 내용은 [한계 및 제한](s3-vectors-limitations.md) 섹션을 참조하세요.

1. **거리 지표**에서 다음 옵션 중 하나를 선택합니다.
   + **코사인** - 벡터 간 각도의 코사인을 측정합니다. 정규화된 벡터 및 방향이 크기보다 중요한 경우에 가장 적합합니다.
   + **유클리드** - 벡터 간의 직선 거리를 측정합니다. 방향과 크기가 모두 중요한 경우에 가장 적합합니다.

1. (선택 사항) **필터링 불가능한 메타데이터** 아래에서 저장되지만 필터링에 사용되지 않는 메타데이터 키를 구성합니다.

   필터링 불가능한 메타데이터 키 추가:

   1. **키 추가**를 선택합니다.

   1. 키 이름(1\$163자, 이 벡터 인덱스 내에서 고유)을 입력합니다.

   1. 반복하여 추가 키(최대 10개의 키)를 추가합니다.
**참고**  
벡터 인덱스를 만든 후 벡터 데이터를 삽입할 때 필터링 가능한 메타데이터를 각 벡터에 키-값 페어로 연결할 수 있습니다. 기본적으로 벡터에 연결된 모든 메타데이터 키는 필터링이 가능하며, 유사성 쿼리에서 필터로 사용할 수 있습니다. 벡터 인덱스 만들기 중에 필터링 불가능한 것으로 지정된 메타데이터 키만 필터링에서 제외됩니다. 총 메타데이터 제약 조건과 필터링 가능한 메타데이터 제약 조건을 포함하여 벡터당 메타데이터 크기 제한에 대한 자세한 내용은 [ 한계 및 제한한계 및 제한  Amazon S3 Vectors의 서비스 한계 및 제한  S3 Vectors 제한 사항서비스 한도할당량제한 사항  Amazon S3 Vectors에는 벡터 스토리지 및 검색 애플리케이션을 계획할 때 알아야 할 특정 한계 및 제한있습니다.   계정의 AWS 리전당 벡터 버킷 수: 10,000개   벡터 버킷당 벡터 인덱스 수: 10,000개   벡터 인덱스당 벡터: 최대 20억 개   벡터당 차원 값 수: 1\$14,096개   벡터당 총 메타데이터: 최대 40KB(필터링 가능 \$1 필터링 불가능)   벡터당 총 메타데이터 키 수: 최대 50개   벡터당 필터링 가능한 메타데이터: 최대 2KB   벡터 인덱스당 필터링 불가능한 메타데이터 키 수: 최대 10개   벡터 인덱스별 초당 PutVectors 및 DeleteVectors 요청 통합: 최대 1,000개    벡터 인덱스별 초당 삽입 및 삭제된 결합된 벡터: 최대 2,500개    요청 페이로드 크기: 최대 20MiB   [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) API 직접 호출당 벡터 수: 최대 500개   [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html) API 직접 호출당 벡터 수: 최대 500개   [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) API 직접 호출당 벡터 수: 최대 100개   [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) 요청당 Top-K 결과: 최대 100개   [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) 응답의 페이지당 나열되는 벡터 수: 최대 1,000개   [ListVectorBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectorBuckets.html) 응답의 페이지당 나열된 벡터 버킷 수: 최대 500개.   [ListIndexes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListIndexes.html) 응답의 페이지당 나열된 벡터 인덱스: 최대 500개.   ListVectors API 직접 호출의 병렬 목록에 대한 세그먼트 수: 최대 16개   ](s3-vectors-limitations.md) 섹션을 참조하세요.

1. **암호화**에서 **암호화 유형 지정**을 선택하고 다음 옵션 중 하나를 선택합니다.
   + **암호화 버킷 설정 사용** - Amazon S3는 벡터 버킷 암호화 설정을 적용하여 벡터 인덱스의 벡터 데이터를 암호화합니다.
   + **암호화 버킷 설정 재정의** - 벡터 인덱스에 대한 특정 암호화 유형을 지정합니다.
     + **Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)** - SSE-S3를 사용하면 Amazon S3가 암호화 키의 생성, 교체 및 관리를 자동으로 처리합니다.
     + **AWS Key Management Service 키(SSE-KMS)를 사용한 서버 측 암호화** - SSE-S3와 유사하지만, AWS KMS에서 고객 관리형 키(CMK)를 사용하므로 키를 더 세부적으로 제어할 수 있습니다. 고객 관리형 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 참조하세요.

       이 옵션을 선택하는 경우 **AWS KMS 키**에서 다음 옵션 중 하나를 선택합니다.
       + **AWS KMS 키 중에 선택** - 드롭다운 목록에서 기존 KMS 키를 선택합니다.
       + **AWS KMS 키 ARN 입력** - KMS 키의 Amazon 리소스 이름(ARN)을 입력합니다.
       + **KMS 키 생성** – AWS KMS 콘솔에서 새로운 고객 관리형 키를 만듭니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Creating symmetric customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)를 참조하세요.
**참고**  
KMS 키에는 다음 요구 사항이 적용됩니다.  
AWS KMS 키 ID는 비워둘 수 없습니다.
KMS 키는 이 버킷이 만들어지는 리전과 동일한 리전에 있어야 합니다.
AWS KMS 키 ARN은 ‘arn:aws:kms:’로 시작해야 합니다.
**중요**  
벡터 인덱스를 만든 후에는 암호화 설정을 변경할 수 없습니다.
**AWS KMS 키 ARN 입력**을 선택한 경우 제공된 텍스트 필드에 ARN을 입력합니다.
**KMS 키 생성**을 선택하면 콘솔이 새 탭에서 AWS KMS 콘솔을 엽니다. KMS 키를 만들기 위한 지침은 *AWS Key Management Service 개발자 안내서*의 *Creating symmetric customer managed keys*를 참조하세요.
**중요**  
KMS 암호화를 사용하는 경우 버킷의 객체에 액세스해야 하는 IAM 위탁자에 선택한 KMS 키에 필요한 KMS 권한(kms:Decrypt)이 있는지 확인합니다.

1. **태그(선택 사항)**에서 태그를 키-값 페어로 추가하고 AWS Billing and Cost Management를 사용하여 벡터 인덱스 비용을 추적하고 구성할 수 있습니다. **키**와 **값**을 입력합니다. 태그를 더 추가하려면 **태그 추가(Add Tag)**를 선택합니다. 벡터 인덱스에 최대 50개의 태그를 입력할 수 있습니다. 자세한 내용은 [S3 벡터 버킷에서 태그 사용](s3-vectors-tags.md) 섹션을 참조하세요.

1. 구성을 신중하게 검토합니다.
**참고**  
이러한 설정은 만든 후에 변경할 수 없습니다.

1. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

## AWS CLI 사용
<a name="using-the-aws-cli"></a>

다음 예제에서는 AWS CLI를 사용하여 SSE-S3 암호화 구성으로 벡터 버킷을 만드는 방법을 보여줍니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors create-vector-bucket \
        --vector-bucket-name "amzn-s3-demo-vector-bucket" \
        --encryption-configuration '{"sseType": "AES256"}'
```

다음 예제에서는 고객 관리형 키와 함께 SSE-KMS 암호화 구성을 사용하는 벡터 버킷을 만드는 방법을 보여줍니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors create-vector-bucket \
        --vector-bucket-name "amzn-s3-demo-vector-bucket" \
        --encryption-configuration '{"sseType": "aws:kms", "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"}'
```

다음 예제에서는 AWS CLI를 사용하여 SSE-S3 암호화 구성으로 벡터 인덱스를 만드는 방법을 보여줍니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors create-index \
        --vector-bucket-name "amzn-s3-demo-vector-bucket" \
        --index-name "amzn-s3-demo-vector-index" \
        --encryption-configuration '{"sseType": "AES256"}'
```

다음 예제에서는 고객 관리형 키와 함께 SSE-KMS 암호화 구성을 사용하는 벡터 인덱스를 만드는 방법을 보여줍니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors create-index \
        --vector-bucket-name "amzn-s3-demo-vector-bucket" \
        --index-name "amzn-s3-demo-vector-index" \
        --encryption-configuration '{"sseType": "aws:kms", "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890abc"}'
```

다음 예제에서는 벡터 버킷의 암호화 설정을 사용하여 벡터 인덱스를 생성하는 방법을 보여줍니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors create-index \
        --vector-bucket-name "amzn-s3-demo-vector-bucket" \
        --index-name "amzn-s3-demo-vector-index" \
```

# S3 Vectors에서 암호화 구성 보기
<a name="s3-vectors-viewing-encryption"></a>

벡터 버킷을 생성한 후 콘솔을 사용하여 암호화 구성을 확인할 수 있습니다. 또는 AWS REST API, AWS CLI 또는 AWS SDK를 통해 GetVectorBucket 및 GetIndex API 작업을 사용할 수 있습니다.

## AWS CLI 사용
<a name="s3-vectors-viewing-encryption-cli"></a>

`get-vector-bucket` 명령을 사용하여 암호화 구성을 포함한 자세한 버킷 정보를 검색합니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors get-vector-bucket \
  --vector-bucket-name amzn-s3-demo-vector-bucket
```

`get-index` 명령을 사용하여 암호화 구성을 포함한 자세한 벡터 인덱스 정보를 검색합니다. 이 예제를 사용하려면 *사용자 입력 자리 표시자*를 사용자의 정보로 대체합니다.

```
aws s3vectors get-index \
  --vector-bucket-name amzn-s3-demo-vector-bucket
  --index-name amzn-s3-demo-vector-index
```

# S3 벡터용 VPC 엔드포인트
<a name="s3-vectors-privatelink"></a>

가상 프라이빗 클라우드(VPC)에서 S3 벡터에 액세스하기 위해 Amazon S3는 AWS PrivateLink(PrivateLink)를 사용하여 인터페이스 VPC 엔드포인트를 지원합니다. PrivateLink는 인터넷 게이트웨이 또는 NAT 디바이스 없이 VPC와 S3 벡터 간에 프라이빗 연결을 제공합니다. 인터페이스 엔드포인트는 VPC의 서브넷에서 프라이빗 IP 주소가 할당된 하나 이상의 탄력적 네트워크 인터페이스(ENI)로 표시됩니다. 인터페이스 엔드포인트를 통해 S3 벡터로 보내는 요청은 AWS 네트워크에 유지됩니다.

또한 AWS Direct Connect 또는 AWS 가상 프라이빗 네트워크(AWS VPN)를 통해 온프레미스 애플리케이션에서 VPC의 인터페이스 엔드포인트에 액세스할 수 있습니다. VPC를 온프레미스 네트워크에 연결하는 방법에 대한 자세한 내용은 *[AWS Direct Connect 사용 설명서](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)* 및 *[AWS Site-to-Site VPN 사용 설명서](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)*를 참조하세요. 인터페이스 엔드포인트에 대한 일반적인 내용은 *AWS PrivateLink 사용 설명서*의 [인터페이스 VPC 엔드포인트를 사용하여 AWS 서비스에 액세스](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)를 참조하세요.

## S3 벡터와 함께 PrivateLink를 사용할 때의 이점
<a name="s3-vectors-privatelink-benefits"></a>

S3 벡터와 함께 PrivateLink를 사용하면 다음과 같은 몇 가지 보안 및 운영 이점을 얻을 수 있습니다.
+ **보안 강화**: VPC와 S3 벡터 간의 트래픽은 AWS 네트워크 내에 유지되며 인터넷을 통과하지 않습니다.
+ **간소화된 네트워크 아키텍처**: 인터넷 게이트웨이, NAT 디바이스 또는 VPN 연결을 구성하지 않고 S3 벡터에 액세스합니다.
+ **세분화된 액세스 제어**: VPC 엔드포인트 정책을 사용하여 엔드포인트를 통해 액세스할 수 있는 벡터 버킷 및 벡터 인덱스를 제어합니다.
+ **규정 준수 지원**: 민감한 데이터에 대한 프라이빗 네트워크 연결을 요구하는 규제 요구 사항을 충족합니다.

## VPC 엔드포인트 DNS 이름 및 확인
<a name="s3-vectors-privatelink-endpoints"></a>

VPC 엔드포인트를 생성할 때 S3 Vectors에서는 두 가지 유형의 엔드포인트별 DNS 이름, 즉 리전용과 영역용 DNS 이름을 생성합니다.

S3 Vectors에 대한 인터페이스 VPC 엔드포인트의 리전 및 영역 DNS 이름은 다음과 같습니다.
+ **리전 DNS 이름**: `vpce-1a2b3c4d-5e6f.s3vectors.region.vpce.amazonaws.com` - 리전 VPC 엔드포인트 DNS 이름입니다. 항상 프라이빗 IP 주소로 확인합니다.
+ **영역 DNS 이름**: `vpce-1a2b3c4d-5e6f-availability_zone_code.s3vectors.region.vpce.amazonaws.com` - 영역별 VPC 엔드포인트 DNS 이름입니다. 항상 프라이빗 IP 주소로 확인합니다.

VPC 엔드포인트에 대해 프라이빗 DNS를 활성화한 경우 퍼블릭 엔드포인트 `s3vectors.region.api.aws`의 DNS 이름을 엔드포인트 서비스의 프라이빗 DNS 이름으로 사용할 수도 있습니다.

## 인터페이스 엔드포인트의 IP 주소 지정
<a name="s3-vectors-privatelink-ip-support"></a>

S3 Vectors 리전, 영역 및 프라이빗 DNS 엔드포인트는 AWS PrivateLink에 대해 IPv4, IPv6 및 듀얼 스택 IP 유형을 지원합니다. 자세한 내용은 *AWS PrivateLink 가이드*의 [IP 주소 유형](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-service-ip-address-type) 및 [AWS 서비스에 대한 DNS 레코드 IP 유형](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-services-dns-record-ip-type)을 참조하세요.

다음은 VPC에서 IPv6을 통해 S3 Vectors 벡터 인덱스 및 벡터 버킷에 액세스하기 전에 알아야 할 몇 가지 사항입니다.
+ 벡터에 액세스하는 데 사용하는 클라이언트와 S3 Vectors 클라이언트 모두 듀얼 스택이 활성화되어 있어야 합니다.
+ VPC 보안 그룹에 IPv6가 설정되어 있지 않은 경우 IPv6 트래픽을 허용하도록 규칙을 구성해야 합니다. 자세한 내용은 *VPC 사용 설명서*의 [3단계: 보안 그룹 규칙 업데이트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-sg-rules) 및 *Amazon EC2 사용 설명서*의 [보안 그룹 규칙 구성](https://docs.aws.amazon.com/ec2/latest/userguide/working-with-security-groups.html#adding-security-group-rule)을 참조하세요.
+ VPC에 IPv6 CIDR이 할당되지 않은 경우 VPC에 IPv6 CIDR 블록을 수동으로 추가해야 합니다. 자세한 내용은 *AWS PrivateLink 가이드*의 [VPC에 대한 IPv6 지원 추가](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-ipv6) 섹션을 참조하세요.
+ IP 주소 필터링 IAM 정책을 사용하는 경우 IPv6 주소를 처리하도록 업데이트해야 합니다. IAM으로 액세스 권한을 관리하는 방법에 대한 자세한 내용은 [S3 Vectors의 Identity and Access Management](s3-vectors-access-management.md) 단원을 참조하세요.

## S3 Vectors에 대한 VPC 인터페이스 엔드포인트 생성
<a name="s3-vectors-privatelink-create"></a>

VPC 콘솔, AWS CLI, AWS SDK 또는 AWS API를 사용하여 S3 Vectors를 위한 VPC 인터페이스 엔드포인트를 생성할 수 있습니다.

### S3 콘솔 사용
<a name="s3-vectors-privatelink-create-console"></a>

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

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

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

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

1. **서비스**에서 `s3vectors`를 검색하고 `com.amazonaws.region.s3vectors`를 선택합니다.

1. **VPC**에서 엔드포인트를 만들 VPC를 선택합니다.

1. (선택 사항) **추가 설정**의 **DNS 이름 활성화**에서 프라이빗 DNS 기능을 활성화할지 여부를 선택합니다. 활성화되면 AWS SDK를 통한 요청과 같이 퍼블릭 서비스 엔드포인트(`s3vectors.region.api.aws`)를 사용하는 요청은 퍼블릭 엔드포인트 대신 VPC 엔드포인트로 확인됩니다.

1. **서브넷**에서 엔드포인트 네트워크 인터페이스를 생성하려는 서브넷을 선택합니다.

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

1. **보안 그룹**에서 엔드포인트 네트워크 인터페이스에 연결할 보안 그룹을 선택합니다.

1. (선택 사항) **정책**의 경우 VPC 엔드포인트 정책을 연결하여 엔드포인트를 통해 S3 Vectors에 대한 액세스를 제어할 수 있습니다. 인터페이스 엔드포인트를 통해 모든 보안 주체가 모든 S3 Vectors 리소스에 대해 모든 작업을 수행할 수 있도록 허용하려면 **전체 액세스**를 선택합니다. 액세스를 제한하려면 **사용자 지정**을 선택하고 정책을 입력합니다. 자세한 정보는 AWS PrivateLink 가이드의 [엔드포인트 정책을 사용하여 VPC 엔드포인트에 대한 액세스 제어](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)를 참조하세요. 정책을 연결하지 않으면 기본 정책에서 전체 액세스를 허용합니다.

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

### AWS CLI 사용
<a name="s3-vectors-privatelink-create-cli"></a>

S3 Vectors용 IPv4 및 IPv6를 모두 반환하는 새 VPC 엔드포인트를 생성하려면 다음 예제 CLI 명령을 사용합니다. 자세한 내용은 [vpc-endpoint 생성](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html)을 참조하세요.

```
aws ec2 create-vpc-endpoint \
    --vpc-id vpc-12345678 \
    --service-name com.amazonaws.region.s3vectors \
    --vpc-endpoint-type Interface \
    --subnet-ids subnet-12345678 subnet-87654321 \
    --security-group-ids sg-12345678 \
    --ip-address-type dualstack \
    --private-dns-enabled
```

`--private-dns-enabled` 파라미터는 프라이빗 DNS 기능을 활성화합니다. 활성화하면 `s3vectors.region.api.aws`에 대한 요청이 VPC 엔드포인트를 통해 라우팅됩니다.

VPC 엔드포인트 생성에 대한 자세한 내용은 *VPC 사용 설명서*의 [VPC 엔드포인트 생성](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)을 참조하세요.

## S3 Vectors에 대한 VPC 엔드포인트 정책
<a name="s3-vectors-privatelink-policies"></a>

리소스 기반 정책과 마찬가지로 벡터 인덱스 및 벡터 버킷에 대한 액세스를 제어하는 엔드포인트 정책을 VPC 엔드포인트에 연결할 수 있습니다. VPC 엔드포인트 정책에 대한 자세한 내용은 AWS PrivateLink 안내서의 [엔드포인트 정책을 사용하여 VPC 엔드포인트에 대한 액세스 제어](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)를 참조하세요.

### 예제: VPC 엔드포인트 정책
<a name="s3-vectors-privatelink-policy-examples"></a>

다음 예제 VPC 엔드포인트 정책은 모든 보안 주체의 모든 S3 Vectors 작업에 대한 액세스를 허용합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3vectors:*"
      ],
      "Resource": "*"
    }
  ]
}
```

다음 예제 VPC 엔드포인트 정책은 특정 벡터 버킷에 대한 액세스를 제한합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3vectors:GetVectorBucket",
        "s3vectors:ListIndexes",
        "s3vectors:GetIndex",
        "s3vectors:QueryVectors",
        "s3vectors:GetVectors"
      ],
      "Resource": [
        "arn:aws:s3vectors:us-west-2:111122223333:bucket/amzn-s3-demo-vector-bucket",
        "arn:aws:s3vectors:us-west-2:111122223333:bucket/amzn-s3-demo-vector-bucket/*"
      ]
    }
  ]
}
```

다음 예제 VPC 엔드포인트 정책은 `aws:CurrentTime` 조건 키를 사용하여 업무 시간 중에만 액세스를 허용합니다.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3vectors:*",
      "Resource": "*",
      "Condition": {
        "DateGreaterThan": {
          "aws:CurrentTime": "08:00Z"
        },
        "DateLessThan": {
          "aws:CurrentTime": "18:00Z"
        }
      }
    }
  ]
}
```

## VPC 엔드포인트에 대한 S3 Vectors 클라이언트 구성
<a name="s3-vectors-privatelink-configure-clients"></a>

S3 Vectors와 함께 VPC 엔드포인트를 사용하는 경우 서비스 DNS 이름 또는 VPC 엔드포인트 DNS 이름을 사용하도록 S3 Vectors 클라이언트를 구성할 수 있습니다.

### AWS SDK 사용
<a name="s3-vectors-privatelink-sdk-config"></a>

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

다음 예제에서는 VPC 엔드포인트를 사용하도록 SDK for Python(Boto3)에서 S3 Vectors 클라이언트를 구성하는 방법을 보여줍니다.

```
import boto3

# Using service DNS name (requires private DNS feature enabled on VPC endpoint)
s3vectors_client = boto3.client(
    's3vectors',
    region_name='us-west-2',
    endpoint_url='https://s3vectors.us-west-2.api.aws'
)

# Using VPC endpoint DNS name
s3vectors_client = boto3.client(
    's3vectors',
    region_name='us-west-2',
    endpoint_url='https://vpce-12345678.s3vectors.us-west-2.vpce.amazonaws.com'
)
```

------

## VPC 엔드포인트 문제 해결
<a name="s3-vectors-privatelink-troubleshooting"></a>

인터페이스 VPC 엔드포인트에 문제가 있는 경우 다음 문제 해결 단계를 고려하세요.
+ **DNS 확인**: 프라이빗 DNS를 사용할 때 엔드포인트에 대한 DNS 쿼리가 VPC CIDR 범위 내의 프라이빗 IP 주소로 확인되는지 확인합니다.
+ **보안 그룹**: VPC 엔드포인트와 연결된 보안 그룹이 VPC 리소스의 인바운드 HTTPS 트래픽(포트 443)을 허용하는지 확인합니다.
+ **라우팅 테이블**: 서브넷 라우팅 테이블에 VPC 엔드포인트에서 트래픽을 리디렉션할 수 있는 충돌하는 경로가 없는지 확인합니다.
+ **VPC 엔드포인트 정책**: VPC 엔드포인트 정책이 필요한 S3 Vectors 작업 및 리소스를 허용하는지 확인합니다.
+ **클라이언트 구성**: 프라이빗 DNS 기능이 비활성화된 경우 서비스 DNS 이름 대신 VPC 엔드포인트 DNS 이름을 사용하도록 S3 Vectors 클라이언트를 구성합니다.

## VPC 엔드포인트 사용량 모니터링
<a name="s3-vectors-privatelink-monitoring"></a>

CloudTrail [NetworkActivity](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-network-events-with-cloudtrail.html) 이벤트 로그를 통해 S3 Vectors VPC 엔드포인트 사용량을 모니터링할 수 있습니다.

S3 Vectors 로깅에 대한 자세한 내용은 [S3 Vectors용 AWS CloudTrail을 사용하여 로깅](s3-vectors-logging.md) 섹션을 참조하세요.

# S3 Vectors용 AWS CloudTrail을 사용하여 로깅
<a name="s3-vectors-logging"></a>

Amazon S3 Vectors는 사용자, 역할, 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail과 통합됩니다. CloudTrail은 S3 Vectors에 대한 모든 API 직접 호출을 이벤트로 캡처합니다. CloudTrail에서 수집한 정보를 사용하여 S3 Vectors에 전송된 요청, 요청이 이루어진 IP 주소, 요청이 이루어진 시간, 추가 세부 정보를 확인할 수 있습니다. 지원되는 이벤트 활동이 S3 Vectors에서 발생하면 해당 활동이 CloudTrail 이벤트에 기록됩니다. CloudTrail 추적을 사용하여 S3 Vectors에 대한 관리 이벤트 및 데이터 이벤트를 로깅할 수 있습니다.

CloudTrail에 대한 자세한 내용은 [CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

## CloudTrail의 S3 Vectors 정보
<a name="s3-vectors-logging-information"></a>

CloudTrail은 계정 생성 시 AWS 계정에서 활성화됩니다. S3 Vectors에서 활동이 발생하면 해당 활동이 이벤트 기록의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 설명은 [CloudTrail 이벤트 기록으로 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

S3 Vectors에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. 트레일을 통해 CloudTrail은 로그 파일을 Amazon S3 버킷으로 전송할 수 있습니다. 콘솔에서 추적을 생성하면 기본적으로 모든 AWS Region에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된 Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 *CloudTrail 사용 설명서*의 [Overview for Creating a Trail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html), [Configuring Amazon SNS Notifications for CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting-notifications-top-level.html), [Receiving CloudTrail Log Files from Multiple Regions](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [Receiving CloudTrail Log Files from Multiple Accounts](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)를 참조하세요.

모든 S3 Vectors API 작업은 CloudTrail에서 로깅되며 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations_Amazon_S3_Vectors.html) API 참조에 설명되어 있습니다. 예를 들어 [CreateVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateVectorBucket.html), [CreateIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateIndex.html) 및 [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) 작업에 대한 직접 호출에서는 CloudTrail 로그 파일에 항목이 생성됩니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청을 루트로 했는지 아니면 IAM 사용자 자격 증명 정보로 했는지 여부.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 다른 AWS 서비스에서 요청했는지.

자세한 내용은 *CloudTrail 사용 설명서*의 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

## S3 Vectors에 대한 CloudTrail 관리 이벤트
<a name="s3-vectors-logging-management-events"></a>

관리 이벤트는 AWS 계정의 리소스에 대해 수행되는 관리 작업에 대한 정보를 제공합니다. 이를 컨트롤 플레인 작업이라고도 합니다. 기본적으로 CloudTrail은 관리 이벤트를 로깅합니다.

S3 Vectors의 경우 CloudTrail은 다음 관리 이벤트를 로깅합니다.
+ [CreateVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateVectorBucket.html)
+ [DeleteVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucket.html)
+ [GetVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucket.html)
+ [ListVectorBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectorBuckets.html)
+ [PutVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectorBucketPolicy.html)
+ [GetVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucketPolicy.html)
+ [DeleteVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucketPolicy.html)
+ [CreateIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateIndex.html)
+ [DeleteIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteIndex.html)
+ [GetIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetIndex.html)
+ [ListIndexes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListIndexes.html)

S3 Vectors 관리 이벤트 및 데이터 이벤트에 대한 `eventSource`는 `s3vectors.amazonaws.com`입니다.

관리 이벤트에 대한 자세한 내용은 *CloudTrail 사용 설명서*의 [Logging management events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html)를 참조하세요.

## S3 Vectors에 대한 CloudTrail 데이터 이벤트
<a name="s3-vectors-logging-data-events"></a>

데이터 이벤트는 리소스 상에서, 또는 리소스 내에서 수행되는 리소스 작업에 대한 정보를 제공합니다. 이를 데이터 플레인 작업이라고도 합니다. 기본적으로 CloudTrail은 데이터 이벤트를 로깅하지 않습니다. 그러나 S3 Vectors 리소스에 대한 데이터 이벤트를 로깅하도록 추적을 구성할 수 있습니다.

데이터 이벤트를 로깅하도록 추적을 구성할 때 S3 Vectors 리소스 유형을 지정할 수 있습니다. S3 Vectors는 데이터 이벤트에 대해 다음과 같은 리소스 유형을 지원합니다.
+ `AWS::S3Vectors::VectorBucket` - 지정된 벡터 버킷의 모든 벡터 인덱스에 대한 데이터 이벤트를 로깅합니다.
+ `AWS::S3Vectors::Index` - 특정 벡터 인덱스에 대한 데이터 이벤트를 로깅합니다.

S3 Vectors의 경우 CloudTrail은 다음 데이터 이벤트를 로깅합니다.

벡터 데이터 작업:
+ [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) - 벡터가 벡터 인덱스에 추가될 때 로깅합니다.
+ [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) - 벡터 인덱스에서 벡터를 검색할 때 로깅합니다.
+ [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html) - 벡터 인덱스에서 벡터가 삭제될 때 로깅됩니다.
+ [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) - 벡터 인덱스의 벡터가 나열될 때 로깅됩니다.
+ [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) - 벡터 인덱스에서 유사성 쿼리가 수행될 때 로깅됩니다.

S3 Vectors 데이터 이벤트에 대한 `eventSource`는 `s3vectors.amazonaws.com`입니다.

## S3 Vectors에 대한 데이터 이벤트 로깅 활성화
<a name="s3-vectors-logging-enabling-data-events"></a>

CloudTrail 추적을 만들거나 업데이트할 때 S3 Vectors 리소스에 대한 데이터 이벤트 로깅을 활성화할 수 있습니다. 계정의 모든 벡터 버킷 및 벡터 인덱스에 대한 로깅을 지정하거나 개별 벡터 버킷 또는 벡터 인덱스를 지정할 수 있습니다. 추적 만들기에 대한 자세한 단계는 *CloudTrail 사용 설명서*의 [Creating a trail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html)을 참조하세요.

모든 S3 Vectors 리소스에 대해 데이터 이벤트 로깅 활성화
+ 추적을 만들거나 업데이트할 때 **데이터 이벤트**를 선택합니다.
+ **리소스 유형**에서 `AWS::S3Vectors::VectorBucket`을 선택합니다.
+ **리소스 ARN**에 `arn:aws:s3vectors:_:_:bucket/*`을 입력하여 모든 벡터 버킷에 대한 이벤트를 로깅하거나 개별 벡터 버킷 ARN(예: `arn:aws:s3vectors:us-east-1:123456789012:bucket/amzn-s3-demo-vector-bucket`)을 지정합니다.

특정 벡터 인덱스에 대한 데이터 이벤트 로깅 활성화
+ 추적을 만들거나 업데이트할 때 **데이터 이벤트**를 선택합니다.
+ **리소스 유형**에서 `AWS::S3Vectors::Index`을 선택합니다.
+ **리소스 ARN**에 `arn:aws:s3vectors:us-east-1:123456789012:bucket/amzn-s3-demo-vector-bucket/index/my-index` 등 특정 벡터 인덱스의 ARN을 입력합니다.

데이터 이벤트에 대한 자세한 내용은 *CloudTrail 사용 설명서*의 [Logging data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)를 참조하세요.

**Topics**
+ [CloudTrail의 S3 Vectors 정보](#s3-vectors-logging-information)
+ [S3 Vectors에 대한 CloudTrail 관리 이벤트](#s3-vectors-logging-management-events)
+ [S3 Vectors에 대한 CloudTrail 데이터 이벤트](#s3-vectors-logging-data-events)
+ [S3 Vectors에 대한 데이터 이벤트 로깅 활성화](#s3-vectors-logging-enabling-data-events)
+ [S3 Vectors에 대한 CloudTrail 로그 파일 예제](s3-vectors-cloudtrail-log-example.md)

# S3 Vectors에 대한 CloudTrail 로그 파일 예제
<a name="s3-vectors-cloudtrail-log-example"></a>

다음 예제에서는 S3 Vectors 데이터 이벤트에 대한 CloudTrail 로그 항목을 보여줍니다. 벡터 인덱스 내에서 벡터 데이터에 대한 작업을 수행하면 데이터 이벤트가 로깅됩니다.

## 예제: `GetVectors` 데이터 이벤트에 대한 CloudTrail 로그 파일
<a name="s3-vectors-cloudtrail-getvectors-example"></a>

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "123456789012",
        "arn": "arn:aws:iam::123456789012:user/myUserName",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "myUserName"
    },
    "eventTime": "2024-11-22T17:12:25Z",
    "eventSource": "s3vectors.amazonaws.com",
    "eventName": "GetVectors",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "[aws-cli/2.18.5]",
    "requestParameters": {
        "vectorBucketName": "amzn-s3-demo-vector-bucket",
        "returnMetadata": "false",
        "indexName": "111aa1111-22bb-33cc-44dd-5555eee66ffff",
        "returnData": "false"
    },            
    "responseElements": null,
    "additionalEventData": {
        "SignatureVersion": "SigV4",
        "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256"
    },
    "requestID": "07D681123BD12AED",
    "eventID": "f2b287f3-0df1-1234-a2f4-c4bdfed47657",
    "readOnly": true,
    "resources": [{
        "accountId": "123456789012",
        "type": "AWS::S3Vectors::VectorBucket",
        "ARN": "arn:aws:s3vectors:us-east-1:123456789012:bucket/amzn-s3-demo-vector-bucket"
    }, {
        "accountId": "123456789012",
        "type": "AWS::S3Vectors::Index",
        "ARN": "arn:aws:s3vectors:us-east-1:123456789012:bucket/amzn-s3-demo-vector-bucket/index/111aa1111-22bb-33cc-44dd-5555eee66ffff"
    }],
    "eventType": "AwsApiCall",
    "managementEvent": false,
    "recipientAccountId": "444455556666",
    "eventCategory": "Data",
    "tlsDetails": {
        "tlsVersion": "TLSv1.2",
        "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
        "clientProvidedHostHeader": "client-host"
    }
}
```

## S3 Vectors 로그 파일 항목 이해
<a name="s3-vectors-cloudtrail-understanding"></a>

CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스의 단일 요청을 나타내며 요청된 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보를 포함합니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

S3 Vectors CloudTrail 로그 항목에는 다음 주요 요소가 포함됩니다.
+ **eventSource** - S3 Vectors 이벤트에 대해 항상 `s3vectors.amazonaws.com`입니다.
+ **eventName** - 수행된 S3 Vectors API 작업입니다.
+ **eventCategory** - 컨트롤 플레인 작업에 대해 `Management` 또는 데이터 플레인 작업에 대해 `Data`입니다.
+ **readOnly**: 읽기 작업에 대해 `true`(예: [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html), [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html), [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html)), 쓰기 작업에 대해 `false`([PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html), [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html)).입니다
+ **리소스** - 벡터 버킷 및 벡터 인덱스를 포함하여 작업에 관련된 S3 Vectors 리소스입니다.
+ **requestParameters** - 요청과 함께 전송된 파라미터입니다.
+ **responseElements** - S3 Vectors 서비스에서 반환하는 응답 요소입니다.