AWSの翻訳「Amazon Translate」を試してみます。
Amazon Translate概要は以下です。
・機械翻訳サービス
・無料利用枠は、1 か月 200 万文字(最初の12 か月間)
有効期限が切れた場合、またはアプリケーションでの使用量が無料利用枠を超えた場合は、従量課金制での標準料金が発生します。
①まずはlambdaでAmazon Translateを使用できるロールを作成します。
IAMのサービス選択
「ロールの作成」ボタンクリック
lambdaを選択
次のページで「TranslateReadOnly」のポリシーをチェック
ロールを作成する。ロール名「honyaku_test」で作りました。
②lambda作成
関数の作成をクリック
今回はNode.jsで作成しました。
ロールはさきほど作成した「honyaku_test」を選択
lambdaの画面
テストデータとして、bodyに「これはペンです。いいえ、これはノートです。」を用意しました。
ソースの中身は以下です。
「aws-sdk」を使用するのに特別な処理はいりません。
受け取ったJSONデータのbodyの値を翻訳用の関数に渡しているだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
const Aws = require('aws-sdk'); const Translate = new Aws.Translate({region: 'us-east-1'}); exports.handler = async (event) => { console.log('event :' + JSON.stringify(event)); let js = JSON.stringify(event); let body = JSON.parse(js); let js_body_text = body.body; //日本語から英語に翻訳 let rs = await getAwsTranslate(js_body_text,'ja','en'); return {statusCode: 200,message:rs.TranslatedText}; }; function getAwsTranslate(js_text,in_Language,out_Language) { return new Promise(((resolve, reject) => { let params = { Text: js_text, SourceLanguageCode: in_Language, TargetLanguageCode: out_Language } Translate.translateText(params, function(err,data){ if (err) { console.log(err); reject(); } else { console.log(JSON.stringify(data)); resolve(data); } }); })); }; |
lambdaを実行すると以下のように表示されました。翻訳されていますね。
1 2 3 4 |
{ "statusCode": 200, "message": "This is a pen. No, this is a note." } |
このlambdaをAPI GatewayでAPI化とすると簡単に翻訳APIが作成できてしまいますね。
AWSすばらしいです。