AWS Hands-on for Beginnersを試す

AWSについて久しく自分で手を動かしていなかったのですが、一念発起して少し手を動かしてみることに。まずはAWS Hands-on for Beginnersに載っているものをやってみることにしました。

aws.amazon.com

一個一個、名前とかを入力するのが面倒なのですが、入力すると動画つきのハンズオンコンテンツを参照することができます。

今回、Lambdaを使ったハンズオンを実施しましたが、マネージメントコンソールが現在のものとは変わっているのでちょっと操作に手惑うところがありますが、基本はさくさく進めることができます。

地味にハマったのは、Cloud9の構築。VPCの作成とSubnetの作成後に、Internet Gatewayの作成やRoute Tableの作成と関連づけ、IPアドレスの自動割り当て設定が抜けていていました。それぞれ以下のブログを見て復習。

qiita.com

dev.classmethod.jp

無事、作成できて作業を進めることができました。

Lambdaもこんな感じで作成できました。

Rubyでも実装できるので、こんな感じで作成しました。

require 'json'
require 'logger'
require 'date'
require 'aws-sdk-core'
require 'aws-sdk-translate'
require 'aws-sdk-dynamodb'

def lambda_handler(event:, context:)
    logger = Logger.new($stdout)

    logger.info(event)

    input_text = event['queryStringParameters']['input_text']

    logger.info(input_text)

    translate_client = Aws::Translate::Client.new
    response = translate_client.translate_text({
        text: input_text,
        source_language_code: "ja",
        target_language_code: "en"
    })

    dynamodb_client = Aws::DynamoDB::Client.new

    dynamodb_client.put_item({
        item: {
            "timestamp": Time.now.strftime("%Y%m%d%H%M%S"),
            "input_text": input_text,
            "output_text": response.translated_text
        },
        table_name: "translate-history"
    })

    { statusCode: 200,
      body: JSON.generate({output_text: response.translated_text}),
      isBase64Encoded: false,
      headers: {}
      }
end