LoginSignup
3
4

More than 1 year has passed since last update.

Pythonコードの中に記載されたHTMLテキストをブラウザで表示する(Api Gateway,Lambda)

Last updated at Posted at 2023-01-26

書くきっかけ

Pythonコードの中に直書きしたHTMLを、クライアントからリクエストがあったときにブラウザで表示するコードを書いてみました。
自分の話で恐縮ですが、ちょっとApi GatewayとLambdaのテストをしてみたいと思ったときに、HTMLレスポンスが返せる簡単なLambda関数を用意したくなります。
そういった際に使えるのではと考えました。

使うもの

AWSで以下のものを使います。

  • Api Gateway
  • Lambda (Python 3.9)

やってみる

Lambda

以下の設定値でLambda関数を作成しました。ほかはデフォルトの設定値です。

項目 設定値
関数名 htmlResponseFunc
ランタイム Python 3.9
ハンドラ lambda_function.lambda_handler
アーキテクチャ x86_64

コード

string型でHTMLを記述し、それをbytes型に変換するところがポイントだと思います。

import base64

def lambda_handler(event, context):
    str_html = '''
<!DOCTYPE html>
<html lang="ja">
    <head>
        <title>TestTitle</title>
        <meta charset="utf-8"/>
    </head>
    <body>
        <h1>This is a test of ApiGateway and Lambda</h1>
    </body>
</html>'''
    bytes_html = bytes(str_html, 'utf-8')
    result = base64.b64encode(bytes_html)
    
    return result

Api Gateway

作成

以下の設定値でApi Gatewayを作成しました。

項目 設定値
プロトコル REST
API名 htmlResponseApiGw
エンドポイントタイプ リージョン

リソース

GETメソッドのリソースを作ります。
統合タイプLambda関数として、Lambda関数に先ほど作成したLambda関数の関数名を入力します。
image.png
メソッドレスポンスコンテンツタイプのみtext/htmlに変更しました。
image.png

統合レスポンスコンテンツの処理バイナリに変換(必要な場合)に変更しました。
image.png

こちらをdevというステージを作成してデプロイしました。
URLの呼び出しに記載されてURLにアクセスしてみます。
image.png

結果

WEBページが表示されました。
image.png

あとがき

こちらの簡単な環境を使用して、Api Gatewayのステージ変数の動作確認をやってみたいと思います。

参考サイト

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4