🎃

サーバーレスアーキテクチャで翻訳Web APIを構築する②

2024/05/18に公開

前回
https://zenn.dev/tn_a/articles/13a190bd52c7cd

下記ハンズオンを参照
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-confirmation_422.html


Amazon API Gateway ハンズオン② API GatewayとLambdaを組み合わせる

Amazon API GatewayとAWS Lambdaを使用し、日本語を英語に翻訳するWeb APIを作成する。

構成図

Lambda関数の作成

マネジメントコンソールからlambdaを検索。
"関数の作成"をクリック。

「一から作成」を選択。
関数名を入力し、ランタイムを「python3.12」を選択。
右下の"関数の作成"クリック。
少し時間が経って画面が遷移する。

コードの編集

「コード」タブを選択。

下記コードに書き換える。

import json
import boto3

translate = boto3.client(service_name='translate')

def lambda_handler(event, context):

    input_text = event['queryStringParameters']['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
        }),
        'isBase64Encoded': False,
        'headers': {}
    }

書き換えた後"Deploy"をクリックしてコードを更新する。

IAM ロールを追加

「設定」タブの「アクセス権限」を選択。
「実行ロール」の「ロール名」クリック。

「許可を追加」を選択して"ポリシーをアタッチ"をクリック。

検索してTranslateFullAccessを選択。
"許可を追加"をクリック。

APIを作成する

マネジメントコンソールからAPI Gatewayを検索。

REST APIの"構築"をクリック。

新しいAPIを選択。
API名を入力後、"APIを作成"をクリック。

/translateリソースを作成し、GETメソッドを作成する

"リソースを作成"をクリック。

リソース名を入力後"リソースを作成"をクリック。

「/translate」を選択し、"メソッドを作成"をクリック。

メソッドタイプ"GET"、統合タイプ"Lambda関数"選択。
「Lambdaプロキシ統合」をチェック。
「Lambda関数」で作成済みのLambda関数を指定。
"メソッドを作成"をクリック。

メソッドリクエストでクエリパラメータの設定

メソッドリクエストを選択し、"編集"をクリック。

「URLクエリ文字列パラメータ」を展開して"クエリ文字列を追加"をクリック。

名前を入力し、「必須」にチェックを入れ、"保存"をクリック。

APIのデプロイ

"APIをデプロイ"をクリック。

前回作成した「dev」を選択。
※作成していない場合「新しいステージ」を選択してステージ名を入力して"デプロイ"をクリック。

APIを叩く

「dev」を展開して「GET」を選択。
URLをコピーする。

/translate以下にクエリパラメータを入力してAPIを呼び出す。
/dev/translate?input_text=翻訳する日本語


次回
https://zenn.dev/tn_a/articles/4d021ded286d44

Discussion