프로그래밍

aws opensearch - python으로 접속하기

kugancity 2024. 3. 7. 17:47
반응형

 

 

 

 

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
반응형