Amazon S3용 AWS PrivateLink

Amazon S3용 AWS PrivateLink를 사용하면 VPC(가상 프라이빗 클라우드)에 인터페이스 VPC 엔드포인트(인터페이스 엔드포인트)를 프로비저닝할 수 있어요. 이러한 엔드포인트는 VPN과 Direct Connect를 통한 온프레미스의 애플리케이션 또는 VPC 피어링을 통한 다른 AWS 리전의 애플리케이션에서 직접 접근할 수 있어요.

출처: 문서

본문

Amazon S3용 AWS PrivateLink를 사용하면 VPC(가상 프라이빗 클라우드)에 인터페이스 VPC 엔드포인트(인터페이스 엔드포인트)를 프로비저닝할 수 있어요. 이러한 엔드포인트는 VPN과 Direct Connect를 통한 온프레미스의 애플리케이션 또는 VPC 피어링을 통한 다른 AWS 리전의 애플리케이션에서 직접 접근할 수 있어요.

인터페이스 엔드포인트는 VPC의 서브넷에서 프라이빗 IP 주소가 할당된 하나 이상의 탄력적 네트워크 인터페이스(ENI)로 표시돼요. 인터페이스 엔드포인트를 통한 Amazon S3에 대한 요청은 Amazon 네트워크에 유지돼요. AWS Direct Connect 또는 AWS Virtual Private Network(Site-to-Site VPN)를 통해 온프레미스 애플리케이션에서 VPC의 인터페이스 엔드포인트에 접근할 수도 있어요. VPC를 온프레미스 네트워크에 연결하는 방법에 대한 자세한 내용은 Direct Connect 사용자 안내서와 AWS Site-to-Site VPN 사용자 안내서를 참고하세요.

인터페이스 엔드포인트에 대한 일반 정보는 AWS PrivateLink 안내서의 인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참고하세요.

관련 주제

Amazon S3의 VPC 엔드포인트 유형

Amazon S3에 접근하는 데 게이트웨이 엔드포인트와 인터페이스 엔드포인트(AWS PrivateLink 사용)의 두 가지 유형의 VPC 엔드포인트를 사용할 수 있어요. 게이트웨이 엔드포인트는 AWS 네트워크를 통해 VPC에서 Amazon S3에 접근하기 위해 라우팅 테이블에서 지정하는 게이트웨이예요. 인터페이스 엔드포인트는 프라이빗 IP 주소를 사용해 VPC 내부, 온프레미스, 또는 VPC 피어링이나 AWS Transit Gateway를 사용한 다른 AWS 리전의 VPC에서 Amazon S3로 요청을 라우팅해 게이트웨이 엔드포인트의 기능을 확장해요. 자세한 내용은 VPC 피어링이란 무엇인가요? 및 Transit Gateway vs VPC 피어링을 참고하세요.

인터페이스 엔드포인트는 게이트웨이 엔드포인트와 호환돼요. VPC에 기존 게이트웨이 엔드포인트가 있다면 같은 VPC에서 두 유형의 엔드포인트를 모두 사용할 수 있어요.

Amazon S3용 게이트웨이 엔드포인트 Amazon S3용 인터페이스 엔드포인트
두 경우 모두 네트워크 트래픽은 AWS 네트워크에 유지돼요.
Amazon S3 공용 IP 주소 사용 Amazon S3에 접근하기 위해 VPC의 프라이빗 IP 주소 사용
동일한 Amazon S3 DNS 이름 사용 엔드포인트별 Amazon S3 DNS 이름 필요
온프레미스에서 접근 허용 안 함 온프레미스에서 접근 허용
다른 AWS 리전에서 접근 허용 안 함 VPC 피어링 또는 AWS Transit Gateway를 사용해 다른 AWS 리전의 VPC에서 접근 허용
과금되지 않음 과금됨

자세한 내용은 AWS PrivateLink 안내서의 게이트웨이 엔드포인트 및 인터페이스 VPC 엔드포인트를 참고하세요.

Amazon S3용 AWS PrivateLink의 제한 사항 및 한계

VPC 제한 사항이 Amazon S3용 AWS PrivateLink에 적용돼요. 자세한 내용은 AWS PrivateLink 안내서의 인터페이스 엔드포인트 고려 사항 및 AWS PrivateLink 할당량을 참고하세요. 또한 다음 제한 사항이 적용돼요.

인터페이스 엔드포인트 for Amazon S3는 다음을 지원하지 않아요.

  • 웹 사이트 엔드포인트
  • 레거시 전역 엔드포인트
  • S3 dash 리전 엔드포인트
  • 다른 AWS 리전의 버킷 간 CopyObject 또는 UploadPartCopy 사용
  • TLS(Transport Layer Security) 1.0
  • TLS(Transport Layer Security) 1.1
  • TLS(Transport Layer Security) 1.3
  • 하이브리드 양자 후 TLS(Transport Layer Security)

VPC 엔드포인트 생성

VPC 인터페이스 엔드포인트를 만들려면 AWS PrivateLink 안내서의 VPC 엔드포인트 생성을 참고하세요. VPC 게이트웨이 엔드포인트를 만들려면 AWS PrivateLink 안내서의 게이트웨이 엔드포인트 생성을 참고하세요.

Amazon S3용 FIPS 엔드포인트

FIPS 140-3 검증 암호화 모듈로 AWS PrivateLink를 통해 Amazon S3에 연결하려면 인터페이스 엔드포인트를 만들어요. FIPS 서비스 이름 com.amazonaws.region.s3-fips를 사용해요. 예를 들어 com.amazonaws.us-east-1.s3-fips를 사용해요. FIPS 인터페이스 엔드포인트는 Amazon S3용 FIPS 엔드포인트를 제공하는 모든 AWS 리전에서 사용할 수 있어요. 이러한 엔드포인트는 버킷, 액세스 포인트 및 Amazon S3 Control API 작업에 대한 접근을 지원해요. FIPS 인터페이스 엔드포인트를 IPv4, IPv6 또는 dual-stack IP 주소 지정을 사용하도록 구성할 수 있어요.

Amazon S3 인터페이스 엔드포인트 접근

인터페이스 엔드포인트를 만들면 Amazon S3는 리전별(Regional) 및 영역별(zonal)이라는 두 가지 유형의 엔드포인트별 S3 DNS 이름을 생성해요.

  • 리전별(Regional) DNS 이름은 이름에 고유한 VPC 엔드포인트 ID, 서비스 식별자, AWS 리전 및 vpce.amazonaws.com을 포함해요. 예를 들어 VPC 엔드포인트 ID vpce-1a2b3c4d의 경우 생성되는 DNS 이름은 vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com과 유사할 수 있어요.
  • 영역별(Zonal) DNS 이름은 가용 영역을 포함해요. 예를 들어 vpce-1a2b3c4d-5e6f-us-east-1a.s3.us-east-1.vpce.amazonaws.com과 같아요. 아키텍처가 가용 영역을 격리하는 경우 이 옵션을 사용할 수 있어요. 예를 들어 장애 격리 또는 리전 데이터 전송 비용 절감을 위해 사용할 수 있어요.

엔드포인트별 S3 DNS 이름은 S3 공용 DNS 도메인에서 확인할 수 있어요.

FIPS 서비스 이름 com.amazonaws.region.s3-fips를 사용하는 인터페이스 엔드포인트를 만들면 Amazon S3가 엔드포인트별 DNS 이름을 생성해요. 이러한 이름은 s3-fips 서비스 식별자를 포함해요. 예를 들어 vpce-1a2b3c4d-5e6f.s3-fips.us-east-1.vpce.amazonaws.com과 같아요.

Amazon S3용 VPC 엔드포인트는 IPv4, IPv6 및 Dualstack을 포함한 다양한 유형의 IP 주소 지정을 지원해요. VPC 엔드포인트의 IP 주소 유형 및 VPC 엔드포인트의 DNS 레코드 IP 유형을 참고하세요.

VPC 엔드포인트의 IP 주소 유형

Amazon S3용 VPC 엔드포인트는 다음과 같은 다양한 유형의 IP 주소 지정을 지원해요.

  • IPv4 VPC 엔드포인트는 연결에 IPv4 주소만 사용하도록 구성할 수 있어요.
  • IPv6 VPC 엔드포인트는 연결에 IPv6 주소만 사용하도록 구성할 수 있어요.
  • Dual-stack VPC 엔드포인트는 dual-stack 모드로 구성해 IPv4와 IPv6 주소를 동시에 지원할 수 있어요. 이는 IPv4 또는 IPv6 네트워크를 통해 Amazon S3에 접근할 수 있는 유연성을 제공해요.

VPC 엔드포인트에 선택하는 IP 주소 유형은 애플리케이션과 인프라의 네트워킹 요구 사항에 따라 달라져요. VPC, 온프레미스 네트워크 및 Amazon S3에 대한 인터넷 연결에 사용되는 IP 주소 지정 체계와 같은 고려 사항이 포함될 수 있어요. 자세한 내용은 Amazon Virtual Private Cloud 안내서의 인터페이스 엔드포인트 및 게이트웨이 엔드포인트의 IP 주소 유형을 참고하세요.

VPC 엔드포인트의 DNS 레코드 IP 유형

IP 주소 유형에 따라 VPC 엔드포인트를 호출할 때 AWS 서비스는 A 레코드, AAAA 레코드 또는 A와 AAAA 레코드 모두를 반환할 수 있어요. DNS 레코드 IP 유형을 수정해 AWS 서비스가 반환하는 레코드 유형을 사용자 지정할 수 있어요. 다음 표는 지원되는 DNS 레코드 IP 유형과 IP 주소 유형을 보여줘요.

지원되는 IP 주소 유형 DNS 레코드 IP 유형
IPv4 IPv4
IPv6 IPv6
Dualstack Dualstack, IPv4, IPv6, Service-defined

Amazon S3용 service-defined DNS 레코드 IP 유형 구성

Amazon S3용 게이트웨이 엔드포인트를 만들고 DNS 레코드 IP 유형을 service-defined로 구성하고 리전별 서비스 엔드포인트(예: s3.us-east-2.amazonaws.com)를 사용하면 Amazon S3는 클라이언트에 A 레코드를 반환해요. 반대로 게이트웨이 엔드포인트를 만들고 dual-stack 서비스 엔드포인트(예: s3.dualstack.us-east-2.amazonaws.com)를 사용하며 DNS 레코드 IP 유형을 service-defined로 선택하면 Amazon S3는 클라이언트에 A와 AAAA 레코드 모두를 반환해요.

마찬가지로 프라이빗 DNS가 활성화된 인터페이스 엔드포인트를 만들고 DNS 레코드 유형으로 service-defined를 선택하면 리전별 서비스 엔드포인트(예: s3.us-east-2.amazonaws.com)의 경우 Amazon S3는 클라이언트에 A 레코드를 반환해요. 반면 dualstack 서비스 엔드포인트(예: s3.dualstack.us-east-2.amazonaws.com)의 경우 A와 AAAA 레코드 모두를 반환해요. 자세한 내용은 VPC 사용자 안내서의 인터페이스 엔드포인트 및 게이트웨이 엔드포인트의 DNS 레코드 IP 유형을 참고하세요.

다음 표는 게이트웨이 및 인터페이스 엔드포인트에 대해 지원되는 DNS 레코드 IP 유형을 보여줘요.

IP 주소 유형 S3 게이트웨이 엔드포인트에 대해 지원되는 DNS 레코드 IP 유형 S3 인터페이스 엔드포인트에 대해 지원되는 DNS 레코드 IP 유형
IPv4 IPv4, service-defined* IPv4
IPv6 IPv6, service-defined* IPv6
Dualstack IPv4, IPv6, Dualstack, service-defined* Dualstack*, IPv4, IPv6, service-defined

*기본 DNS 레코드 IP 유형을 나타냅니다.

기존 S3 게이트웨이 또는 인터페이스 엔드포인트에서 IPv6 연결을 활성화하려면 엔드포인트의 IP 주소 유형을 Dualstack으로 업데이트해요. 업데이트하면 게이트웨이 엔드포인트에 대해 Amazon S3가 IPv6 주소로 라우팅 테이블을 자동으로 업데이트해요. 그런 다음 s3.dualstack.us-east-2.amazonaws.com 같은 dualstack 서비스 엔드포인트를 사용할 수 있으며 Amazon S3는 dualstack S3 DNS 쿼리에 대해 A와 AAAA 레코드 모두를 반환해요. s3.us-east-2.amazonaws.com 같은 리전별 서비스 엔드포인트에서 IPv6를 사용하려면 엔드포인트의 IP 주소 유형을 Dualstack으로 수정하고 DNS 레코드 IP 유형을 Dualstack으로 수정해요. 그러면 Amazon S3가 리전별 S3 DNS 쿼리에 대해 A와 AAAA 레코드 모두를 반환해요.

고려 사항

  • 게이트웨이 엔드포인트가 IP 주소 유형을 IPv4로, DNS 레코드 IP 유형을 service-defined로 하는 기본 구성을 가지면 dualstack 서비스 엔드포인트(예: s3.dualstack.us-east-2.amazonaws.com)의 경우 AAAA 레코드를 사용하는 트래픽이 게이트웨이 엔드포인트를 통해 라우팅되지 않아요. 대신 이 트래픽은 삭제되거나 IPv6 호환 경로가 있으면 해당 경로로 라우팅돼요. 예를 들어 VPC에 인터넷 게이트웨이가 있으면 이 시나리오에서 IPv6 트래픽이 VPC의 인터넷 게이트웨이로 라우팅돼요. 트래픽이 항상 VPC 엔드포인트를 통해 라우팅되도록 하려면 지정된 VPC 엔드포인트를 사용하지 않을 때 특정 버킷에 대한 접근을 제한하는 Amazon S3 버킷 정책을 사용할 수 있어요. 자세한 내용은 특정 VPC 엔드포인트에 대한 접근 제한하기를 참고하세요.
  • 인터페이스 엔드포인트가 IP 주소 유형을 IPv4로, DNS 레코드 IP 유형을 IPv4로 하는 기본 구성을 가지면 s3.dualstack.us-east-2.amazonaws.com 같은 dualstack 서비스 엔드포인트는 지원되지 않아요. dualstack 서비스 엔드포인트의 A 또는 AAAA 레코드를 사용하는 트래픽은 인터페이스 엔드포인트를 통해 라우팅되지 않아요. 대신 이 트래픽은 삭제되거나 다른 호환 경로가 있으면 해당 경로로 라우팅돼요.
  • service-defined가 아닌 DNS 레코드 IP 유형으로 게이트웨이 엔드포인트를 생성하거나 수정하려면 enableDnsSupport 및 enableDnsHostnames VPC 속성이 모두 true로 설정되어 있어야 해요.

프라이빗 DNS

VPC 인터페이스 엔드포인트의 프라이빗 DNS 옵션은 VPC 엔드포인트를 통해 S3 트래픽을 라우팅하는 것을 단순화하고 애플리케이션에서 사용할 수 있는 가장 저렴한 네트워크 경로를 활용하는 데 도움이 돼요. 프라이빗 DNS 옵션을 사용해 S3 클라이언트를 인터페이스 엔드포인트의 엔드포인트별 DNS 이름을 사용하도록 업데이트하거나 DNS 인프라를 관리하지 않고 리전별 S3 트래픽을 라우팅할 수 있어요. 프라이빗 DNS 이름이 활성화되면 다음 엔드포인트에 대해 리전별 S3 DNS 쿼리가 AWS PrivateLink의 프라이빗 IP 주소로 확인돼요.

  • 리전별 버킷 엔드포인트(예: s3.us-east-1.amazonaws.com, FIPS의 경우 s3-fips.us-east-1.amazonaws.com)
  • 컨트롤 엔드포인트(예: s3-control.us-east-1.amazonaws.com, FIPS의 경우 s3-control-fips.us-east-1.amazonaws.com)
  • 액세스 포인트 엔드포인트(예: s3-accesspoint.us-east-1.amazonaws.com, FIPS의 경우 s3-accesspoint-fips.us-east-1.amazonaws.com)

인터페이스 엔드포인트를 Dualstack IP 주소 유형으로 구성하면 FIPS dual-stack 엔드포인트도 AWS PrivateLink의 프라이빗 IP 주소로 확인돼요. 예를 들어 s3-fips.dualstack.us-east-1.amazonaws.com이 프라이빗 IP 주소로 확인돼요.

VPC에 게이트웨이 엔드포인트가 있다면 VPC 내 요청은 기존 S3 게이트웨이 엔드포인트로, 온프레미스 요청은 인터페이스 엔드포인트로 자동 라우팅할 수 있어요. 이 접근 방식은 VPC 내 트래픽에 대해 과금되지 않는 게이트웨이 엔드포인트를 사용해 네트워킹 비용을 최적화할 수 있게 해줘요. 온프레미스 애플리케이션은 인바운드 Resolver 엔드포인트의 도움으로 AWS PrivateLink를 사용할 수 있어요. Amazon은 VPC용으로 Route 53 Resolver라고 하는 DNS 서버를 제공해요. 인바운드 Resolver 엔드포인트는 온프레미스 네트워크의 DNS 쿼리를 Route 53 Resolver로 전달해요.

중요 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화를 사용할 때 가장 저렴한 네트워크 경로를 활용하려면 VPC에 게이트웨이 엔드포인트가 있어야 해요. 게이트웨이 엔드포인트가 있으면 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화 옵션이 선택된 경우 VPC 내 트래픽이 항상 AWS 프라이빗 네트워크를 통해 라우팅되도록 보장해요. 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화 옵션이 선택되어 있는 동안 이 게이트웨이 엔드포인트를 유지해야 해요. 게이트웨이 엔드포인트를 삭제하려면 먼저 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화를 해제해야 해요.

기존 인터페이스 엔드포인트를 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화로 업데이트하려면 먼저 VPC에 S3 게이트웨이 엔드포인트가 있는지 확인해요. 게이트웨이 엔드포인트 및 프라이빗 DNS 이름 관리에 대한 자세한 내용은 AWS PrivateLink 안내서의 게이트웨이 VPC 엔드포인트 및 DNS 이름 관리(각각)를 참고하세요.

인바운드 Resolver 전용 프라이빗 DNS를 활성화할 때 게이트웨이 엔드포인트의 dnsRecordIpType은 인터페이스 엔드포인트와 일치하거나 service defined여야 해요.

인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화 옵션은 게이트웨이 엔드포인트를 지원하는 서비스에서만 사용할 수 있어요.

인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화를 사용하는 VPC 엔드포인트 생성에 대한 자세한 내용은 AWS PrivateLink 안내서의 인터페이스 엔드포인트 생성을 참고하세요.

VPC 콘솔 사용

콘솔에는 DNS 이름 활성화와 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화의 두 가지 옵션이 있어요. DNS 이름 활성화는 AWS PrivateLink가 지원하는 옵션이에요. DNS 이름 활성화 옵션을 사용하면 기본 공용 엔드포인트 DNS 이름에 대한 요청을 만들면서 Amazon S3에 대한 Amazon의 프라이빗 연결을 사용할 수 있어요. 이 옵션이 활성화되면 고객은 애플리케이션에서 사용할 수 있는 가장 저렴한 네트워크 경로를 활용할 수 있어요.

Amazon S3용 기존 또는 새 VPC 인터페이스 엔드포인트에서 프라이빗 DNS 이름을 활성화하면 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화 옵션이 기본적으로 선택돼요. 이 옵션이 선택되면 애플리케이션은 온프레미스 트래픽에 인터페이스 엔드포인트만 사용해요. VPC 내 트래픽은 자동으로 저렴한 게이트웨이 엔드포인트를 사용해요. 또는 인바운드 엔드포인트에 대해서만 프라이빗 DNS 활성화를 해제해 모든 S3 요청을 인터페이스 엔드포인트로 라우팅할 수 있어요.

AWS CLI 사용

PrivateDnsOnlyForInboundResolverEndpoint에 대한 값을 지정하지 않으면 기본값 true로 설정돼요. 그러나 VPC가 설정을 적용하기 전에 VPC에 게이트웨이 엔드포인트가 있는지 확인하는 검사를 수행해요. VPC에 게이트웨이 엔드포인트가 있으면 호출이 성공해요. 그렇지 않으면 다음 오류 메시지가 표시돼요.

PrivateDnsOnlyForInboundResolverEndpoint를 true로 설정하려면 VPC vpce_id에 서비스에 대한 게이트웨이 엔드포인트가 있어야 합니다.

새 VPC 인터페이스 엔드포인트의 경우

명령줄에서 private-dns-enabled 및 dns-options 속성을 사용해 프라이빗 DNS를 활성화해요. dns-options 속성의 PrivateDnsOnlyForInboundResolverEndpoint 옵션은 true로 설정해야 해요. 사용자 입력 자리 표시자를 자신의 정보로 바꾸세요.

aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name s3-service-name \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \
--vpc-endpoint-type Interface \
--private-dns-enabled \
--ip-address-type ip-address-type \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true \
--security-group-ids client-sg-id

기존 VPC 엔드포인트의 경우

기존 VPC 엔드포인트에 프라이빗 DNS를 사용하려면 다음 예제 명령을 사용하고 사용자 입력 자리 표시자를 자신의 정보로 바꾸세요.

aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=false

기존 VPC 엔드포인트를 인바운드 Resolver 전용 프라이빗 DNS를 활성화하도록 업데이트하려면 다음 예제를 사용하고 샘플 값을 자신의 값으로 바꾸세요.

aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true

S3 인터페이스 엔드포인트에서 버킷, 액세스 포인트 및 Amazon S3 Control API 작업 접근

AWS CLI 또는 AWS SDK를 사용해 S3 인터페이스 엔드포인트를 통해 버킷, S3 액세스 포인트 및 Amazon S3 Control API 작업에 접근할 수 있어요.

다음 이미지는 VPC 엔드포인트의 DNS 이름을 찾을 수 있는 VPC 콘솔의 세부 정보(Details) 탭을 보여줘요. 이 예제에서 VPC 엔드포인트 ID(vpce-id)는 vpce-0e25b8cdd720f900e이고 DNS 이름은 *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com이에요.

DNS 이름을 사용해 리소스에 접근할 때 *를 적절한 값으로 바꾸세요. * 대신 사용할 적절한 값은 다음과 같아요.

  • bucket
  • accesspoint
  • control

예를 들어 버킷에 접근하려면 다음과 같은 DNS 이름을 사용해요.

bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com

DNS 이름을 사용해 버킷, 액세스 포인트 및 Amazon S3 Control API 작업에 접근하는 방법의 예제는 AWS CLI 예제 및 AWS SDK 예제의 다음 섹션을 참고하세요.

엔드포인트별 DNS 이름을 보는 방법에 대한 자세한 내용은 VPC 사용자 안내서의 엔드포인트 서비스 프라이빗 DNS 이름 구성 보기를 참고하세요.

AWS CLI 예제

AWS CLI 명령에서 S3 인터페이스 엔드포인트를 통해 S3 버킷, S3 액세스 포인트 또는 Amazon S3 Control API 작업에 접근하려면 --region 및 --endpoint-url 매개 변수를 사용해요.

예제: 엔드포인트 URL을 사용해 버킷의 객체 나열

다음 예제에서 버킷 이름 my-bucket, 리전 us-east-1, VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com의 DNS 이름을 자신의 정보로 바꾸세요.

aws s3 ls s3://my-bucket/ --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com

예제: 엔드포인트 URL을 사용해 액세스 포인트의 객체 나열

  • 방법 1 – 액세스 포인트 엔드포인트와 함께 액세스 포인트의 ARN 사용 ARN us-east-1:123456789012:accesspoint/accesspointexamplename, 리전 us-east-1, VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com을 자신의 정보로 바꾸세요.
    aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/accesspointexamplename --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
    
    명령이 성공적으로 실행되지 않으면 AWS CLI를 최신 버전으로 업데이트하고 다시 시도해요. 업데이트 지침에 대한 자세한 내용은 AWS Command Line Interface 사용자 안내서의 최신 AWS CLI 설치 또는 업데이트를 참고하세요.
  • 방법 2 – 리전별 버킷 엔드포인트와 함께 액세스 포인트의 별칭 사용 다음 예제에서 액세스 포인트 별칭 accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias, 리전 us-east-1, VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com를 자신의 정보로 바꾸세요.
    aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
    
  • 방법 3 – 액세스 포인트 엔드포인트와 함께 액세스 포인트의 별칭 사용 먼저 버킷을 호스트 이름의 일부로 포함하는 S3 엔드포인트를 구성하려면 aws s3api가 사용할 주소 지정 스타일을 virtual로 설정해요. AWS configure에 대한 자세한 내용은 AWS Command Line Interface 사용자 안내서의 구성 및 자격 증명 파일 설정을 참고하세요.
    aws configure set default.s3.addressing_style virtual
    
    그런 다음 다음 예제에서 액세스 포인트 별칭 accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias, 리전 us-east-1, VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com를 자신의 정보로 바꾸세요. 액세스 포인트 별칭에 대한 자세한 내용은 액세스 포인트 별칭을 참고하세요.
    aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
    

예제: 엔드포인트 URL을 사용해 S3 Control API 작업으로 작업 나열

다음 예제에서 리전 us-east-1, VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com, 계정 ID 12345678을 자신의 정보로 바꾸세요.

aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com list-jobs --account-id 12345678

AWS SDK 예제

AWS SDK를 사용할 때 S3 인터페이스 엔드포인트를 통해 S3 버킷, S3 액세스 포인트 또는 Amazon S3 Control API 작업에 접근하려면 SDK를 최신 버전으로 업데이트해요. 그런 다음 S3 인터페이스 엔드포인트를 통해 버킷, 액세스 포인트 또는 Amazon S3 Control API 작업에 접근하기 위한 엔드포인트 URL을 사용하도록 클라이언트를 구성해요.

  • SDK for Python (Boto3): 예제: 엔드포인트 URL을 사용해 S3 버킷 접근 다음 예제에서 리전 us-east-1 및 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com을 자신의 정보로 바꾸세요.
    s3_client = session.client(
        service_name='s3',
        region_name='us-east-1',
        endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
    )
    
    예제: 엔드포인트 URL을 사용해 S3 액세스 포인트 접근 다음 예제에서 리전 us-east-1 및 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com을 자신의 정보로 바꾸세요.
    ap_client = session.client(
        service_name='s3',
        region_name='us-east-1',
        endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
    )
    
    예제: 엔드포인트 URL을 사용해 Amazon S3 Control API 접근 다음 예제에서 리전 us-east-1 및 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com을 자신의 정보로 바꾸세요.
    control_client = session.client(
        service_name='s3control',
        region_name='us-east-1',
        endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
    )
    
  • SDK for Java 1.x: 예제: 엔드포인트 URL을 사용해 S3 버킷 접근 다음 예제에서 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com을 자신의 정보로 바꾸세요.
    // bucket client
    final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
            new AwsClientBuilder.EndpointConfiguration(
                    "https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                    Regions.DEFAULT_REGION.getName()
            )
    ).build();
    List<Bucket> buckets = s3.listBuckets();
    
    예제: 엔드포인트 URL을 사용해 S3 액세스 포인트 접근 다음 예제에서 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com 및 ARN us-east-1:123456789012:accesspoint/prod를 자신의 정보로 바꾸세요.
    // accesspoint client
    final AmazonS3 s3accesspoint = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
            new AwsClientBuilder.EndpointConfiguration(
                    "https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                    Regions.DEFAULT_REGION.getName()
            )
    ).build();
    ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-east-1:123456789012:accesspoint/prod");
    
    예제: 엔드포인트 URL을 사용해 Amazon S3 Control API 작업 접근 다음 예제에서 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com을 자신의 정보로 바꾸세요.
    // control client
    final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration(
            new AwsClientBuilder.EndpointConfiguration(
                    "https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                    Regions.DEFAULT_REGION.getName()
            )
    ).build();
    final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());
    
  • SDK for Java 2.x: 예제: 엔드포인트 URL을 사용해 S3 버킷 접근 다음 예제에서 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com 및 리전 Region.US_EAST_1을 자신의 정보로 바꾸세요.
    // bucket client
    Region region = Region.US_EAST_1;
    s3Client = S3Client.builder().region(region)
                       .endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                       .build()
    
    예제: 엔드포인트 URL을 사용해 S3 액세스 포인트 접근 다음 예제에서 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com 및 리전 Region.US_EAST_1을 자신의 정보로 바꾸세요.
    // accesspoint client
    Region region = Region.US_EAST_1;
    s3Client = S3Client.builder().region(region)
                       .endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                       .build()
    
    예제: 엔드포인트 URL을 사용해 Amazon S3 Control API 접근 다음 예제에서 VPC 엔드포인트 ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com 및 리전 Region.US_EAST_1을 자신의 정보로 바꾸세요.
    // control client
    Region region = Region.US_EAST_1;
    s3ControlClient = S3ControlClient.builder().region(region)
                                     .endpointOverride(URI.create("https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                                     .build()
    

온프레미스 DNS 구성 업데이트

Amazon S3의 인터페이스 엔드포인트에 접근할 때 엔드포인트별 DNS 이름을 사용한다면 온프레미스 DNS 리졸버를 업데이트할 필요가 없어요. 공용 Amazon S3 DNS 도메인에서 인터페이스 엔드포인트의 프라이빗 IP 주소로 엔드포인트별 DNS 이름을 확인할 수 있어요.

VPC에 게이트웨이 엔드포인트 또는 인터넷 게이트웨이 없이 인터페이스 엔드포인트를 사용해 Amazon S3 접근

VPC의 인터페이스 엔드포인트는 다음 다이어그램에 설명된 대로 VPC 내 애플리케이션과 온프레미스 애플리케이션 모두를 Amazon 네트워크를 통해 Amazon S3로 라우팅할 수 있어요.

다이어그램은 다음을 설명해요.

  • 온프레미스 네트워크는 Direct Connect 또는 Site-to-Site VPN을 사용해 VPC A에 연결돼요.
  • 온프레미스 및 VPC A의 애플리케이션은 엔드포인트별 DNS 이름을 사용해 S3 인터페이스 엔드포인트를 통해 Amazon S3에 접근해요.
  • 온프레미스 애플리케이션은 Direct Connect(또는 Site-to-Site VPN)를 통해 VPC의 인터페이스 엔드포인트로 데이터를 보내요. AWS PrivateLink는 인터페이스 엔드포인트에서 AWS 네트워크를 통해 Amazon S3로 데이터를 이동해요.
  • VPC 내 애플리케이션도 인터페이스 엔드포인트로 트래픽을 보내요. AWS PrivateLink는 인터페이스 엔드포인트에서 AWS 네트워크를 통해 Amazon S3로 데이터를 이동해요.

같은 VPC에서 게이트웨이 엔드포인트와 인터페이스 엔드포인트를 함께 사용해 Amazon S3 접근

다음 다이어그램과 같이 같은 VPC에서 인터페이스 엔드포인트를 만들고 기존 게이트웨이 엔드포인트를 유지할 수 있어요. 이 접근 방식을 사용하면 VPC 내 애플리케이션이 과금되지 않는 게이트웨이 엔드포인트를 통해 Amazon S3에 계속 접근할 수 있어요. 그런 다음 온프레미스 애플리케이션만 인터페이스 엔드포인트를 사용해 Amazon S3에 접근해요. 이 방식으로 Amazon S3에 접근하려면 온프레미스 애플리케이션을 Amazon S3의 엔드포인트별 DNS 이름을 사용하도록 업데이트해야 해요.

다이어그램은 다음을 설명해요.

  • 온프레미스 애플리케이션은 엔드포인트별 DNS 이름을 사용해 Direct Connect(또는 Site-to-Site VPN)를 통해 VPC 내의 인터페이스 엔드포인트로 데이터를 보내요. AWS PrivateLink는 AWS 네트워크를 통해 인터페이스 엔드포인트에서 Amazon S3로 데이터를 이동해요.
  • 기본 리전별 Amazon S3 이름을 사용해 VPC 내 애플리케이션은 AWS 네트워크를 통해 Amazon S3에 연결되는 게이트웨이 엔드포인트로 데이터를 보내요.

게이트웨이 엔드포인트에 대한 자세한 내용은 VPC 사용자 안내서의 게이트웨이 VPC 엔드포인트를 참고하세요.

Amazon S3용 VPC 엔드포인트 정책 생성

VPC 엔드포인트에 Amazon S3에 대한 접근을 제어하는 엔드포인트 정책을 연결할 수 있어요. 정책은 다음 정보를 지정해요.

  • 작업을 수행할 수 있는 AWS Identity and Access Management(IAM) 보안 주체
  • 수행할 수 있는 작업
  • 작업을 수행할 수 있는 리소스

또한 버킷 정책에서 aws:sourceVpce 조건을 사용해 특정 VPC 엔드포인트에서 특정 버킷에 대한 접근을 제한하는 Amazon S3 버킷 정책을 사용할 수도 있어요. 다음 예제는 버킷 또는 엔드포인트에 대한 접근을 제한하는 정책을 보여줘요.

관련 주제

예제: VPC 엔드포인트에서 특정 버킷에 대한 접근 제한

특정 Amazon S3 버킷에만 접근을 제한하는 엔드포인트 정책을 만들 수 있어요. VPC에 버킷을 사용하는 다른 AWS 서비스가 있다면 이 유형의 정책이 유용해요. 다음 버킷 정책은 amzn-s3-demo-bucket1에만 접근을 제한해요. 이 엔드포인트 정책을 사용하려면 amzn-s3-demo-bucket1을 버킷 이름으로 바꾸세요.

  • JSON:
{
  "Version": "2012-10-17",
  "Id": "Policy1415115909151",
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket1",
                   "arn:aws:s3:::amzn-s3-demo-bucket1/*"]
    }
  ]
}

예제: VPC 엔드포인트에서 특정 계정의 버킷에 대한 접근 제한

특정 AWS 계정의 S3 버킷에만 접근을 제한하는 엔드포인트 정책을 만들 수 있어요. VPC 내의 클라이언트가 소유하지 않은 버킷에 접근하는 것을 방지하려면 엔드포인트 정책에 다음 구문을 사용해요. 다음 예제 구문은 단일 AWS 계정 ID 111122223333이 소유한 리소스에 접근을 제한하는 정책을 만들어요.

{
  "Statement": [
    {
      "Sid": "Access-to-bucket-in-specific-account-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}

참고 접근 중인 리소스의 AWS 계정 ID를 지정하려면 IAM 정책에서 aws:ResourceAccount 또는 s3:ResourceAccount 키를 사용할 수 있어요. 그러나 일부 AWS 서비스는 AWS 관리 버킷에 대한 접근에 의존한다는 점을 유의하세요. 따라서 IAM 정책에서 aws:ResourceAccount 또는 s3:ResourceAccount 키를 사용하면 이러한 리소스에 대한 접근에도 영향을 줄 수 있어요.

예제: S3 버킷 정책에서 특정 VPC 엔드포인트에 대한 접근 제한

다음 Amazon S3 버킷 정책은 VPC 엔드포인트 vpce-1a2b3c4d에서만 특정 버킷 amzn-s3-demo-bucket2에 대한 접근을 허용해요. 정책은 지정된 엔드포인트를 사용하지 않으면 버킷에 대한 모든 접근을 거부해요. aws:sourceVpce 조건은 엔드포인트를 지정하며 VPC 엔드포인트 리소스의 ARN(Amazon Resource Name)이 아니라 엔드포인트 ID만 필요해요. 이 버킷 정책을 사용하려면 amzn-s3-demo-bucket2 및 vpce-1a2b3c4d를 버킷 이름과 엔드포인트로 바꾸세요.

중요

  • 다음 Amazon S3 버킷 정책을 적용해 특정 VPC 엔드포인트에만 접근을 제한하면 의도하지 않게 버킷에 대한 접근을 차단할 수 있어요. 버킷 접근을 VPC 엔드포인트에서 발생하는 연결로만 제한하려는 버킷 정책은 버킷에 대한 모든 연결을 차단할 수 있어요. 이 문제를 해결하는 방법에 대한 정보는 Support Knowledge Center의 버킷 정책에 잘못된 VPC 또는 VPC 엔드포인트 ID가 있습니다. 정책을 수정해 버킷에 접근하려면 어떻게 해야 하나요?를 참고하세요.
  • 다음 예제 정책을 사용하기 전에 VPC 엔드포인트 ID를 사용 사례에 적절한 값으로 바꾸세요. 그렇지 않으면 버킷에 접근할 수 없게 됩니다.
  • 이 정책은 콘솔 요청이 지정된 VPC 엔드포인트에서 발생하지 않으므로 지정된 버킷에 대한 콘솔 접근을 비활성화해요.
  • JSON:
{
  "Version": "2012-10-17",
  "Id": "Policy1415115909152",
  "Statement": [
    {
      "Sid": "Access-to-specific-VPCE-only",
      "Principal": "*",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2",
                   "arn:aws:s3:::amzn-s3-demo-bucket2/*"],
      "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" }}
    }
  ]
}

더 많은 정책 예제는 VPC 사용자 안내서의 Amazon S3용 엔드포인트를 참고하세요.

VPC 연결에 대한 자세한 내용은 AWS 백서 Amazon Virtual Private Cloud 연결 옵션의 네트워크-VPC 연결 옵션을 참고하세요.

더 알아보기 (Learn more)