-
aws opensearch - python으로 접속하기프로그래밍 2024. 3. 7. 17:47728x90반응형
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)
이 코드는 다음 단계를 수행합니다:
- boto3와 requests-aws4auth를 사용하여 현재 환경에서 사용 가능한 AWS 자격 증명을 로드합니다. 이 자격 증명은 AWS CLI 설정, 환경 변수, IAM 역할 등에서 로드할 수 있습니다.
- AWS4Auth 객체를 생성하여 AWS의 서명 버전 4를 사용해 요청을 서명합니다.
- OpenSearch 클라이언트를 생성할 때 RequestsHttpConnection 연결 클래스와 함께 awsauth를 인증 메커니즘으로 사용합니다.
- 생성된 클라이언트를 사용하여 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반응형'프로그래밍' 카테고리의 다른 글
hiberfil.sys 삭제 방법 (0) 2024.07.25 Azure AI Studio 사용후기 - openai + embedding search (0) 2024.03.14 맥북에서 압축 풀 때 파일 한글이름 깨지는 현상 해결 (0) 2024.02.14 JAVA import 방식 차이 - 단일 클래스 vs 와일드카드 (0) 2023.12.10 bigquery에서 특정 그룹의 필드 값을 구분자로 합치기 (0) 2023.06.22