TL,DR
Lambda関数からGoogle Cloud Translation APIをコールして、単語を翻訳するAPIを作りました。
Pythonコードです。
Lambda関数はChaliceを使うことで、簡単にAWSにデプロイすることができます。
出来ること
こんな感じで、エンドポイントのクエリパラメータに翻訳対象のテキストと翻訳先言語を指定すると
https://xxxxxx.amazonaws.com/api/?word=Hello+World!&target_language=fr
作り方
GCPの準備
- プロジェクトの登録
- APIの有効化
- サービスアカウントの作成、キーのダウンロードー>JSONファイル
ChaliceでAPI化
Chalice のインストール
適当に仮想環境を作ってから
pip install chalice
Chalice プロジェクトの作成
Chaliceをインストールしたら、Chaliceプロジェクトを作成します。
chalice new-project プロジェクト名
app.pyの更新
Chaliceプロジェクトディレクトリ内のapp.pyのコードはこんな感じです。
app.py
from chalice import Chalice
from google.cloud import translate
import os
app = Chalice(app_name='chalice-honyakukun')
@app.route('/')
def index():
# クエリパラメータから単語とターゲット言語コードを取得
word = app.current_request.query_params.get('word')
target_language_code = app.current_request.query_params.get('target_language')
# 翻訳処理
translation = translate_text(word, target_language_code)
# 翻訳結果を返す
return {'source_language': translation.detected_language_code,
'translated_text': translation.translated_text}
def translate_text(text: str, target_language_code: str) -> translate.Translation:
# 環境変数からプロジェクトIDを取得
project_id = os.environ.get('GOOGLE_CLOUD_PROJECT')
parent_id = f"projects/{project_id}/locations/global"
# クライアントオブジェクトを作成
client = translate.TranslationServiceClient()
# 翻訳リクエストを送信
response = client.translate_text(
parent=parent_id,
contents=[text],
target_language_code=target_language_code,
)
# 翻訳結果を取得
return response.translations[0]
ローカルでデプロイ
ローカルでデプロイしてみます。
chalice local --stage dev
デプロイしたら、ブラウザから以下のURLを叩いてみましょう。
http://localhost:8000/?word=Hello+World!&target_language=fr
AWSにデプロイ
requirements.txtに依存パッケージを書き出し
pip freeze > requirements.txt
サービスアカウントのJSONファイルを格納
chalicelibディレクトリを作成し、サービスアカウント情報のJSONファイルをchalicelibディレクトリに格納します。
config.jsonの更新
config.jsonにGCPのサービスアカウントファイルパスとプロジェクト名を環境変数として設定します。
config.json
{
"version": "2.0",
"app_name": "chalicepj",
"stages": {
"dev": {
"api_gateway_stage": "api",
"environment_variables": {
"GOOGLE_APPLICATION_CREDENTIALS": "サービスアカウントJSONファイルへのパス",
"GOOGLE_CLOUD_PROJECT": "GCPプロジェクト名"
}
}
}
}
AWSにデプロイ
AWSにデプロイして、APIゲートウェイとLambda関数を作成します。
chalice deploy --stage dev
デプロイ成功後に表示されるAPIゲートウェイのURLにクエリパラメータを追加して、ブラウザからアクセスします。
https://APIゲートウェイのURL/api/?word=Hello+World!&target_language=fr
うまくいけば翻訳結果がリターンされます!