AWS PrivateLink for DynamoDB - Amazon DynamoDB

AWS PrivateLink for DynamoDB

AWS PrivateLink for DynamoDB를 사용하면 Virtual Private Cloud(Amazon VPC)에서 인터페이스 Amazon VPC 엔드포인트(인터페이스 엔드포인트)를 프로비저닝할 수 있습니다. 이러한 엔드포인트는 VPN 및 AWS Direct Connect를 통해 온프레미스에 있는 애플리케이션에서 또는 Amazon VPC 피어링을 통해 다른 AWS 리전에 있는 애플리케이션에서 직접 액세스할 수 있습니다. AWS PrivateLink 및 인터페이스 엔드포인트를 사용하면 애플리케이션에서 DynamoDB로의 프라이빗 네트워크 연결을 단순화할 수 있습니다.

VPC의 애플리케이션은 DynamoDB 작업을 위해 DynamoDB 인터페이스 VPC 엔드포인트와 통신하는 데 퍼블릭 IP 주소가 필요하지 않습니다. 인터페이스 엔드포인트는 Amazon VPC의 서브넷에서 프라이빗 IP 주소가 할당된 하나 이상의 탄력적 네트워크 인터페이스(ENI)로 표시됩니다. 인터페이스 엔드포인트를 통한 DynamoDB에 대한 요청은 Amazon 네트워크에 유지됩니다. 또한, AWS Direct Connect 또는 AWS Virtual Private Network(AWS VPN)을 통해 온프레미스 애플리케이션에서 Amazon VPC의 인터페이스 엔드포인트에 액세스할 수 있습니다. Amazon VPC를 온프레미스 네트워크에 연결하는 방법에 대한 자세한 내용은 AWS Direct Connect 사용 설명서AWS Site-to-Site VPN 사용 설명서를 참조하세요.

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

Amazon DynamoDB용 Amazon VPC 엔드포인트의 유형

두 가지 유형의 Amazon VPC 엔드포인트, 즉 게이트웨이 엔드포인트와 인터페이스 엔드포인트(AWS PrivateLink 사용)를 사용하여 Amazon DynamoDB에 액세스할 수 있습니다. 게이트웨이 엔드포인트는 AWS 네트워크를 통해 Amazon VPC에서 DynamoDB에 액세스하기 위해 라우팅 테이블에 지정하는 게이트웨이입니다. 인터페이스 엔드포인트는 프라이빗 IP 주소를 통해 온프레미스의 Amazon VPC 내에서 또는 Amazon VPC 피어링이나 AWS Transit Gateway를 사용하여 다른 AWS 리전의 Amazon VPC에서 DynamoDB로 요청을 라우팅함으로써 게이트웨이 엔드포인트의 기능을 확장합니다. 자세한 내용은 Amazon VPC 피어링이란?Transit Gateway와 Amazon VPC 피어링 비교를 참조하세요.

인터페이스 엔드포인트는 게이트웨이 엔드포인트와 호환됩니다. Amazon VPC에 기존 게이트웨이 엔드포인트가 있는 경우, 동일한 Amazon VPC에서 두 가지 유형의 엔드포인트를 모두 사용할 수 있습니다.

DynamoDB용 게이트웨이 엔드포인트

DynamoDB용 인터페이스 엔드포인트

두 경우 모두, 네트워크 트래픽은 AWS 네트워크에 남아 있습니다.

Amazon DynamoDB 퍼블릭 IP 주소 사용

Amazon VPC의 프라이빗 IP 주소를 사용하여 Amazon DynamoDB에 액세스

온프레미스에서의 액세스를 허용하지 않음

온프레미스에서의 액세스 허용

다른 AWS 리전에서의 액세스를 허용하지 않음

Amazon VPC 피어링 또는 AWS Transit Gateway를 사용하여 다른 AWS 리전의 Amazon VPC 엔드포인트에서 액세스 허용

미청구

청구

게이트웨이 엔드포인트에 대한 자세한 내용은 AWS PrivateLink 안내서에서 Gateway Amazon VPC endpoints를 참조하세요.

Amazon VPC 고려 사항이 AWS PrivateLink for Amazon DynamoDB에 적용됩니다. 자세한 내용은 AWS PrivateLink 가이드의 인터페이스 엔드포인트 고려 사항AWS PrivateLink 할당량을 참조하십시오. 또한 다음과 같은 제한 사항이 적용됩니다.

AWS PrivateLink for Amazon DynamoDB는 다음을 지원하지 않습니다.

AWS PrivateLink는 현재 Amazon DynamoDB Streams 엔드포인트에 지원되지 않습니다.

활성화한 각 AWS PrivateLink 엔드포인트에 대해 초당 최대 5만 개의 요청을 제출할 수 있습니다.

참고

AWS PrivateLink 엔드포인트에 대한 네트워크 연결 제한 시간은 DynamoDB 오류 응답 범위에 포함되지 않으므로 PrivateLink 엔드포인트에 연결하는 애플리케이션에서 적절하게 처리해야 합니다.

Amazon VPC 엔드포인트 생성

Amazon VPC 인터페이스 엔드포인트를 생성하려면 AWS PrivateLink 안내서의 Create an Amazon VPC endpoint를 참조하세요.

Amazon DynamoDB 인터페이스 엔드포인트에 액세스

인터페이스 엔드포인트를 생성하면 DynamoDB는 리전 및 영역이라는 두 가지 유형의 엔드포인트별 DynamoDB DNS 이름을 생성합니다.

  • 리전 DNS 이름에는 고유한 Amazon VPC 엔드포인트 ID, 서비스 식별자, AWS 리전, vpce.amazonaws.com이 포함됩니다. 예를 들어, Amazon VPC 엔드포인트 ID vpce-1a2b3c4d의 경우, 생성된 DNS 이름은 vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com과 비슷할 수 있습니다.

  • 영역별 DNS 이름에는 가용 영역이 포함됩니다(예: vpce-1a2b3c4d-5e6f-us-east-1a.dynamodb.us-east-1.vpce.amazonaws.com). 아키텍처가 가용 영역을 분리하는 경우 이 옵션을 사용할 수 있습니다. 예를 들어, 오류를 제한하거나 리전별 데이터 전송 비용을 줄이는 데 사용할 수 있습니다.

엔드포인트별 DynamoDB DNS 이름은 DynamoDB 퍼블릭 DNS 도메인에서 확인할 수 있습니다.

DynamoDB 인터페이스 엔드포인트에서 DynamoDB 테이블에 및 제어 API 작업에 액세스

AWS CLI 또는 AWS SDK를 사용하여 DynamoDB 테이블에 액세스하고 DynamoDB 인터페이스 엔드포인트를 통해 API 작업을 제어할 수 있습니다.

AWS CLI 명령의 DynamoDB 인터페이스 엔드포인트를 통해 DynamoDB 테이블 또는 DynamoDB 제어 API 작업에 액세스하려면 --region--endpoint-url 파라미터를 사용하세요.

예: VPC 엔드포인트 생성

aws ec2 create-vpc-endpoint \ --region us-east-1 \ --service-name dynamodb-service-name \ --vpc-id client-vpc-id \ --subnet-ids client-subnet-id \ --vpc-endpoint-type Interface \ --security-group-ids client-sg-id

예: VPC 엔드포인트 수정

aws ec2 modify-vpc-endpoint \ --region us-east-1 \ --vpc-endpoint-id client-vpc-endpoint-id \ --policy-document policy-document \ #example optional parameter --add-security-group-ids security-group-ids \ #example optional parameter # any additional parameters needed, see Privatelink documentation for more details

예: 엔드포인트 URL을 사용하여 테이블 나열

다음 예시에서 리전 us-east-1 및 VPC 엔드포인트 ID의 DNS 이름 vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com을 실제 정보로 바꿉니다.

aws dynamodb --region us-east-1 —endpoint https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com list-tables

AWS SDK를 사용하여 DynamoDB 인터페이스 엔드포인트를 통해 DynamoDB 테이블 또는 DynamoDB 제어 API 작업에 액세스하려면 SDK를 최신 버전으로 업데이트하세요. 그런 다음, DynamoDB 인터페이스 엔드포인트를 통해 테이블 또는 DynamoDB 제어 API 작업에 액세스하기 위해 엔드포인트 URL을 사용하도록 클라이언트를 구성합니다.

SDK for Python (Boto3)
예: 엔드포인트 URL을 사용하여 DynamoDB 테이블에 액세스

다음 예에서 리전 us-east-1 및 VPC 엔드포인트 ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com을 실제 정보로 바꿉니다.

ddb_client = session.client( service_name='dynamodb', region_name='us-east-1', endpoint_url='https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com' )
SDK for Java 1.x
예: 엔드포인트 URL을 사용하여 DynamoDB 테이블에 액세스

다음 예에서 리전 us-east-1 및 VPC 엔드포인트 ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com을 실제 정보로 바꿉니다.

//client build with endpoint config final AmazonDynamoDB dynamodb = AmazonDynamoDBClientBuilder.standard().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build();
SDK for Java 2.x
예: 엔드포인트 URL을 사용하여 DynamoDB 테이블에 액세스

다음 예에서 리전 us-east-1 및 VPC 엔드포인트 ID https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com을 실제 정보로 바꿉니다.

Region region = Region.US_EAST_1; dynamoDbClient = DynamoDbClient.builder().region(region) .endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com")) .build()

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

엔드포인트별 DNS 이름을 사용하여 DynamoDB의 인터페이스 엔드포인트에 액세스할 때는 온프레미스 DNS 리졸버를 업데이트할 필요가 없습니다. 퍼블릭 DynamoDB DNS 도메인의 인터페이스 엔드포인트의 프라이빗 IP 주소로 엔드포인트별 DNS 이름을 확인할 수 있습니다.

인터페이스 엔드포인트를 사용하여 Amazon VPC의 게이트웨이 엔드포인트 또는 인터넷 게이트웨이 없이 DynamoDB에 액세스

다음 다이어그램과 같이 Amazon VPC의 인터페이스 엔드포인트는 Amazon 네트워크를 통해 Amazon VPC 내 애플리케이션과 온프레미스 애플리케이션을 모두 DynamoDB로 라우팅할 수 있습니다.

데이터 흐름 다이어그램은 인터페이스 엔드포인트 및 AWS PrivateLink를 사용하여 온프레미스 및 Amazon VPC 내 앱에서 DynamoDB로 액세스하는 방법을 보여줍니다.

다이어그램은 다음을 보여 줍니다.

  • 온프레미스 네트워크에서는 AWS Direct Connect 또는 AWS VPN을 사용하여 Amazon VPC A에 연결합니다.

  • 온프레미스 및 Amazon VPC A의 애플리케이션은 엔드포인트별 DNS 이름을 사용하여 DynamoDB 인터페이스 엔드포인트를 통해 DynamoDB에 액세스합니다.

  • 온프레미스 애플리케이션은 AWS Direct Connect(또는 AWS VPN)를 통해 Amazon VPC에서 인터페이스 엔드포인트로 데이터를 전송합니다. AWS PrivateLink는 AWS 네트워크를 통해 인터페이스 엔드포인트에서 DynamoDB로 데이터를 이동합니다.

  • Amazon VPC 내 애플리케이션도 인터페이스 엔드포인트로 데이터를 전송합니다. AWS PrivateLink는 AWS 네트워크를 통해 인터페이스 엔드포인트에서 DynamoDB로 데이터를 이동합니다.

동일한 Amazon VPC에서 게이트웨이 엔드포인트와 인터페이스 엔드포인트를 함께 사용하여 DynamoDB에 액세스

다음 다이어그램과 같이 인터페이스 엔드포인트를 생성하고 기존 게이트웨이 엔드포인트를 동일한 Amazon VPC에 유지할 수 있습니다. 이 접근법을 사용하면 Amazon VPC 내 애플리케이션이 게이트웨이 엔드포인트를 통해 DynamoDB에 계속 액세스할 수 있으며, 요금은 청구되지 않습니다. 그런 다음, 온프레미스 애플리케이션만 인터페이스 엔드포인트를 사용하여 DynamoDB에 액세스합니다. 이러한 방식으로 DynamoDB에 액세스하려면 DynamoDB에 대한 엔드포인트별 DNS 이름을 사용하도록 온프레미스 애플리케이션을 업데이트해야 합니다.

게이트웨이 엔드포인트와 인터페이스 엔드포인트를 함께 사용하여 DynamoDB에 액세스하는 방법을 보여주는 데이터 흐름 다이어그램.

다이어그램은 다음을 보여 줍니다.

  • 온프레미스 애플리케이션은 엔드포인트별 DNS 이름을 사용하여 AWS Direct Connect(또는 AWS VPN)를 통해 Amazon VPC에서 인터페이스 엔드포인트로 데이터를 전송합니다. AWS PrivateLink는 AWS 네트워크를 통해 인터페이스 엔드포인트에서 DynamoDB로 데이터를 이동합니다.

  • Amazon VPC 내 애플리케이션은 기본 리전 DynamoDB 이름을 사용하여 AWS 네트워크를 통해 DynamoDB에 연결하는 게이트웨이 엔드포인트로 데이터를 전송합니다.

게이트웨이 엔드포인트에 대한 자세한 내용은 Amazon VPC 사용 설명서의 Gateway Amazon VPC endpoints를 참조하세요.

DynamoDB에 대한 Amazon VPC 엔드포인트 정책 생성

DynamoDB에 대한 액세스를 제어하는 Amazon VPC 엔드포인트에 엔드포인트 정책을 연결할 수 있습니다. 이 정책은 다음 정보를 지정합니다.

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

  • 수행할 수 있는 작업

  • 작업을 수행할 수 있는 리소스

특정 DynamoDB 테이블로만 액세스를 제한하는 엔드포인트 정책을 생성할 수 있습니다. 이 정책 유형은 Amazon VPC에 테이블을 사용하는 다른 AWS 서비스가 있을 경우 유용합니다. 다음 테이블 정책은 DOC-EXAMPLE-TABLE로만 액세스를 제한합니다. 이 엔드포인트 정책을 사용하려면 DOC-EXAMPLE-TABLE을 실제 테이블의 이름으로 대체합니다.

{ "Version": "2012-10-17", "Id": "Policy1216114807515", "Statement": [ { "Sid": "Access-to-specific-table-only", "Principal": "*", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem" ], "Effect": "Allow", "Resource": ["arn:aws:dynamodb:::DOC-EXAMPLE-TABLE", "arn:aws:dynamodb:::DOC-EXAMPLE-TABLE/*"] } ] }