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 用のリソースを作成します。
この作業だけで惑わす表示がいっぱい!
こう入力する
リソースパスは"/"を選択。
リソース名にrobotx.txtと入力。
GETメソッドを追加
GETを追加しましょう。
メソッドタイプはGET
統合タイプはLambda関数
Lambda関数は、さっき作った関数のARNを入力。
統合レスポンスを追加
さっき作ったrobots.txt > GETリンクを押すとこんな画面になるので、統合レスポンスを押して、
マッピングテンプレートを作成
マッピングテンプレートを追加
コンテンツタイプを application/json
テンプレート本文は以下
#set($inputRoot = $input.path('$'))
$inputRoot.body
メソッドレスポンスを編集
レスポンスをJSONからtextへ捻じ曲げます。
コンテンツタイプをtext/plainに変更
APIをデプロイして公開
ステージ名はprdとかがいいでしょう。
公開するとURLが発行されるのでアクセスしてみましょう
https:// 発行されたURL/prd/robotx.txt
以上!