1
1

APIGatewayからtext/plainを出力したいだけなのに、えらい苦労したのでメモ。
Lambda、APIGatewayの使い方はある程度分かっている前提です。

Lambda関数を作る

APIGatewayからrobots.txtを出力するだけのLambdaを作ります。
以下Pythonのソースコード。

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'text/plain'
        },
        'body': """
User-agent: *
Disallow:
        """
    }

Pythonからはapplication/jsonが返却されるのでAPIGatewayでそれを受け取ってtext/plainに変換します

APIGatewayの設定

ここで苦労した。新しいコンソールになって分かりづらいにも程がある。
旧コンソールとやれることは同じなので慣れていきましょうー

robots.txt用のリソースを作成

このボタンからrobots.txt 用のリソースを作成します。
この作業だけで惑わす表示がいっぱい!

このボタンを押して
スクリーンショット 2023-10-06 9.29.57.png

こう入力する
リソースパスは"/"を選択。
リソース名にrobotx.txtと入力。

スクリーンショット 2023-10-06 9.29.44.png

GETメソッドを追加

GETを追加しましょう。

スクリーンショット 2023-10-06 9.31.51.png

メソッドタイプはGET
統合タイプはLambda関数
Lambda関数は、さっき作った関数のARNを入力。

スクリーンショット 2023-10-06 9.32.44.png

統合レスポンスを追加

さっき作ったrobots.txt > GETリンクを押すとこんな画面になるので、統合レスポンスを押して、
マッピングテンプレートを作成

スクリーンショット 2023-10-06 9.42.31.png

マッピングテンプレートを追加

コンテンツタイプを application/json
テンプレート本文は以下

#set($inputRoot = $input.path('$'))
$inputRoot.body

スクリーンショット 2023-10-06 9.45.00.png

メソッドレスポンスを編集

レスポンスをJSONからtextへ捻じ曲げます。

スクリーンショット 2023-10-06 9.46.35.png

コンテンツタイプをtext/plainに変更

スクリーンショット 2023-10-06 9.48.05.png

APIをデプロイして公開

ステージ名はprdとかがいいでしょう。
公開するとURLが発行されるのでアクセスしてみましょう

https:// 発行されたURL/prd/robotx.txt

以上!

1
1
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
1
1