JAWS−UG サーバーレスクイックスタート

# JAWS−UG  サーバーレスクイックスタート

先日仕事帰りに[JAWS−UG初心者支部]の90分でサーバーレスの基本をクイックで学ぶハンズオン勉強会に参加しましたので簡単にまとめて記載しました。

ハンズオンの前提条件が、ハンズオン用のAWSアカウントを持っていることだったので事前にAWS個人用アカウントを作成し、AWSサービス操作権限のある IAMユーザーでログインできるか確認も済ませました。

### 下記は勉強会のアジェンダです。
”サーバーレス”とは何か？何が嬉しいのか？
ハンズオン１：AWSLambdaで日=>英翻訳する
ハンズオン2：翻訳Web APIを作る
ハンズオン3：文字起こし+翻訳パイプラインを作る
## ”サーバーレス”とは何か？何が嬉しいのか？
![スクリーンショット 2020-02-25 17.56.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/c49a5788-207a-d453-33f8-3bbd5932ce9f.png)
![スクリーンショット 2020-02-25 17.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/044053da-40c4-eb54-3c3e-4ff18a664635.png)
## ハンズオン１：AWSLambdaで日=>英翻訳する
![スクリーンショット 2020-02-25 17.58.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/64a23f5a-dfed-ac6e-b807-2766e6886637.png)
![スクリーンショット 2020-02-25 17.58.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/2baf28c5-aab9-b280-6759-5695454ac4fa.png)
###  Lambda Functionを作成し、”Hello World” と表示する
・IAMユーザーでログイン後、東京リージョン、日本語を選択。
・AWS Lambda画面でLambda Functionを作成
![スクリーンショット 2020-02-25 17.59.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/deea23ba-40ea-44ae-b59c-53e76a2698ad.png)
ソースの７行目を修正し、保存ボタンで保存後、テストボタンクリックすると、ゲブにログが出力される。
![スクリーンショット 2020-02-25 18.00.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/6a2763aa-eccb-8e1e-b7ee-55ac6524691d.png)
###  Lambda Functionを修正し、Amazon Translateと連携する
![スクリーンショット 2020-02-25 18.06.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/f70534f8-6a3d-326d-210d-966d53ed9a1f.png)
・Lambda Function画面の下の方にスクロールし、「xxxロールを表示」をクリック(IAMロールの画面が別タブで開く)
・「ポリシーをアタッチします」をクリック
・検索窓にtranslateと入力し、TranslateFullAccessの方にチェックを入れる
![スクリーンショット 2020-02-25 18.07.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/3cfc40a8-3159-76b4-6760-3aa99c771b2c.png)
・その後、右下の「ポリシーのアタッチ」をクリック
・Lambda画面に戻りソースコードを下記のURLのように修正する
https://github.com/ketancho/aws-serverless-quick-start-hands-on/blob/master/src/translate-function.py
・修正後、保存、テスト
![スクリーンショット 2020-02-25 18.09.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/066fd551-6a4c-2513-cb36-ebf7b76d04ed.png)
## ハンズのオン2：翻訳Web APIを作る
### Amazon API Gateway の特徴
・サーバーのプロビジョニングや管理なしでAPIを作成・管理できるマネージメントサービス
・可溶性の担保、スケーリングなどのAPI管理で必要なことをAPI Gatewayに任せる
・料金体系はリクエストベース(REST APIの場合)
![スクリーンショット 2020-02-25 18.10.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/163228de-c178-8305-9b89-9b8f1e390fb8.png)
Amazon API Gateway とAWS Lambdaを組み合わせて外部から叩けるWeb APIを作る
![スクリーンショット 2020-02-25 18.10.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/183a7ed0-bcfc-0ce0-dc53-efbce280aa29.png)
### Lambda　Functionソースの修正
 下記のリンクのソースのように、input_textの部分をAPI Gatewayから渡される、クエリストリンクパラメータを受け取る形に修正→保存
 https://github.com/ketancho/aws-serverless-quick-start-hands-on/blob/master/src/translate-function-with-apigw.py
 ・API Gateway画面の下部に遷移し、REST APIの「構築」ボタンをクリック
 ・プロトコルはRESTのまま、新しいAPIを選択し、API名をtranslate-apiとし、API作成
 ・アクションタブから「リソースの作成」を選択し、リソース名をtranslateとし、リソース作成
 ・/translateが選ばれている状態で、アクションタブから「メソッドの作成」を選択し、
 /translateのプルダウンから「GET」を選択、☑️をクリックしてメソッドの作成
 ・「Lambdaプロキシ統合の使用」を☑️した後、Lambda関数にtranslate-function を指定し、保存をクリック
 ・アクションタブから「APIデプロイ」を選択し、デプロイされるステージは「新しいステージ」を選択し、
 ステージ名に「dev」と入力し、デプロイをクリック
 ・左側のメニューで「ステージ」を選び、「dev」をクリック するとURLガクリックされる。
![スクリーンショット 2020-02-25 18.11.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/5e530337-349f-5f69-7738-5a67f2a336ee.png)
##  ハンズオン3：文字起こし+翻訳パイプラインを作る
### Amazon Transcribe 特徴
音声をテキストに変換する文字起こしサービス
AWS Lambda とAmazon Transcribe を組み合えあせて、音声データを文字起こしするパイプラインを作る
![スクリーンショット 2020-02-25 18.14.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/4e54cc08-1817-01ea-cf03-0015611c55fa.png)
下記のパケットを作成
yyyymmdd-transcribe-input-yourname
yyyymmdd-transcribe-output-yourname

・AWS Lambdaの画面へ：サービス > lambdaと入力 >  Lambdaを選択 > 関数を作成
・設計図の使用 >検索窓にS3と入力し、Enter
・s3-get-object-pythonを選択肢、右下の設定をクリック
・Function 名: transcribe-function, Role名: transcribe-function-roleとし
・S3トリガーの対象なるバケットを指定(inputの方を選択)
・トリガーの有効化に☑️し、「関数の作成」ボタンクリック
・IAMロールを修正：Lambda Function の下部から xxx ロールを表示をクリック
・「ポリシーをアタッチします」をクリック
![スクリーンショット 2020-02-25 18.15.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/a3013c1f-1fc5-a5c7-414b-d27ecf93385d.png)
ソースコードを下記のリンクのように修正し、保存
https://github.com/ketancho/aws-serverless-quick-start-hands-on/blob/master/src/transcribe-function.py

下記リンクより音声ファイルをダウンロードする
https://d1.awsstatic.com/product-marketing/Polly/HelloEnglish-Joanna.0aa7a6dc7f1de9ac48769f366c6f447f9051db57.mp3

S3にmp3ファイルをアップロードする。input側のS3バケットでアップロードをクリックしアップする
![スクリーンショット 2020-02-25 18.15.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/d6cafb79-5ed6-8b61-4d1e-0df45bfedc56.png)
・サービス -> transcribeと入力 > Amazon Transcribeを選択
・左上のハンバーガーメニュークリック > Transcription jobsをクリック
・Job StatusがInprogressであることを確認し、Completeになるまで待つ
![スクリーンショット 2020-02-25 18.17.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/9e9337ac-df5a-976a-ee46-623e862b8823.png)
![スクリーンショット 2020-02-25 18.17.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/40894143-64f5-921c-8374-ce0f669d725d.png)

感想：
ハンズオンでしかも数名のチューターがいて、質問すると丁寧に指導して頂けて短時間で効率良い勉強ができて良かったです。