파이썬 Zappa를 사용하여 AWS Translate를 통한 실시간 다국어 채팅 서비스 구축하기

AWS Translate Logo

오늘은 파이썬의 Zappa 프레임워크를 사용하여 AWS Translate를 통한 실시간 다국어 채팅 서비스를 구축하는 방법에 대해 알아보겠습니다. AWS Translate는 자동 번역 서비스로, 텍스트를 다른 언어로 번역해줍니다. 이 서비스를 활용하면 다국어 지원이 가능한 실시간 채팅 애플리케이션을 손쉽게 구축할 수 있습니다.

Prerequisites

서버리스 애플리케이션 준비하기

첫 번째로, 파이썬 가상 환경을 설정하고 필요한 패키지를 설치합니다. 가상 환경을 설정하는 이유는 프로젝트에 종속된 패키지를 격리하여 관리할 수 있기 때문입니다.

$ python -m venv myenv
$ source myenv/bin/activate
$ pip install awscli zappa flask boto3

다음으로, AWS CLI를 사용하여 IAM 사용자를 생성하고 액세스 키와 시크릿 키를 발급받습니다. 발급받은 키를 사용하여 AWS CLI를 구성합니다.

$ aws configure

Zappa를 사용하여 서버리스 애플리케이션을 만듭니다. Zappa는 AWS Lambda와 API Gateway를 사용하여 웹 애플리케이션을 배포하는 프레임워크입니다.

$ zappa init

Zappa 초기화 과정에서는 여러 가지 설정을 입력해야 합니다. 필요한 설정을 입력한 후, zappa_settings.json 파일을 열어 추가 수정을 해줍니다.

{
  "dev": {
    "app_function": "main.app",
    "aws_region": "ap-northeast-2",
    "profile_name": "your-profile-name",
    "project_name": "my-translator-app",
    "runtime": "python3.9",
    "s3_bucket": "my-translator-bucket",
    "keep_warm": false
  }
}

Flask 애플리케이션 작성하기

이제 Flask 애플리케이션을 작성해보겠습니다. Flask는 파이썬 웹 프레임워크로, 웹 서버와 템플릿 엔진을 제공하여 쉽게 웹 애플리케이션을 개발할 수 있습니다.

# main.py
from flask import Flask, request
import boto3

app = Flask(__name__)
translate = boto3.client('translate')

@app.route('/')
def hello_world():
    return 'Hello, World!'

@app.route('/translate', methods=['POST'])
def translate_text():
    text = request.form['text']
    target_lang = request.form['target_lang']
    response = translate.translate_text(
        Text=text,
        SourceLanguageCode='auto',
        TargetLanguageCode=target_lang
    )
    translated_text = response['TranslatedText']
    return translated_text

if __name__ == '__main__':
    app.run()

위의 코드는 Flask 애플리케이션의 기본 구조입니다. / 경로로 접속하면 “Hello, World!” 메시지를 반환하고, /translate 경로로 POST 요청이 오면 번역 결과를 반환하는 메소드입니다.

서버리스 애플리케이션 배포하기

이제 Zappa를 사용하여 서버리스 애플리케이션을 배포해보겠습니다. 아래의 명령어를 실행하여 애플리케이션을 배포합니다.

$ zappa deploy dev

배포가 완료되면, 반환된 엔드포인트 URL을 확인하여 웹 애플리케이션에 접속할 수 있습니다.

웹 애플리케이션 사용하기

이제 생성된 웹 애플리케이션을 사용해보겠습니다. 웹 브라우저나 API 클라이언트를 사용하여 POST 요청을 보내고, 번역 결과를 확인할 수 있습니다.

$ curl -X POST -F 'text=Hello' -F 'target_lang=ko' https://your-endpoint-url/translate

위의 예제에서는 ‘Hello’라는 영어 문장을 ‘ko’로 번역하도록 요청하고 있습니다. 번역 결과를 확인해보세요!

이처럼 파이썬의 Zappa와 AWS Translate를 활용하여 실시간 다국어 채팅 서비스를 구축할 수 있습니다. 여러분의 웹 애플리케이션에 이러한 자동 번역 기능을 추가해보세요. 감사합니다!

#python #AWS #Zappa #Translate #서버리스