AWSの部屋

AWS学習者向けのブログです

API Gateway + Lambda + Amazon Translateを使って翻訳API を作成してみる

はじめに

筆者はAWS認定ソリューションアーキテクト-プロフェッショナル合格に向けて勉強中ですが、座学はあまり性に合わずできるだけ手を動かして勉強したいため、本ブログを通じて AWS の様々なサービスを使ってみようと思っています。今回は API Gateway、Lambda、Amazon Translate を使って 翻訳API を作成してみようと思います。

使用するサービス

  • Amazon API Gateway・・・API の作成、配布、保守、監視、保護が行えるサービス
  • AWS Lambda・・・サーバレスでコードを実行することが出来るサービス
  • Amazon Translate・・・AWS でサポートされている言語間で翻訳を行うサービス

構成

手順

  1. Amazon Translate を使った英語→日本語翻訳サンプルの作成
  2. Lambda に付与する IAMロールを作成
  3. Lambda関数を作成
  4. API Gateway の設定
  5. 動作確認

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 も作ってみたいですね。