S3 Vectors용 VPC 엔드포인트
S3 Vectors용 VPC 엔드포인트 (VPC endpoints for S3 Vectors)
프라이빗 가상 클라우드(VPC)에서 S3 Vectors에 접근하려면 Amazon S3가 AWS PrivateLink(PrivateLink)를 사용한 인터페이스 VPC 엔드포인트를 지원해요. PrivateLink는 인터넷 게이트웨이나 NAT 디바이스 없이 VPC와 S3 Vectors 사이에 프라이빗 연결을 제공해요. 인터페이스 엔드포인트는 VPC의 서브넷에서 프라이빗 IP 주소가 할당된 하나 이상의 탄력적 네트워크 인터페이스(ENI)로 표현돼요. 인터페이스 엔드포인트를 통한 S3 Vectors 요청은 AWS 네트워크 안에 유지돼요.
AWS Direct Connect나 AWS Virtual Private Network(AWS VPN)를 통해 온프레미스 애플리케이션에서 VPC의 인터페이스 엔드포인트에 접근할 수도 있어요. VPC를 온프레미스 네트워크와 연결하는 방법에 대한 자세한 내용은 AWS Direct Connect User Guide와 AWS Site-to-Site VPN User Guide를 참고하세요. 인터페이스 엔드포인트에 대한 일반 정보는 AWS PrivateLink Guide의 Access an AWS service using an interface VPC endpoint를 참고하세요.
출처: 문서
본문
S3 Vectors에 PrivateLink 사용의 이점 (Benefits of using PrivateLink with S3 Vectors)
S3 Vectors에 PrivateLink를 사용하면 여러 보안 및 운영 이점이 있어요.
- 강화된 보안 (Enhanced security): VPC와 S3 Vectors 사이의 트래픽이 AWS 네트워크 안에 유지되며 인터넷을 통과하지 않아요.
- 단순화된 네트워크 아키텍처 (Simplified network architecture): 인터넷 게이트웨이, NAT 디바이스, VPN 연결을 구성하지 않고 S3 Vectors에 접근할 수 있어요.
- 세분화된 접근 제어 (Granular access control): VPC 엔드포인트 정책을 사용해 엔드포인트를 통해 접근할 수 있는 벡터 버킷과 벡터 인덱스를 제어할 수 있어요.
- 규정 준수 지원 (Compliance support): 민감한 데이터에 대해 프라이빗 네트워크 연결을 요구하는 규제 요구사항을 충족할 수 있어요.
VPC 엔드포인트 DNS 이름 및 해석 (VPC endpoint DNS names and resolution)
VPC 엔드포인트를 만들면 S3 Vectors가 Regional과 Zonal 두 가지 유형의 엔드포인트별 DNS 이름을 생성해요.
S3 Vectors용 인터페이스 VPC 엔드포인트의 Regional 및 Zonal DNS 이름은 다음과 같아요.
- Regional DNS 이름:
vpce-1a2b3c4d-5e6f.s3vectors.region.vpce.amazonaws.com— 리전 VPC 엔드포인트 DNS 이름. 항상 프라이빗 IP 주소로 해석돼요. - Zonal DNS 이름:
vpce-1a2b3c4d-5e6f-availability_zone_code.s3vectors.region.vpce.amazonaws.com— 존별 VPC 엔드포인트 DNS 이름. 항상 프라이빗 IP 주소로 해석돼요.
VPC 엔드포인트에 대해 프라이빗 DNS가 활성화되어 있다면 퍼블릭 엔드포인트의 DNS 이름 s3vectors.region.api.aws를 엔드포인트 서비스의 프라이빗 DNS 이름으로 사용할 수도 있어요.
인터페이스 엔드포인트의 IP 주소 지정 (IP addressing for interface endpoints)
S3 Vectors 리전, 존, 프라이빗 DNS 엔드포인트는 AWS PrivateLink에 대해 IPv4, IPv6, 듀얼 스택(dualstack) IP 타입을 지원해요. 자세한 내용은 AWS PrivateLink Guide의 IP address types와 DNS record IP type for AWS services를 참고하세요.
VPC에서 IPv6로 S3 Vectors 벡터 인덱스와 벡터 버킷에 접근하기 전에 알아두어야 할 몇 가지 사항이 있어요.
- 벡터에 접근하는 데 사용하는 클라이언트와 S3 Vectors 클라이언트 모두 듀얼 스택이 활성화되어 있어야 해요.
- VPC 보안 그룹에 IPv6가 설정되어 있지 않다면 IPv6 트래픽을 허용하는 규칙을 구성해야 해요. 자세한 내용은 VPC User Guide의 Step 3: Update your security group rules와 Configure security group rules를 참고하세요.
- VPC에 IPv6 CIDR이 할당되어 있지 않다면 VPC에 IPv6 CIDR 블록을 수동으로 추가해야 해요. 자세한 내용은 AWS PrivateLink Guide의 Add IPv6 support for your VPC를 참고하세요.
- IP 주소 필터링 IAM 정책을 사용한다면 IPv6 주소를 처리하도록 업데이트해야 해요. IAM으로 접근 권한을 관리하는 방법에 대한 자세한 내용은 S3 Vectors의 ID 및 접근 관리를 참고하세요.
S3 Vectors용 VPC 인터페이스 엔드포인트 만들기 (Creating a VPC interface endpoint for S3 Vectors)
VPC 콘솔, AWS CLI, AWS SDK, 또는 AWS API를 사용해 S3 Vectors용 VPC 인터페이스 엔드포인트를 만들 수 있어요.
- VPC 콘솔을 엽니다: https://console.aws.amazon.com/vpc/
- 탐색 창에서 Endpoints를 선택해요.
- Create endpoint를 선택해요.
- Service category에서 AWS services를 선택해요.
- Services에서
s3vectors를 검색하고com.amazonaws.region.s3vectors를 선택해요. - VPC에서 엔드포인트를 만들 VPC를 선택해요.
- (선택) Additional settings 아래 Enable DNS name에서 프라이빗 DNS 기능을 활성화할지 선택해요. 활성화하면 AWS SDK를 통한 요청처럼 퍼블릭 서비스 엔드포인트(
s3vectors.region.api.aws)를 사용하는 요청이 퍼블릭 엔드포인트 대신 VPC 엔드포인트로 해석돼요. - Subnets에서 엔드포인트 네트워크 인터페이스를 만들 서브넷을 선택해요.
- IP address type에서 엔드포인트의 IP 주소 타입을 선택해요.
- IPv4: 엔드포인트 네트워크 인터페이스에 IPv4 주소를 할당해요. 선택한 모든 서브넷에 IPv4 주소 범위가 있을 때만 지원돼요.
- IPv6: 엔드포인트 네트워크 인터페이스에 IPv6 주소를 할당해요. 선택한 모든 서브넷이 IPv6 전용 서브넷일 때만 지원돼요.
- Dualstack: 엔드포인트 네트워크 인터페이스에 IPv4와 IPv6 주소를 모두 할당해요. 선택한 모든 서브넷에 IPv4와 IPv6 주소 범위가 모두 있을 때만 지원돼요.
- Security groups에서 엔드포인트 네트워크 인터페이스와 연결할 보안 그룹을 선택해요.
- (선택) Policy에서 VPC 엔드포인트 정책을 연결해 엔드포인트를 통한 S3 Vectors 접근을 제어할 수 있어요. 인터페이스 엔드포인트를 통해 모든 보안 주체가 모든 S3 Vectors 리소스에서 모든 작업을 수행하도록 하려면 Full access를 선택해요. 접근을 제한하려면 Custom을 선택하고 정책을 입력해요. 자세한 내용은 AWS PrivateLink Guide의 Control access to VPC endpoints using endpoint policies를 참고하세요. 정책을 연결하지 않으면 기본 정책이 전체 접근을 허용해요.
- Create endpoint를 선택해요.
S3 Vectors에 대해 IPv4와 IPv6를 모두 반환하는 새 VPC 엔드포인트를 만들려면 다음 예시 CLI 명령을 사용하세요. 자세한 내용은 create-vpc-endpoint를 참고하세요.
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 User Guide의 Create a VPC endpoint를 참고하세요.
S3 Vectors용 VPC 엔드포인트 정책 (VPC endpoint policies for S3 Vectors)
리소스 기반 정책과 유사하게 VPC 엔드포인트에 엔드포인트 정책을 연결해 벡터 인덱스와 벡터 버킷에 대한 접근을 제어할 수 있어요. 엔드포인트 정책에 대한 자세한 내용은 AWS PrivateLink Guide의 Control access to VPC endpoints using endpoint policies를 참고하세요.
VPC 엔드포인트 정책 예시 (Example VPC endpoint policies)
다음 예시 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 클라이언트 구성하기 (Configuring S3 Vectors clients for VPC endpoints)
VPC 엔드포인트를 S3 Vectors와 함께 사용할 때 S3 Vectors 클라이언트를 서비스 DNS 이름 또는 VPC 엔드포인트 DNS 이름 중 하나를 사용하도록 구성할 수 있어요.
Python SDK (Boto3)
다음 예시는 SDK for Python(Boto3)에서 S3 Vectors 클라이언트를 VPC 엔드포인트를 사용하도록 구성하는 방법을 보여줘요.
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 엔드포인트 문제 해결 (Troubleshooting VPC endpoints)
인터페이스 VPC 엔드포인트에 문제가 있다면 다음 문제 해결 단계를 고려해 보세요.
- DNS 해석 (DNS resolution): 프라이빗 DNS를 사용할 때 엔드포인트에 대한 DNS 쿼리가 VPC CIDR 범위 안의 프라이빗 IP 주소로 해석되는지 확인해요.
- 보안 그룹 (Security groups): VPC 엔드포인트와 연결된 보안 그룹이 VPC 리소스에서 인바운드 HTTPS 트래픽(포트 443)을 허용하는지 확인해요.
- 라우팅 테이블 (Route tables): 서브넷 라우팅 테이블에 VPC 엔드포인트에서 트래픽을 빼돌릴 수 있는 충돌하는 라우트가 없는지 확인해요.
- VPC 엔드포인트 정책 (VPC endpoint policy): VPC 엔드포인트 정책이 필요한 S3 Vectors 작업과 리소스를 허용하는지 확인해요.
- 클라이언트 구성 (Client configuration): 프라이빗 DNS 기능이 비활성화되어 있다면 S3 Vectors 클라이언트가 서비스 DNS 이름 대신 VPC 엔드포인트 DNS 이름을 사용하도록 구성해요.
VPC 엔드포인트 사용 모니터링 (Monitoring VPC endpoint usage)
CloudTrail의 NetworkActivity 이벤트 로그를 통해 S3 Vectors VPC 엔드포인트 사용을 모니터링할 수 있어요.
S3 Vectors 로깅에 대한 자세한 내용은 S3 Vectors용 AWS CloudTrail 로깅을 참고하세요.