cqlsh 사용하여 Amazon Keyspace에 접속 - Amazon Keyspaces(Apache Cassandra용)

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

cqlsh 사용하여 Amazon Keyspace에 접속

cqlsh를 사용하여 Amazon Keyspaces에 접속하려면 cqlsh-expansion를 사용할 수 있습니다. 이 도구 키트에는 Apache Cassandra와의 완전한 호환성을 유지하면서 Amazon Keyspaces에 사전 구성된 cqlsh 및 도우미와 같은 일반적인 Apache Cassandra 도구가 포함되어 있습니다. cqlsh-expansion는 SigV4 인증 플러그인을 통합하여 사용자 이름과 암호 대신 IAM 액세스 키를 사용하여 접속할 수 있습니다. Amazon Keyspaces는 서버리스이므로 전체 Apache Cassandra 배포는 설치하지 않고 cqlsh 스크립트만 설치하면 접속할 수 있습니다. 이 간단한 설치 패키지에는 Python을 지원하는 모든 플랫폼에 설치할 수 있는 cqlsh-expansion 및 클래식 cqlsh 스크립트가 포함되어 있습니다.

cqlsh에 대한 일반적인 정보는 cqlsh: CQL 쉘 섹션을 참조하세요.

cqlsh-expansion을 사용하여 Amazon Keyspace에 접속

cqlsh-expansion 설치 및 구성
  1. cqlsh-expansion Python 패키지를 설치하려면 pip 명령을 실행할 수 있습니다. 그러면 종속성 목록이 포함된 파일과 함께 pip install을 사용하여 컴퓨터에 cqlsh-expansion 스크립트가 설치됩니다. --user flagpip에 플랫폼용 Python 사용자 설치 디렉터리를 사용하도록 지시합니다. Unix 기반 시스템에서는 ~/.local/ 디렉터리여야 합니다.

    cqlsh-expansion을 설치하려면 Python 3가 필요합니다. Python 버전을 확인하려면 Python --version를 사용하세요. 설치하려면 다음 명령 중 하나를 실행할 수 있습니다.

    python3 -m pip install --user cqlsh-expansion
    pip3 install --user cqlsh-expansion

    결과는 다음과 비슷해야 합니다.

    Collecting cqlsh-expansion Downloading cqlsh_expansion-0.9.6-py3-none-any.whl (153 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 153.7/153.7 KB 3.3 MB/s eta 0:00:00 Collecting cassandra-driver Downloading cassandra_driver-3.28.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19.1/19.1 MB 44.5 MB/s eta 0:00:00 Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from cqlsh-expansion) (1.16.0) Collecting boto3 Downloading boto3-1.29.2-py3-none-any.whl (135 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 135.8/135.8 KB 17.2 MB/s eta 0:00:00 Collecting cassandra-sigv4>=4.0.2 Downloading cassandra_sigv4-4.0.2-py2.py3-none-any.whl (9.8 kB) Collecting botocore<1.33.0,>=1.32.2 Downloading botocore-1.32.2-py3-none-any.whl (11.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 60.9 MB/s eta 0:00:00 Collecting s3transfer<0.8.0,>=0.7.0 Downloading s3transfer-0.7.0-py3-none-any.whl (79 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 KB 13.1 MB/s eta 0:00:00 Collecting jmespath<2.0.0,>=0.7.1 Downloading jmespath-1.0.1-py3-none-any.whl (20 kB) Collecting geomet<0.3,>=0.1 Downloading geomet-0.2.1.post1-py3-none-any.whl (18 kB) Collecting python-dateutil<3.0.0,>=2.1 Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 33.1 MB/s eta 0:00:00 Requirement already satisfied: urllib3<2.1,>=1.25.4 in /usr/lib/python3/dist-packages (from botocore<1.33.0,>=1.32.2->boto3->cqlsh-expansion) (1.26.5) Requirement already satisfied: click in /usr/lib/python3/dist-packages (from geomet<0.3,>=0.1->cassandra-driver->cqlsh-expansion) (8.0.3) Installing collected packages: python-dateutil, jmespath, geomet, cassandra-driver, botocore, s3transfer, boto3, cassandra-sigv4, cqlsh-expansion WARNING: The script geomet is installed in '/home/ubuntu/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The scripts cqlsh, cqlsh-expansion and cqlsh-expansion.init are installed in '/home/ubuntu/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed boto3-1.29.2 botocore-1.32.2 cassandra-driver-3.28.0 cassandra-sigv4-4.0.2 cqlsh-expansion-0.9.6 geomet-0.2.1.post1 jmespath-1.0.1 python-dateutil-2.8.2 s3transfer-0.7.0

    설치 디렉터리가 에 PATH 없는 경우 운영 체제의 지침에 따라 추가해야 합니다. 다음은 우분투 리눅스의 한 예입니다.

    export PATH DEFAULT=${PATH}:/home/ubuntu/.local/bin

    다음 명령을 실행하여 패키지가 설치되었는지 확인할 수 있습니다.

    cqlsh-expansion --version

    결과는 다음과 같아야 합니다.

    cqlsh 6.1.0
  2. cqlsh-expansion를 구성하려면 설치 후 스크립트를 실행하여 다음 단계를 자동으로 완료할 수 있습니다.

    1. .cassandra 디렉터리가 아직 없으면 사용자 홈 디렉터리에 생성합니다.

    2. 사전 구성된 cqlshrc 구성 파일을 .cassandra 디렉터리에 복사합니다.

    3. Starfield 디지털 인증서를 .cassandra 디렉터리에 복사합니다. Amazon Keyspaces는 이 인증서를 사용하여 전송 계층 보안(TLS) 과의 보안 연결을 구성합니다. 전송 중 암호화는 Amazon Keyspaces와 주고 받는 데이터를 암호화하여 추가 데이터 보호 계층을 제공합니다.

    스크립트를 먼저 검토하려면 post_install.py의 Github 리포지토리에서 액세스할 수 있습니다.

    다음 명령을 실행하여 스크립트를 사용할 수 있습니다.

    cqlsh-expansion.init
    참고

    pip uninstall를 사용하여 cqlsh-expansion을 제거해도 설치 후 스크립트로 생성된 디렉터리와 파일은 제거되지 않으므로 수동으로 삭제해야 합니다.

cqlsh-expansion을 사용하여 Amazon Keyspace에 접속
  1. 를 AWS 리전 구성하고 사용자 환경 변수로 추가합니다.

    Unix 기반 시스템에서 기본 지역을 환경 변수로 추가하려면 다음 명령을 실행할 수 있습니다. 이 예제에서는 미국 동부(버지니아 북부)를 사용합니다.

    export AWS_DEFAULT_REGION=us-east-1

    다른 플랫폼을 포함하여 환경 변수를 설정하는 방법에 대한 자세한 내용은 환경 변수 설정 방법을 참조하세요.

  2. 서비스 엔드포인트를 찾습니다.

    리전에 적절한 서비스 엔드포인트를 선택합니다. Amazon Keyspaces에 사용할 수 있는 엔드포인트를 검토하려면 Amazon Keyspaces의 서비스 엔드포인트을 참조하세요. 이 예에서는 엔드포인트 cassandra.us-east-1.amazonaws.com을 사용합니다.

  3. 인증 방식을 구성합니다.

    보안을 강화하기 위한 권장 방법은 IAM 액세스 키(IAM 사용자, 역할, 페더레이션 ID)로 접속하는 것입니다.

    IAM 액세스 키로 접속하려면 먼저 다음 단계를 완료해야 합니다.

    1. IAM 사용자를 생성하거나, 모범 사례에 따라 IAM 사용자가 위임할 수 있는 IAM 역할을 생성하십시오. IAM 액세스 키를 생성하는 방법에 대한 자세한 정보는 Amazon Keyspace에 AWS 자격 증명을 생성하고 구성하는 방법 섹션을 참조하세요.

    2. 역할(또는 IAM 사용자)에게 최소한 Amazon Keyspace에 대한 읽기 전용 액세스 권한을 부여하는 IAM 정책을 생성합니다. IAM 사용자 또는 역할이 Amazon Keyspaces에 접속하는 데 필요한 권한에 대한 자세한 내용은 Amazon Keyspaces 테이블에 액세스 섹션을 참조하세요.

    3. 다음 예제와 같이 IAM 사용자의 액세스 키를 사용자 환경 변수에 추가합니다.

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

      다른 플랫폼을 포함하여 환경 변수를 설정하는 방법에 대한 자세한 내용은 환경 변수 설정 방법을 참조하세요.

      참고

      Amazon EC2 인스턴스에서 연결하는 경우, 인스턴스에서 Amazon Keyspace로의 트래픽을 허용하는 보안 그룹의 아웃바운드 규칙도 구성해야 합니다. EC2 아웃바운드 규칙을 보고 편집하는 방법에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 보안 그룹에 규칙 추가를 참조하세요.

  4. cqlsh-expansion 및 SigV4 인증을 사용하여 Amazon Keyspaces에 접속합니다.

    cqlsh-expansion를 사용하여 Amazon Keyspaces에 접속하려면 다음 명령을 사용합니다. 서비스 엔드포인트를 해당 리전의 올바른 엔드포인트로 바꿔야 합니다.

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl

    접속에 성공하면 다음 예제와 비슷하게 출력됩니다.

    Connected to Amazon Keyspaces at cassandra.us-east-1.amazonaws.com:9142 [cqlsh 6.1.0 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cqlsh current consistency level is ONE. cqlsh>

    연결 오류가 발생하는 경우 문제 해결 정보를 cqlsh를 사용하여 Amazon Keyspaces에 연결할 수 없음 참조하십시오.

    • 서비스별 보안 인증 정보로 Amazon Keyspaces에 접속합니다.

      Cassandra가 인증에 사용하는 기존 사용자 이름 및 암호 조합으로 접속하려면 먼저 서비스별 보안 인증 정보 생성에 설명된 대로 Amazon Keyspaces에 대한 서비스별 보안 인증 정보를 생성해야 합니다. 또한 해당 사용자에게 Amazon Keyspace에 액세스할 수 있는 권한을 부여해야 합니다. 자세한 내용은 Amazon Keyspaces 테이블에 액세스 섹션을 참조하세요.

      사용자에 대한 서비스별 보안 인증 정보와 권한을 생성한 후에는 일반적으로 사용자 디렉터리 경로 ~/.cassandra/에 있는 cqlshrc 파일을 업데이트해야 합니다. cqlshrc 파일에서 Cassandra [authentication] 섹션으로 이동하여 다음 예제와 같이 “;” 문자를 사용하여 [auth_provider]에 있는 SigV4 모듈과 클래스를 주석으로 처리합니다.

      [auth_provider] ; module = cassandra_sigv4.auth ; classname = SigV4AuthProvider

      cqlshrc 파일을 업데이트한 후 다음 명령을 사용하여 서비스별 보안 인증 정보로 Amazon Keyspace에 접속할 수 있습니다.

      cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 -u myUserName -p myPassword --ssl
정리
  • pip uninstall 명령을 사용하여 cqlsh-expansion 패키지를 제거할 수 있습니다.

    pip3 uninstall cqlsh-expansion

    pip3 uninstall 명령을 실행해도 설치 후 스크립트로 생성된 디렉터리 및 관련 파일은 제거되지 않습니다. 설치 후 스크립트로 생성된 폴더와 파일을 제거하려면 .cassandra 디렉터리를 삭제하면 됩니다.

TLS에 대한 cqlsh 연결을 수동으로 구성하는 방법

Amazon Keyspaces는 전송 계층 보안(TLS)을 사용한 보안 연결만 허용합니다. 자동으로 인증서를 다운로드하고 사전 구성된 cqlshrc 구성 파일을 설치하는 cqlsh-expansion 유틸리티를 사용할 수 있습니다. 자세한 내용은 이 페이지의 cqlsh-expansion을 사용하여 Amazon Keyspace에 접속를 참조하세요.

인증서를 다운로드하고 연결을 수동으로 구성하려면 다음 단계를 사용하면 됩니다.

  1. 다음 명령을 사용하여 Starfield 디지털 인증서를 다운로드하고 sf-class2-root.crt를 로컬 또는 홈 디렉터리에 저장합니다.

    curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
    참고

    또한 Amazon 디지털 인증서를 사용하여 Amazon Keyspaces에 접속할 수 있으며 클라이언트가 Amazon Keyspaces에 성공적으로 접속하면 계속 접속할 수 있습니다. Starfield 인증서는 이전 인증 기관을 사용하는 클라이언트에게 추가적인 이전 버전과의 호환성을 제공합니다.

  2. 예를 들어 ${HOME}/.cassandra/cqlshrc와 같은 Cassandra 홈 디렉터리에서 cqlshrc 구성 파일을 열고 다음 줄을 추가합니다.

    [connection] port = 9142 factory = cqlshlib.ssl.ssl_transport_factory [ssl] validate = true certfile = path_to_file/sf-class2-root.crt