JAWS-UG 初心者支部&千葉支部 #26 新人さん歓迎!ハンズオン&LT(オンライン)


0. はじめに感謝の気持ちを伝えさせて下さい!

  • 世界中で非常事態宣言が発動されているという緊迫した状況にも関わらず、オンライン開催を実行されたスタッフさんの俊敏性が素晴らしい!と感じた勉強会でした。

  • いま一番興味あるテーマのサーバーレス&Web APIをAWSさんの解説付きでハンズオンできるチャンスでしたので、モクモクさせていただきました。どうもありがとうございます。

  • 資料はこちらに公開されています。本メモでは「忘れちゃいけないな」と思った3つの点について、資料を一部使用させていただきましたこと、お許し下さい。

1. マスターすると決めた種目は、誰かへちゃんと説明できるまでのレベルを目指そう!

2. やらなくてことを止めて、やるべきことに集中しよう!

3. うぉーーー、サーバーレスの時代にインフラエンジニアの仕事はない!

4. 翻訳Web API(RESTでJapaneseをEnglishに翻訳します)

  • 興味のあるAPI Gatewayを使ったハンズオン2についてメモしておきます。(ハンズオンは3個ありましたが時間内にハンズオン3が完遂できなかったので、翌朝モクモクしてみました)

  • 東京リージョンを使いましたがターンアラウンドタイムがとても早いなと体感できます。

  • URLにクエリ文字列(翻訳したい文字列)を入れて、作ったAPIGatewayへリクエストを飛ばすと、Englishでレスポンスが返ってきます(おかえり)。

  • 処理フローの内容を文字にすると...
    GETリクエスト➡️APIGateway➡️Lambda(python+AWStranslate)➡️レスポンス200

  • API Gatewayのマネコンで確認するとこんな感じです。

5. 翻訳した結果についてDynamoDBに格納する

  • 宿題のハンズオン2の+αに挑戦した時のLambda関数のコードです。
import boto3
import datetime
import json

def lambda_handler(event, context):

    # translateリソースを作成
    translate = boto3.client('translate')

 # URLから入力された日本語文字列をイベントとし、input_text変数に格納
    input_text = event['queryStringParameters']['input_text']

    # translate_textメソッドでinput_text変数の日本語(ja)を英語(en)へ翻訳
    response = translate.translate_text(
        Text=input_text,
        SourceLanguageCode='ja',
        TargetLanguageCode='en'
    )

    # 翻訳した英語をoutput_text変数に格納
    output_text = response['TranslatedText']

    # dynamoDBリソースを作成
    dynamodb = boto3.resource('dynamodb')

    # tableリソースを作成
    table = dynamodb.Table('TranslateHistory')

    # tableリソースへデータ登録(テーブルはCLIで事前に作成済み)
    table.put_item(
        Item = {
            'date': datetime.datetime.now().strftime("%Y%m%d"),
            'time': datetime.datetime.now().strftime("%H%M%S"),
            'from': input_text,
            'to': output_text
        })

    # クライアント(ブラウザ)への戻り値
    return {
        'statusCode': 200,
        'body': json.dumps({
            'output_text': output_text
        })
    }

6. Next Action

  • 正確に理解できていないキーワードをトリガーにPythonとLambdaをモクモク。
    • boto3=Python用のSDK。 ちなみにbotoの由来はAmazonのエンジニアが回答しています(アマゾンにいる🐬)
    • handler=pythonの関数のことをハンドラーと呼んでいる。
    • event
    • contextオブジェクト

最後に

  • 自動化や人の役に立つアプリケーションを開発することを目標に日々モクモクしている感じです。そんな時にとっても有意義なセミナーを創っていただいた初心者支部のスタッフさんとAWS金澤さんに感謝です。

  • Next Actionが進めて本記事を少しずつ更新したいと思います。