はじめに
筆者はAWS認定ソリューションアーキテクト-プロフェッショナル合格に向けて勉強中ですが、座学はあまり性に合わずできるだけ手を動かして勉強したいため、本ブログを通じて AWS の様々なサービスを使ってみようと思っています。今回は API Gateway、Lambda、Amazon Translate を使って 翻訳API を作成してみようと思います。
使用するサービス
- Amazon API Gateway・・・API の作成、配布、保守、監視、保護が行えるサービス
- AWS Lambda・・・サーバレスでコードを実行することが出来るサービス
- Amazon Translate・・・AWS でサポートされている言語間で翻訳を行うサービス
構成
手順
1. Amazon Translate を使った英語→日本語翻訳サンプルの作成
Boto3 を使って英語を日本語に翻訳するサンプルを作成します。翻訳する英語は今回「good morning」とします。
import boto3 translate = boto3.client('translate') # good morning を日本語に翻訳 response = translate.translate_text( Text='good morning', SourceLanguageCode='en', TargetLanguageCode='ja' ) output_text =response.get('TranslatedText') print(output_text)
結果は以下のようになります。
このコードをベースにして後の工程で Lambda 関数を作成します。
2. Lambda に付与する IAMロールを作成
Lambda が Amazon Translate と連携できるように 以下のような手順でIAMロールを作成します(ロール名はLambda-Translate-Accessとしました)。
3. Lambda関数を作成
以下のコードで translate-en2ja という Lambda関数を作ってみます。
import json import boto3 translate = boto3.client(service_name='translate') def lambda_handler(event, context): input_text = event['queryStringParameters']['input_text'] response = translate.translate_text( Text=input_text, SourceLanguageCode="en", TargetLanguageCode="ja" ) output_text = response.get('TranslatedText') return { 'statusCode': 200, 'body': json.dumps({ 'output_text': output_text }), 'isBase64Encoded': False, 'headers': {} }
関数の作成を押します。
関数名に「translate-en2ja」と入力します。
「2. Lambda に付与する IAMロールを作成」で作成したロールを選択します。
ラムダ関数をデプロイします。
4. API Gateway の設定
今回は REST API を使ってみようと思います。API の名前は sanvarie-traslate-api とします。
REST API の「構築」ボタンを押します。
AP I名を sanvarie-traslate-api とします。
リソースを作成します。
「3. Lambda関数を作成」で設定した関数名を入力します。
メソッドリクエストを押します。
「URL クエリ文字列パラメータ」に「input_text」と入力します。
Lambda関数の画面を開くと API Gateway が設定されている事がわかります。
API をデプロイします。
デプロイ後にエンドポイントの URLが表示されます
5. 動作確認
エンドポイントの URL に以下のようなリクエストを送ってみます。
https://gj73t4j7rg.execute-api.ap-northeast-1.amazonaws.com/development/translate?input_text=good morning
「good morning」という文章に対して「おはよう」という翻訳結果が得られたことがわかります。
別の文章も試してみました。「I want to eat Sushi」という文章に対しても「お寿司が食べたい」という正しい翻訳結果が得られました。
さいごに
API Gateway を使うことによって API の作成が簡単にできることがわかりました。今回は翻訳の API でしたが、今後は AWS の他の機能と組み合わせて全然違う API も作ってみたいですね。