ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws opensearch - python으로 접속하기
    프로그래밍 2024. 3. 7. 17:47
    728x90
    반응형

     

     

     

     

    AWS OpenSearch Service에 접속하기 위해 Python에서 사용할 수 있는 주요 SDK는 opensearch-py입니다. 이는 Elasticsearch의 공식 Python 클라이언트를 OpenSearch와 함께 사용할 수 있도록 확장한 것입니다. AWS의 인증 메커니즘과 통합하기 위해서는 추가적인 단계가 필요합니다. 여기서는 opensearch-py 패키지를 사용하여 AWS OpenSearch Service에 안전하게 접속하는 방법을 안내합니다.

     

    boto3는 AWS 서비스와 상호작용하기 위한 AWS의 공식 Python SDK입니다. boto3를 사용하면 AWS의 다양한 서비스(예: S3, DynamoDB, EC2, OpenSearch Service 등)를 쉽게 프로그래밍 방식으로 관리하고 조작할 수 있습니다. 여기서는 boto3의 기본적인 사용법과 초기 설정 방법에 대해 설명합니다.

     

     

    1. 필요한 패키지 설치 

     

    boto3를 사용하기 전에, 먼저 Python 환경에 설치해야 합니다. pip를 사용하여 설치할 수 있습니다

     

    pip install boto3
    pip install opensearch-py requests-aws4auth

     

     

     

     

    2. AWS 자격 증명 설정

    boto3를 사용하여 AWS 서비스에 접근하기 위해서는 유효한 AWS 자격 증명이 필요합니다. AWS 자격 증명은 다음 세 가지 방법 중 하나로 구성할 수 있습니다

     

    a. AWS CLI를 사용한 구성

     

    AWS Command Line Interface(CLI)를 사용하면 자격 증명 파일을 쉽게 설정할 수 있습니다.

     

    먼저 AWS CLI가 설치되어 있지 않다면 설치해야 합니다. 아마존 cli가 설치되어 있지 않아서 윈도우에서 아래 명령어로 설치하였습니다. 

    C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

     

     

     

    설치 완료된 후에 aws configure로 opensearch 접속 권한이 있는 access key/secret key를 입력합니다. 

     

    >aws configure
    AWS Access Key ID [None]: 
    AWS Secret Access Key [None]: 
    Default region name [None]: 
    Default output format [None]:

     

    이 명령어는 AWS Access Key ID, Secret Access Key, 기본 리전, 출력 형식 등을 입력하라는 프롬프트를 표시합니다. 이 정보는 ~/.aws/credentials~/.aws/config 파일에 저장됩니다.

     

     

    b. 직접 파일 생성

     

     

    AWS 자격 증명 파일을 직접 생성하고 편집할 수도 있습니다. 기본적으로 이 파일들은 사용자의 홈 디렉토리 아래 .aws 폴더에 위치합니다.

     

    ~/.aws/credentials 파일 예시

    [default]
    aws_access_key_id = YOUR_ACCESS_KEY
    aws_secret_access_key = YOUR_SECRET_KEY

     

    ~/.aws/config 파일 예시

    [default]
    region = us-west-2
    output = json

     

    c. 환경 변수 설정

    • 환경 변수를 통해 AWS 자격 증명을 설정할 수도 있습니다. 적절한 환경 변수를 설정하면 boto3는 이러한 변수를 읽어 자격 증명을 구성합니다.

     

    export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
    export AWS_DEFAULT_REGION=us-west-2

     

     

     

     

    3. aws opensearch 접속 코드 예시

     

     

    from opensearchpy import OpenSearch, RequestsHttpConnection
    from requests_aws4auth import AWS4Auth
    import boto3
    
    host = 'your-opensearch-domain-endpoint' # OpenSearch 도메인 엔드포인트
    region = 'your-region' # 예: 'us-west-2'
    service = 'es' # OpenSearch Service를 위한 서비스 코드
    
    # AWS 자격 증명 로드 (환경 변수, IAM 역할 또는 직접 지정)
    credentials = boto3.Session().get_credentials()
    
    awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)
    
    # OpenSearch 클라이언트 생성 및 구성
    search = OpenSearch(
        hosts=[{'host': host, 'port': 443}],
        http_auth=awsauth,
        use_ssl=True,
        verify_certs=True,
        connection_class=RequestsHttpConnection
    )
    
    # OpenSearch에서 간단한 검색 실행 예시
    response = search.search(
        body={
            "query": {
                "match_all": {}
            }
        },
        index="your-index-name"
    )
    
    print(response)

     

     

     

    이 코드는 다음 단계를 수행합니다:

    1. boto3와 requests-aws4auth를 사용하여 현재 환경에서 사용 가능한 AWS 자격 증명을 로드합니다. 이 자격 증명은 AWS CLI 설정, 환경 변수, IAM 역할 등에서 로드할 수 있습니다.
    2. AWS4Auth 객체를 생성하여 AWS의 서명 버전 4를 사용해 요청을 서명합니다.
    3. OpenSearch 클라이언트를 생성할 때 RequestsHttpConnection 연결 클래스와 함께 awsauth를 인증 메커니즘으로 사용합니다.
    4. 생성된 클라이언트를 사용하여 OpenSearch에 검색 요청을 보내고 응답을 받습니다.

     

     

    주의 사항

    • host 변수에는 OpenSearch 도메인 엔드포인트의 전체 URL을 입력해야 합니다. (예: search-my-domain.us-west-2.es.amazonaws.com)
    • AWS OpenSearch Service를 사용할 때 service 변수는 항상 'es'로 설정해야 합니다.
    • 코드를 실행하기 전에, AWS CLI가 올바르게 구성되어 있고 필요한 권한이 부여된 IAM 사용자 또는 역할을 사용하고 있는지 확인하세요.
    • 이 방법은 AWS OpenSearch Service에 안전하게 접속하기 위한 기본적인 방법입니다. 프로덕션 환경에서는 추가적인 보안 조치를 고려해야 할 수 있습니다.

     

     

     

     

    참고: 

     

    https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

     

    728x90
    반응형
Designed by Tistory.