

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 자습서: 인터페이스 VPC 엔드포인트를 사용하여 Amazon Keyspaces에 연결
<a name="vpc-endpoints-tutorial"></a>

이 자습서에서는 Amazon Keyspaces에 대한 인터페이스 VPC 엔드포인트를 설정 및 사용하는 절차를 살펴봅니다.

*인터페이스 VPC 엔드포인트*를 사용하면 Amazon VPC에서 실행되는 Virtual Private Cloud(VPC)와 Amazon Keyspaces 간에 프라이빗 통신이 가능해집니다. 인터페이스 VPC 엔드포인트는 VPCs와 AWS 서비스 간의 프라이빗 통신을 지원하는 AWS 서비스 AWS PrivateLink인에 의해 구동됩니다. 자세한 내용은 [인터페이스 VPC 엔드포인트에서 Amazon Keyspaces 사용](vpc-endpoints.md) 단원을 참조하십시오.

**Topics**
+ [

# 자습서 사전 조건 및 고려 사항
](vpc-endpoints-tutorial.before-you-begin.md)
+ [

# 1단계: Amazon EC2 인스턴스 시작
](vpc-endpoints-tutorial.launch-ec2-instance.md)
+ [

# 2단계: Amazon EC2 인스턴스 구성
](vpc-endpoints-tutorial.configure-ec2-instance.md)
+ [

# 3단계: Amazon Keyspaces에 대한 VPC 엔드포인트 생성
](vpc-endpoints-tutorial.create-endpoint.md)
+ [

# 4단계: VPC 엔드포인트 연결을 위한 권한 구성
](vpc-endpoints-tutorial.permissions.md)
+ [

# 5단계: CloudWatch를 사용하여 모니터링 구성
](vpc-endpoints-tutorial.monitoring.md)
+ [

# 6단계: (선택 사항) 애플리케이션의 연결 풀 크기를 구성하는 모범 사례
](vpc-endpoints-tutorial.connections.md)
+ [

# 7단계: (선택 사항) 정리
](vpc-endpoints-tutorial.clean-up.md)

# 자습서 사전 조건 및 고려 사항
<a name="vpc-endpoints-tutorial.before-you-begin"></a>

이 자습서를 시작하기 전에의 AWS 설정 지침을 따르세요[Amazon Keyspaces(Apache Cassandra용) 액세스](accessing.md). 이러한 단계에는 Amazon Keyspaces에 대한 액세스 권한이 있는 AWS Identity and Access Management (IAM) 보안 주체 생성 AWS 및 가입이 포함됩니다. IAM 사용자의 이름과 액세스 키는 이 자습서의 뒷부분에서 필요하므로 기록해 둡니다.

이 자습서의 뒷부분에서 VPC 엔드포인트를 사용하여 연결을 테스트할 `myKeyspace` 이름과 하나 이상의 테이블을 포함하는 키스페이스를 생성합니다. 자세한 지침은 [Amazon Keyspaces(Apache Cassandra용) 시작](getting-started.md)에서 확인할 수 있습니다.

필수 단계를 완료한 후 [1단계: Amazon EC2 인스턴스 시작](vpc-endpoints-tutorial.launch-ec2-instance.md)로 진행합니다.

# 1단계: Amazon EC2 인스턴스 시작
<a name="vpc-endpoints-tutorial.launch-ec2-instance"></a>

이 단계에서는 기본 Amazon VPC에서 Amazon EC2 인스턴스를 시작합니다. 그런 다음 Amazon Keyspaces에 대해 VPC 엔드포인트를 생성하고 사용할 수 있습니다.

**Amazon EC2 인스턴스를 시작하려면**

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

1. **인스턴스 시작**을 선택하고 다음을 수행합니다.

   EC2 콘솔 대시보드의 **인스턴스 시작** 상자에서 **인스턴스 시작**을 선택한 다음 표시되는 옵션에서 **인스턴스 시작**을 선택합니다.

   **이름 및 태그** 아래의 **이름**에 인스턴스를 설명하는 이름을 입력합니다.

   **애플리케이션 및 OS 이미지(Amazon Machine Image)**에서:
   + **빠른 시작**을 선택한 다음 Ubuntu를 선택합니다. 인스턴스의 운영 체제(OS)입니다.
   + **Amazon Machine Image(AMI)**에서 **프리 티어 사용 가능**으로 표시된 기본 이미지를 사용할 수 있습니다. *Amazon Machine Image(AMI)*는 기본 구성으로서 인스턴스의 템플릿 역할을 합니다.

   **인스턴스 유형**에서:
   + **인스턴스 유형** 목록에서 기본적으로 선택된 **t2.micro** 인스턴스 유형을 선택합니다.

   **키 페어(로그인)**에서 **키 페어 이름**에 대해 이 자습서에 사용할 수 있는 다음 옵션 중 하나를 선택합니다.
   + Amazon EC2 키 페어가 없는 경우 **새 키 페어 생성**을 선택하고 지침을 따릅니다. 프라이빗 키 파일(*.pem* 파일)을 다운로드하라는 메시지가 표시됩니다. 나중에 Amazon EC2 인스턴스에 로그인할 때 이 파일이 필요하므로 파일 경로를 기록해 둡니다.
   + Amazon EC2 키 페어가 이미 있으면 **키 페어 선택**으로 이동하고 목록에서 해당 키 페어를 선택합니다. Amazon EC2 인스턴스에 로그인하려면 프라이빗 키 파일(*.pem* 파일)이 있어야 합니다.

   **네트워크 설정**에서:
   + **편집**을 선택합니다.
   + **기존 보안 그룹 선택**을 선택합니다.
   + 보안 그룹 목록에서 **기본값**을 선택합니다. 이것이 VPC의 기본 보안 그룹입니다.

   **요약**으로 계속 진행합니다.
   + **요약** 패널에서 인스턴스 구성 요약을 검토합니다. 준비가 완료되면 **인스턴스 시작**을 선택합니다.

1. 새 Amazon EC2 인스턴스의 완료 화면에서 **인스턴스에 연결** 타일을 선택합니다. 다음 화면에는 새 인스턴스에 연결하는 데 필요한 정보와 필요한 단계가 표시됩니다. 다음 정보를 기록해 둡니다.
   + 키 파일을 보호하기 위한 샘플 명령
   + 연결 문자열
   + **퍼블릭 IPv4 DNS** 이름

   이 페이지의 정보를 기록한 후 이 자습서([2단계: Amazon EC2 인스턴스 구성](vpc-endpoints-tutorial.configure-ec2-instance.md))의 다음 단계를 계속할 수 있습니다.

**참고**  
Amazon EC2 인스턴스가 사용 가능한 상태가 되는 데 몇 분 정도 걸립니다. 다음 단계로 이동하기 전에 **인스턴스 상태**가 `running`이고 모든 **상태 확인**이 통과되었는지 확인하십시오.

# 2단계: Amazon EC2 인스턴스 구성
<a name="vpc-endpoints-tutorial.configure-ec2-instance"></a>

Amazon EC2 인스턴스를 사용할 수 있는 경우 해당 인스턴스에 로그인하고 첫 사용이 가능한 상태로 준비할 수 있습니다.

**참고**  
다음 단계에서는 사용자가 Linux를 실행하는 컴퓨터에서 Amazon EC2 인스턴스로 연결되어 있다고 가정합니다. 다른 연결 방법은 **Amazon EC2 사용 설명서의 [Linux 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)을 참조하세요.

**Amazon EC2 인스턴스를 구성하려면**

1. Amazon EC2 인스턴스에 대한 인바운드 SSH 트래픽을 승인해야 합니다. 이를 위해 새로운 EC2 보안 그룹을 생성하여 EC2 인스턴스에 할당합니다.

   1. 탐색 창에서 **보안 그룹**을 선택합니다.

   1. **보안 그룹 생성**을 선택합니다. **보안 그룹 생성** 창에서 다음을 수행합니다.
      + **보안 그룹 이름** - 보안 그룹의 이름을 입력합니다. 예: `my-ssh-access`
      + **설명** - 보안 그룹에 대한 간단한 설명을 입력합니다.
      + **VPC** – 기본 VPC를 선택합니다.
      + **보안 그룹 규칙** 섹션에서 **규칙 추가**를 선택하고 다음을 수행합니다.
        + **유형** - **SSH**를 선택합니다.
        + **소스** - **내 IP**를 선택합니다.
        + **규칙 추가**를 선택합니다.

      페이지 하단에서 구성 설정을 확인하고 **보안 그룹 생성**을 선택합니다.

   1. 탐색 창에서 **인스턴스**를 선택합니다.

   1. [1단계: Amazon EC2 인스턴스 시작](vpc-endpoints-tutorial.launch-ec2-instance.md)에서 시작한 Amazon EC2 인스턴스를 선택합니다.

   1. **작업**을 선택하고 **보안**을 선택한 다음 **보안 그룹 변경**을 선택합니다.

   1. **보안 그룹 변경**에서 **연결된 보안 그룹**으로 이동하여이 절차의 앞부분에서 생성한 보안 그룹(예: `my-ssh-access`)을 입력합니다. 기존 `default` 보안 그룹도 선택되어야 합니다. 구성 설정을 확인하고 **저장**을 선택합니다.

1. 다음 명령을 사용하여 프라이빗 키 파일에 액세스하지 못하도록 보호합니다. 이 단계를 건너뛰면 연결이 실패합니다.

   ```
   chmod 400 path_to_file/my-keypair.pem
   ```

1. `ssh` 명령을 사용하여 Amazon EC2 인스턴스에 로그인합니다(아래 예 참조).

   ```
   ssh -i path_to_file/my-keypair.pem ubuntu@public-dns-name
   ```

   프라이빗 키 파일(*.pem* 파일)과 인스턴스의 퍼블릭 DNS 이름을 지정해야 합니다. ([1단계: Amazon EC2 인스턴스 시작](vpc-endpoints-tutorial.launch-ec2-instance.md) 섹션을 참조하세요.) 

   로그인 ID는 `ubuntu`입니다. 암호는 필요하지 않습니다.

   Amazon EC2 인스턴스에 대한 연결을 허용하는 방법에 대한 자세한 내용 및 AWS CLI 지침은 **Amazon EC2 사용 설명서에서 [Linux 인스턴스의 인바운드 트래픽 권한 부여](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html)를 참조하세요.

1. 최신 버전의 AWS Command Line Interface를 다운로드하여 설치합니다.

   1. `unzip`을 설치합니다.

      ```
      sudo apt install unzip
      ```

   1.  AWS CLI를 사용하여 `zip` 파일을 다운로드합니다.

      ```
      curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
      ```

   1. 파일 압축을 풉니다.

      ```
      unzip awscliv2.zip
      ```

   1. 를 설치합니다 AWS CLI.

      ```
      sudo ./aws/install
      ```

   1.  AWS CLI 설치 버전을 확인합니다.

      ```
      aws --version
      ```

      출력은 다음과 같아야 합니다.

      ```
      aws-cli/2.9.19 Python/3.9.11 Linux/5.15.0-1028-aws exe/x86_64.ubuntu.22 prompt/off
      ```

1. 다음 예제와 같이 AWS 자격 증명을 구성합니다. 메시지가 표시되면 AWS 액세스 키 ID, 보안 키 및 기본 리전 이름을 입력합니다.

   ```
   aws configure
    
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-1
   Default output format [None]:
   ```

1. IPv6 주소에서 인바운드 HTTP, HTTPS 및 SSH 액세스를 허용하는 규칙을 VPCs 보안 그룹에 추가합니다.

1. VPC 엔드포인트가 올바르게 구성되었는지 확인하려면 Amazon Keyspaces에 대한 `cqlsh` 연결을 사용해야 합니다. 에서 로컬 환경 또는 Amazon Keyspaces CQL 편집기를 사용하는 경우 AWS Management Console연결은 VPC 엔드포인트 대신 퍼블릭 엔드포인트를 자동으로 통과합니다. 이 자습서에서 VPC 엔드포인트 연결을 테스트하는 데 `cqlsh`를 사용하려면 [`cqlsh` 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md)의 설정 지침을 완료합니다.

이제 Amazon Keyspaces용 듀얼 스택 VPC 엔드포인트를 생성할 준비가 되었습니다.

# 3단계: Amazon Keyspaces에 대한 VPC 엔드포인트 생성
<a name="vpc-endpoints-tutorial.create-endpoint"></a>

이 단계에서는를 사용하여 Amazon Keyspaces에 대한 듀얼 스택 VPC 엔드포인트를 생성합니다 AWS CLI. VPC 콘솔을 사용하여 VPC 엔드포인트를 생성하려면 *AWS PrivateLink 가이드*의 [VPC 엔드포인트 생성](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint) 지침을 따를 수 있습니다. **서비스 이름**을 필터링할 때 **Cassandra**을 입력합니다.

**를 사용하여 VPC 엔드포인트를 생성하려면 AWS CLI**

1. 시작하기 전에 퍼블릭 엔드포인트를 사용하여 Amazon Keyspaces와 통신할 수 있는지 확인합니다.

   ```
   aws keyspaces list-tables --keyspace-name 'myKeyspace'
   ```

   출력에는 지정된 키스페이스에 포함된 Amazon Keyspaces 테이블 목록이 표시됩니다. 보유 중인 테이블이 없는 경우 목록이 비어있습니다.

   ```
   {
       "tables": [
           {
               "keyspaceName": "myKeyspace",
               "tableName": "myTable1",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/myTable1"
           },
           {
               "keyspaceName": "myKeyspace",
               "tableName": "myTable2",
               "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/catalog/table/myTable2"
           }
       ]
   }
   ```

1. Amazon Keyspaces가 현재 AWS 리전에서 VPC 엔드포인트를 생성하는 데 사용할 수 있는 서비스인지 확인합니다. (명령은 예제 출력에 이어 굵은 텍스트로 표시됩니다.)

   ```
   aws ec2 describe-vpc-endpoint-services
    
   {
       "ServiceNames": [
           "com.amazonaws.us-east-1.cassandra", 
           "com.amazonaws.us-east-1.cassandra-fips"
           "api.aws.us-east-1.cassandra-streams"
       ]
   }
   ```

   Amazon Keyspaces가 명령 출력에서 사용 가능한 서비스 중 하나인 경우 VPC 엔드포인트 생성을 진행할 수 있습니다.

1. IPv6 지원 듀얼 스택 엔드포인트를 사용하여 Amazon Keyspaces에 연결하려면 VPC가 IPv6를 지원하는지 확인하고 IPv6를 지원하는 서브넷을 구성합니다. 현재 IPv4만 지원하는 기존 VPC에 IPv6 지원을 추가하려면 *Amazon VPC 사용 설명서*의 VPC에 [ 대한 IPv6 지원을 참조하세요](https://docs.aws.amazon.com/vpc/latest/userguide/). IPv4

1. VPC 식별자 확인

   ```
   aws ec2 describe-vpcs
    
   {
       "Vpcs": [
           {
               "OwnerId": "111122223333",
               "InstanceTenancy": "default",
               "Ipv6CidrBlockAssociationSet": [
                   {
                       "AssociationId": "vpc-cidr-assoc-0000aaa0a00a00aa0",
                       "Ipv6CidrBlock": "2600:1f18:e19:7d00::/56",
                       "Ipv6CidrBlockState": {
                           "State": "associated"
                       },
                       "NetworkBorderGroup": "us-east-1",
                       "Ipv6Pool": "Amazon",
                       "Ipv6AddressAttribute": "public",
                       "IpSource": "amazon"
                   }
               ],
               "CidrBlockAssociationSet": [
                   {
                       "AssociationId": "vpc-cidr-assoc-00a0000a",
                       "CidrBlock": "111.11.0.0/16",
                       "CidrBlockState": {
                           "State": "associated"
                       }
                   }
               ],
               "IsDefault": true,
               "BlockPublicAccessStates": {
                   "InternetGatewayBlockMode": "off"
               },
               "VpcId": "vpc-a1234bcd",
               "State": "available",
               "CidrBlock": "111.11.0.0/16",
               "DhcpOptionsId": "dopt-a00aaaaa"
           }
       ]
   }
   ```

   예제 출력에서 VPC ID는 `vpc-a1234bcd`입니다.

1. 필터를 사용하여 VPC의 서브넷에 대한 세부 정보를 수집합니다.

   ```
   aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-a1234bcd"
    
   {
       "Subnets": [
           {
               "AvailabilityZoneId": "use1-az1",
               "MapCustomerOwnedIpOnLaunch": false,
               "OwnerId": "111122223333",
               "AssignIpv6AddressOnCreation": false,
               "Ipv6CidrBlockAssociationSet": [
                   {
                       "AssociationId": "subnet-cidr-assoc-05d75732736740283",
                       "Ipv6CidrBlock": "***********************",
                       "Ipv6CidrBlockState": {
                           "State": "associated"
                       },
                       "Ipv6AddressAttribute": "public",
                       "IpSource": "amazon"
                   }
               ],
               "SubnetArn": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-70b24b16",
               "EnableDns64": false,
               "Ipv6Native": false,
               "PrivateDnsNameOptionsOnLaunch": {
                   "HostnameType": "ip-name",
                   "EnableResourceNameDnsARecord": false,
                   "EnableResourceNameDnsAAAARecord": false
               },
               "BlockPublicAccessStates": {
                   "InternetGatewayBlockMode": "off"
               },
               "SubnetId": "subnet-70b24b16",
               "State": "available",
               "VpcId": "vpc-a1234bcd",
               "CidrBlock": "**********/20",
               "AvailableIpAddressCount": 4089,
               "AvailabilityZone": "us-east-1a",
               "DefaultForAz": true,
               "MapPublicIpOnLaunch": true
           },
           {
               "AvailabilityZoneId": "use1-az2",
               "MapCustomerOwnedIpOnLaunch": false,
               "OwnerId": "111122223333",
               "AssignIpv6AddressOnCreation": false,
               "Ipv6CidrBlockAssociationSet": [
                   {
                       "AssociationId": "subnet-cidr-assoc-0ec6fb253e05b17eb",
                       "Ipv6CidrBlock": "***********************",
                       "Ipv6CidrBlockState": {
                           "State": "associated"
                       },
                       "Ipv6AddressAttribute": "public",
                       "IpSource": "amazon"
                   }
               ],
               "SubnetArn": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-c63ffbe7",
               "EnableDns64": false,
               "Ipv6Native": false,
               "PrivateDnsNameOptionsOnLaunch": {
                   "HostnameType": "ip-name",
                   "EnableResourceNameDnsARecord": false,
                   "EnableResourceNameDnsAAAARecord": false
               },
               "BlockPublicAccessStates": {
                   "InternetGatewayBlockMode": "off"
               },
               "SubnetId": "subnet-c63ffbe7",
               "State": "available",
               "VpcId": "vpc-a1234bcd",
               "CidrBlock": "***********/20",
               "AvailableIpAddressCount": 4087,
               "AvailabilityZone": "us-east-1b",
               "DefaultForAz": true,
               "MapPublicIpOnLaunch": true
           }
       ]
   }
   ```

   예제 출력에는 `subnet-70b24b16` 및 `subnet-c63ffbe7`의 사용 가능한 두 개의 서브넷 ID가 있습니다.

1. VPC 엔드포인트를 생성합니다. `--vpc-id` 파라미터에 대해 이전 단계에서 VPC ID를 지정합니다. `--subnet-ids` 파라미터에 대해 이전 단계에서 서브넷 ID를 지정합니다. `--vpc-endpoint-type` 파라미터를 사용하여 엔드포인트를 인터페이스로 정의합니다. 듀얼 스택 엔드포인트를 생성하려면를 사용합니다`--ip-address-type dualstack`. 명령에 대한 자세한 내용은 *AWS CLI 명령 참조*의 [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-endpoint.html) 섹션을 참조하세요.

   ```
   aws ec2 create-vpc-endpoint \
    --vpc-endpoint-type Interface \
    --vpc-id vpc-a1234bcd \
    --ip-address-type dualstack \
    --service-name com.amazonaws.us-east-1.cassandra \
    --subnet-ids subnet-70b24b16 subnet-c63ffbe7
    
   {
       "VpcEndpoint": {
           "VpcEndpointId": "vpce-000000abc111d2ef3",
           "VpcEndpointType": "Interface",
           "VpcId": "vpc-a1234bcd",
           "ServiceName": "com.amazonaws.us-east-1.cassandra",
           "State": "pending",
           "RouteTableIds": [],
           "SubnetIds": [
               "subnet-70b24b16",
               "subnet-c63ffbe7"
           ],
           "Groups": [
               {
                   "GroupId": "sg-0123456789",
                   "GroupName": "default"
               }
           ],
           "IpAddressType": "dualstack",
           "DnsOptions": {
               "DnsRecordIpType": "dualstack"
           },
           "PrivateDnsEnabled": true,
           "RequesterManaged": false,
           "NetworkInterfaceIds": [
               "eni-08cd525f72ea6f1fa",
               "eni-07b1f6c895169d8fb"
           ],
           "DnsEntries": [
               {
                   "DnsName": "vpce-0000000000-1234567.cassandra.us-east-1.vpce.amazonaws.com",
                   "HostedZoneId": "Z7HUB22UULQXV"
               },
               {
                   "DnsName": "vpce-0000000000-1234567-us-east-1a.cassandra.us-east-1.vpce.amazonaws.com",
                   "HostedZoneId": "Z7HUB22UULQXV"
               },
               {
                   "DnsName": "cassandra.us-east-1.amazonaws.com",
                   "HostedZoneId": "ZONEIDPENDING"
               },
               {
                   "DnsName": "cassandra.us-east-1.api.aws",
                   "HostedZoneId": "ZONEIDPENDING"
               }
           ],
           "CreationTimestamp": "2025-09-19T15:19:19.266000+00:00",
           "OwnerId": "111122223333",
           "ServiceRegion": "us-east-1"
       }
   }
   ```

# 4단계: VPC 엔드포인트 연결을 위한 권한 구성
<a name="vpc-endpoints-tutorial.permissions"></a>

이 단계의 절차는 Amazon Keyspaces와 함께 VPC 엔드포인트를 사용하기 위한 규칙 및 권한을 구성하는 방법을 보여 줍니다.

**TCP 인바운드 트래픽을 허용하도록 새 엔드포인트에 대한 인바운드 규칙을 구성하려면**

1. Amazon VPC 콘솔의 왼쪽 패널에서 **엔드포인트**를 선택하고 이전 단계에서 생성한 엔드포인트를 선택합니다.

1. **보안 그룹 관리를** 선택한 다음이 엔드포인트와 연결된 보안 그룹을 선택합니다.

1. **인바운드 규칙**을 선택한 다음 **인바운드 규칙 편집**을 선택합니다.

1. **유형**이 **CQLSH / CASSANDRA**인 인바운드 규칙을 추가합니다. 그러면 **포트 범위**가 자동으로 **9142**로 설정됩니다.

1. 새 인바운드 규칙을 저장하려면 **규칙 저장**을 선택합니다.

**IAM 사용자 권한을 구성하려면**

1. Amazon Keyspaces에 연결하는 데 사용된 IAM 사용자에게 적절한 권한이 있는지 확인합니다. AWS Identity and Access Management (IAM)에서는 AWS 관리형 정책을 사용하여 IAM 사용자에게 Amazon Keyspaces에 대한 읽기 액세스 권한을 `AmazonKeyspacesReadOnlyAccess` 부여할 수 있습니다.

   1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

   1. IAM 콘솔 대시보드에서 **Users(사용자)**를 선택한 후 목록에서 해당 IAM 사용자를 선택합니다.

   1. **요약** 페이지에서 **권한 추가**를 선택합니다.

   1. **기존 정책 직접 첨부**를 선택합니다.

   1. 정책 목록에서 **AmazonKeyspacesReadOnlyAccess**를 선택한 다음 **다음: 검토**를 선택합니다.

   1. **권한 추가**를 선택합니다.

1. VPC 엔드포인트를 통해 Amazon Keyspaces에 액세스할 수 있는지 확인합니다.

   ```
   aws keyspaces list-tables --keyspace-name 'my_Keyspace'
   ```

   원하는 경우 Amazon Keyspaces에 대한 다른 AWS CLI 명령을 사용해 볼 수 있습니다. 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/)를 참조하세요.
**참고**  
다음 정책에 나와 있는 것처럼 IAM 사용자 또는 역할이 Amazon Keyspaces에 액세스하는 데 필요한 최소 권한은 시스템 테이블에 대한 읽기 권한입니다. 정책 기반 권한에 대한 자세한 내용은 [Amazon Keyspaces ID 기반 정책 예제](security_iam_id-based-policy-examples.md) 섹션을 참조하세요.

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "cassandra:Select"
            ],
            "Resource":[
               "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
            ]
         }
      ]
   }
   ```

1. IAM 사용자에게 VPC가 있는 Amazon EC2 인스턴스에 대한 읽기 액세스 권한을 부여합니다.

   VPC 엔드포인트와 함께 Amazon Keyspaces를 사용하는 경우 Amazon Keyspaces에 액세스하는 IAM 사용자 또는 역할에 *Amazon EC2 인스턴스와 VPC에 엔드포인트 및 네트워크 인터페이스 데이터를 수집할 수 있는 읽기 전용 권한*을 부여해야 합니다. Amazon Keyspaces는 이 정보를 `system.peers` 테이블에 저장하고 이 정보를 사용하여 연결을 관리합니다.
**참고**  
관리형 정책 `AmazonKeyspacesReadOnlyAccess_v2` 및 `AmazonKeyspacesFullAccess`에는 Amazon Keyspaces가 Amazon EC2 인스턴스에 액세스하여 사용 가능한 인터페이스 VPC 엔드포인트에 대한 정보를 읽을 수 있도록 하는 데 필요한 권한이 포함되어 있습니다.

   1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

   1. IAM 콘솔 대시보드에서 **정책**을 선택합니다.

   1. **정책 생성**을 선택한 다음 **JSON** 탭을 선택합니다.

   1. 다음 정책을 복사하고 **다음: 태그**를 선택합니다.

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"ListVPCEndpoints",
               "Effect":"Allow",
               "Action":[
                  "ec2:DescribeNetworkInterfaces",
                  "ec2:DescribeVpcEndpoints"
               ],
               "Resource": "*"
            }
         ]
      }
      ```

   1. **다음: 검토**를 선택하고 정책에 대한 이름 `keyspacesVPCendpoint`를 입력한 후 **정책 생성**을 선택합니다.

   1. IAM 콘솔 대시보드에서 **Users(사용자)**를 선택한 후 목록에서 해당 IAM 사용자를 선택합니다.

   1. **요약** 페이지에서 **권한 추가**를 선택합니다.

   1. **기존 정책 직접 첨부**를 선택합니다.

   1. 정책 목록에서 **keyspacesVPCendpoint**를 선택한 다음 **다음: 검토**를 선택합니다.

   1. **권한 추가**를 선택합니다.

1. Amazon Keyspaces `system.peers` 테이블이 VPC 정보로 업데이트되고 있는지 확인하려면 `cqlsh`를 사용하여 Amazon EC2 인스턴스에서 다음 쿼리를 실행합니다. 2단계에서 Amazon EC2 인스턴스에 아직 `cqlsh`를 설치하지 않은 경우 [`cqlsh-expansion`을 사용하여 Amazon Keyspace에 접속](programmatic.cqlsh.md#using_cqlsh)의 지침을 따릅니다.

   ```
   SELECT * FROM system.peers;
   ```

   출력은 AWS 리전의 VPC 및 서브넷 설정에 따라 프라이빗 IPv6 IP 주소가 있는 노드를 반환합니다.

   ```
    peer                                    | data_center | host_id                              | preferred_ip                            | rack      | release_version | rpc_address                             | schema_version                       | tokens
   -----------------------------------------+-------------+--------------------------------------+-----------------------------------------+-----------+-----------------+-----------------------------------------+--------------------------------------+---------------------------------------------
     2600:1111:2222:3333:283b:8e6:d04f      |   us-east-1 | dddddddd-7a22-3582-a73d-49338a686a53 |  2600:1111:2222:3333:283b:8e6:d04f      | us-east-1 |          3.11.2 |  2600:1111:2222:3333:283b:8e6:d04f      | 05deae2d-6405-494d-a965-c0e5836bcb3c |  {'85070591730234615865843651857942052863'}
    2600:1111:2222:4444:7d26:5a09:1b44      |   us-east-1 | 66666666-035d-37ef-a247-19a6a867ab09 | 2600:1111:2222:4444:7d26:5a09:1b44      | us-east-1 |          3.11.2 | 2600:1111:2222:4444:7d26:5a09:1b44      | 05deae2d-6405-494d-a965-c0e5836bcb3c | {'170141183460469231731687303715884105726'}
   ```
**참고**  
VPC 엔드포인트가 올바르게 구성되었는지 확인하려면 Amazon Keyspaces에 `cqlsh` 연결을 사용해야 합니다. AWS Management Console에서 로컬 환경 또는 Amazon Keyspaces CQL 편집기를 사용하는 경우 VPC 엔드포인트 대신 퍼블릭 엔드포인트를 통해 연결이 자동으로 진행됩니다. IP 주소가 9개인 경우 Amazon Keyspaces가 퍼블릭 엔드포인트 연결을 위해 `system.peers` 테이블에 자동으로 쓰는 항목입니다.

# 5단계: CloudWatch를 사용하여 모니터링 구성
<a name="vpc-endpoints-tutorial.monitoring"></a>

이 단계에서는 Amazon CloudWatch를 사용하여 Amazon Keyspaces에 대한 VPC 엔드포인트 연결을 모니터링하는 방법을 보여 줍니다.

AWS PrivateLink 는 인터페이스 엔드포인트에 대한 데이터 포인트를 CloudWatch에 게시합니다. 지표를 사용하여 시스템이 예상대로 수행되고 있는지 확인할 수 있습니다. CloudWatch의 `AWS/PrivateLinkEndpoints` 네임스페이스에는 인터페이스 엔드포인트에 대한 지표가 포함됩니다. 자세한 내용은 *AWS PrivateLink 가이드*에서 [AWS PrivateLink에 대한 CloudWatch 지표](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-cloudwatch-metrics.html)를 참조하세요.

**VPC 엔드포인트 지표가 포함된 CloudWatch 대시보드를 생성하려면**

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

1. 탐색 창에서 **대시보드**를 선택합니다. 그런 다음 **대시보드 생성**을 선택합니다. 대시보드의 이름을 입력하고 **생성**을 선택합니다.

1. **위젯 추가**에서 **숫자**를 선택합니다.

1. **지표**에서 **AWS/PrivateLinkEndpoints**를 선택합니다.

1. **엔드포인트 유형, 서비스 이름, VPC 엔드포인트 ID, VPC ID**를 선택합니다.

1. 지표 `ActiveConnections` 및 `NewConnections`를 선택하고 **위젯 생성**을 선택합니다.

1. 대시보드를 저장합니다.

`ActiveConnections` 지표는 지난 1분 동안 엔드포인트가 수신한 동시 활성 연결 수로 정의됩니다. `NewConnections` 지표는 지난 1분 동안 엔드포인트를 통해 설정된 새 연결 수로 정의됩니다.

대시보드를 만드는 방법에 대한 자세한 내용은 *CloudWatch 사용 설명서*에서 [대시보드 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create_dashboard.html)을 참조하세요.

# 6단계: (선택 사항) 애플리케이션의 연결 풀 크기를 구성하는 모범 사례
<a name="vpc-endpoints-tutorial.connections"></a>

이 섹션에서는 애플리케이션의 쿼리 처리량 요구 사항을 기반으로 이상적인 연결 풀 크기를 결정하는 방법을 설명합니다.

Amazon Keyspaces는 TCP 연결당 초당 최대 3,000개의 CQL 쿼리를 허용합니다. 따라서 드라이버가 Amazon Keyspaces와 설정할 수 있는 연결 수에는 사실상 제한이 없습니다. 하지만 VPC 엔드포인트 연결과 함께 Amazon Keyspaces를 사용할 때는 연결 풀 크기를 애플리케이션의 요구 사항에 맞추고 사용 가능한 엔드포인트를 고려하는 것이 좋습니다.

연결 풀 크기는 클라이언트 드라이버에서 구성합니다. 예를 들어 로컬 풀 크기가 **2**이고 가용 영역 **3개**에 생성된 VPC 인터페이스 엔드포인트를 기반으로 드라이버는 쿼리를 위한 **6개**(제어 연결 포함 총 7개)의 연결을 설정합니다. 이 6개의 연결을 사용하면 초당 최대 18,000개의 CQL 쿼리를 지원할 수 있습니다.

애플리케이션이 초당 40,000개의 CQL 쿼리를 지원해야 하는 경우 필요한 쿼리 수를 기준으로 역방향으로 작업하여 필요한 연결 풀 크기를 결정합니다. 초당 40,000개의 CQL 쿼리를 지원하려면 로컬 풀 크기를 초당 최소 45,000개의 CQL 쿼리를 지원하는 5개 이상으로 구성해야 합니다.

`AWS/Cassandra` 네임스페이스의 `PerConnectionRequestRateExceeded` CloudWatch 지표를 사용하여 연결당 초당 최대 작업 수의 할당량을 초과하는지 모니터링할 수 있습니다. `PerConnectionRequestRateExceeded` 지표는 Amazon Keyspaces에 대한 요청 중 연결당 요청 속도에 대한 할당량을 초과하는 요청 수를 보여 줍니다.

이 단계의 코드 예제는 인터페이스 VPC 엔드포인트를 사용할 때 연결 풀링을 추정하고 구성하는 방법을 보여 줍니다.

------
#### [ Java ]

Java 드라이버에서 풀당 연결 수를 구성할 수 있습니다. Java 클라이언트 드라이버 연결의 전체 예는 [Cassandra Java 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_java_driver.md) 섹션을 참조하세요.

클라이언트 드라이버가 시작되면 먼저 스키마 및 토폴로지 변경과 같은 관리 작업을 위한 제어 연결이 설정됩니다. 그런 다음 추가 연결이 생성됩니다.

다음 예제에서는 로컬 풀 크기 드라이버 구성을 2로 지정합니다. VPC 내 서브넷 3개에 걸쳐 VPC 엔드포인트를 생성하면 다음 공식과 같이 인터페이스 엔드포인트에 대해 `NewConnections` CloudWatch에서 7개가 됩니다.

```
NewConnections = 3 (VPC subnet endpoints created across) * 2 (pool size) + 1 ( control connection)
```

```
datastax-java-driver {

    basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"]
    advanced.auth-provider{
        class = PlainTextAuthProvider
           username = "ServiceUserName"
           password = "ServicePassword"
    }
    basic.load-balancing-policy {
        local-datacenter = "us-east-1"
        slow-replica-avoidance = false           
    }

    advanced.ssl-engine-factory {
        class = DefaultSslEngineFactory
        truststore-path = "./src/main/resources/cassandra_truststore.jks"
        truststore-password = "my_password"
        hostname-validation = false
      }
    advanced.connection {
        pool.local.size = 2
          }
}
```

활성 연결 수가 구성된 풀 크기(서브넷 간 집계) \$1 1개의 제어 연결과 일치하지 않으면 연결이 생성되지 않는 것입니다.

------
#### [ Node.js ]

Node.js 드라이버에서 풀당 연결 수를 구성할 수 있습니다. Node.js 클라이언트 드라이버 연결의 전체 예는 [Cassandra Node.js 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](using_nodejs_driver.md) 섹션을 참조하세요.

아래 코드 예제에서는 디지털 인증서에 *keyspaces-bundle.pem* 파일을 사용합니다. 자세한 정보는 [시작하기 전 준비 사항](using_nodejs_driver.md#using_nodejs_driver.BeforeYouBegin)을 참조하세요.

다음 코드 예제의 경우 로컬 풀 크기 드라이버 구성을 1로 지정합니다. VPC 내 서브넷 4개에 걸쳐 VPC 엔드포인트를 생성하면 다음 공식과 같이 인터페이스 엔드포인트에 대해 `NewConnections` CloudWatch에서 5개가 됩니다.

```
NewConnections = 4 (VPC subnet endpoints created across) * 1 (pool size) + 1 ( control connection)
```

```
const cassandra = require('cassandra-driver');
const fs = require('fs');
const types = cassandra.types;
const auth = new cassandra.auth.PlainTextAuthProvider('ServiceUserName', 'ServicePassword');
const sslOptions1 = {
         ca: [
                    fs.readFileSync('/home/ec2-user/keyspaces-bundle.pem', 'utf-8')],
                    host: 'cassandra.us-east-1.amazonaws.com',
                    rejectUnauthorized: true
        };
const client = new cassandra.Client({
                   contactPoints: ['cassandra.us-east-1.amazonaws.com'],
                   localDataCenter: 'us-east-1',
                   pooling: { coreConnectionsPerHost: { [types.distance.local]: 1 } },
                   consistency: types.consistencies.localQuorum,
                   queryOptions: { isIdempotent: true },
                   authProvider: auth,
                   sslOptions: sslOptions1,
                   protocolOptions: { port: 9142 }
        });
```

------

# 7단계: (선택 사항) 정리
<a name="vpc-endpoints-tutorial.clean-up"></a>

이 자습서에서 생성한 리소스를 삭제하려면 다음 절차를 따르세요.

**Amazon Keyspaces에 대한 VPC 엔드포인트를 제거하려면**

1. Amazon EC2 인스턴스에 로그인합니다.

1. Amazon Keyspaces에 사용되는 VPC 엔드포인트 ID를 결정합니다. `grep` 파라미터를 생략하면 모든 서비스에 대한 VPC 엔드포인트 정보가 표시됩니다.

   ```
   aws ec2 describe-vpc-endpoint-services | grep ServiceName | grep cassandra
    
   {
       "VpcEndpoint": {
           "PolicyDocument": "{\"Version\":\"2000-00-00",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", 
           "VpcId": "vpc-a1234bcd", 
           "State": "available", 
           "ServiceName": "com.amazonaws.us-east-1.cassandra", 
           "RouteTableIds": [], 
           "VpcEndpointId": "vpce-1a23b4c5", 
           "CreationTimestamp": "2025-07-26T22:00:14Z"
       }
   }
   ```

   예제 출력에서 VPC 엔드포인트 ID는 *vpce-1a23b4c5*입니다. 이 값을 자신의 값으로 바꿔야 합니다.

1. VPC 엔드포인트를 삭제합니다.

   ```
   aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-1a23b4c5
    
   {
       "Unsuccessful": []
   }
   ```

   빈 어레이 `[]`는 성공을 나타냅니다(실패한 요청 없음).

**Amazon EC2 인스턴스를 종료하려면**

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

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. Amazon EC2 인스턴스를 선택합니다.

1. **작업**을 선택하고 **인스턴스 상태**를 선택한 다음 **종료**를 선택합니다.

1. 확인 창에서 **예, 종료합니다.**를 선택합니다.