AWS Lambda で 日⇨英翻訳する

AWS初心者のものです。
昨日JAWS-初心者支部にて

1.AWS Lambda で 日⇨英翻訳する
2.翻訳 Web APIを作る 
3.文字起こし＋翻訳パイプラインを作る

のハンズオン３本立てを実施していただきました。

**今回は「1.AWS Lambda で 日⇨英翻訳する」をアウトプットをしていきたいと思います。**

##そもそもLambdaとは##
⇨AWS Lambda を使用することで、サーバーのプロビジョニングや管理をすることなく、コードを実行できます。料金は、コンピューティングに使用した時間に対してのみ発生します。(公式サイト参照)

######え？
理解するのに時間がかかりました。。。

僕みたいな初心者の方にわかりやくす説明するとしたら、

アプリケーション実行時には
**-WindowsやLinuxの環境を構築**
**-Webサーバ・APサーバ・DBサーバのインストール・環境構築**

が発生していました。

この手間を無くしてくれたのが救世主Lambda様。
初心者がつまずきやすい環境構築を取っ払ってくれました。

※EC2とLambda結局どっちがいいの？⇨一長一短あるみたいなので適材適所で利用するのが良いみたいです！

概要を理解できたところで早速本題へ移っていきましょう。


###1.Lambda functionを作成し、"Hello World!"を表示する
Lambdaのコンソールに行っていただいて

画面右上にある「関数の作成」をクリック
<img width="1359" alt="スクリーンショット 2020-02-20 15.47.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/6a0f42df-866a-8d2f-489e-6f312134fe1e.png">

オプション：「一から作成」
関数名：「translate-function」
ランタイム：「Python3.8」
⇨「関数の作成」をクリック

<img width="1541" alt="スクリーンショット 2020-02-20 15.49.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/3700b158-e9d8-cd64-85f6-fa1b8a7eb39b.png">

無事作成できましだでしょうか？
できたらこのポップアップが出現します。
<img width="642" alt="スクリーンショット 2020-02-20 15.55.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/8e260817-dcab-d5da-ff3a-fb5f4240428f.png">

作成したら少し下にスクロールして
「関数コード」の欄にコードがあります。

コードの「"Hello from Lambda"」⇨「"Hello World"」へ修正してみましょう！
<img width="768" alt="スクリーンショット 2020-02-20 16.00.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/cd80af10-6469-25bd-9136-f73999416252.png">
↓
<img width="1541" alt="スクリーンショット 2020-02-20 16.03.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/a654b379-59a8-24b3-665c-2635d48403b1.png">
修正したら右上の「保存」を忘れずに！

右上の「テスト」をクリック
<img width="829" alt="スクリーンショット 2020-02-20 16.07.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/02f6c5b5-2c62-9f41-4d4d-ec317702dab4.png">

テストイベントの設定で
イベント名：「Test」とし、「作成」をクリック。
<img width="832" alt="スクリーンショット 2020-02-20 16.08.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/1f1fd9ec-3195-5c2f-8c7b-88e99dea2f15.png">

もう一回「テスト」をクリックしてみてください！
<img width="791" alt="スクリーンショット 2020-02-20 16.09.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/49920fb3-77f2-ea03-090c-2fb60829b6cf.png">

少しわかりづらいですが「Hello World!」が表示されてれば成功です！

###2.Lambda functionを修正し、Amazon Translateと連携する！

先ほど作成したLambda functionの下部へスクロールし、実行ロール欄の「※※※※ロールを表示」をクリック！
ポリシーをアタッチしていきます！　※おそらく別タブが開きます
<img width="758" alt="スクリーンショット 2020-02-20 16.19.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/809c09ab-e9a1-d84e-eeb9-3613385cda93.png">

「ポリシーをアタッチします」をクリック
⇨検索窓で「translate」⇨「TranslateFullAccess」にチェックをいれ、「ポリシーのアタッチ」をクリック。
<img width="621" alt="スクリーンショット 2020-02-20 16.24.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/470c37c5-53fb-2b75-5050-0827fcfaca7c.png">
<img width="275" alt="スクリーンショット 2020-02-20 16.25.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/a4ba0d42-c273-94b9-265b-fe250c1ab13f.png">

Lambdaコンソールを開いてるタブへいき、ソースコードを修正していきます！
※AWS SDK for Python (boto3) のソースコードを利用しております。

```
 import json 
 import boto3

 def lambda_handler(event, context): 

     translate = boto3.client('translate') 
     input_text = '順調ですか？' 

     response = translate.translate_text( 
         Text=input_text, 
         SourceLanguageCode='ja', 
         TargetLanguageCode='en' 
     ) 
  
     output_text = response.get('TranslatedText') 
  
     return { 
         'statusCode': 200, 
         'body': json.dumps({ 
             'output_text': output_text 
         }) 
     } 
```

<img width="720" alt="スクリーンショット 2020-02-20 16.44.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/b44f060c-0f8b-58b3-4f68-5f8327780b73.png">
「保存」⇨「テスト」
<img width="436" alt="スクリーンショット 2020-02-20 16.46.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/550e3c46-87f0-960f-942e-cdccd50ec79c.png">

またわかりづらいですが翻訳結果が出ていれば成功です！

テキストを変更して遊んでみます！
「愛してる」
<img width="400" alt="スクリーンショット 2020-02-20 16.50.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/db4ad1ce-6390-aa71-9d2d-b5cd5779ad6e.png">
おお〜〜〜


じゃ、カタカナは？と思い。
「アイシテル」
<img width="398" alt="スクリーンショット 2020-02-20 16.51.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246337/62f221a8-e20c-d61c-4a20-9edff9fedcf6.png">

カタカナは流石にダメでした。笑





**Lambdaについて理解できていませんでしたが、ハンズオンを通し、少しは理解できたと思います。
実務的なテクニカルな部分については理解しておりませんが、これから理解していけるように勉強していきます！**

**ありがとうございました!**