前提・実現したいこと
表題の通り、ALBのターゲットグループにLambda(Python)を設定し、Basic認証を行いたいです。
不明点
以下のように実装しましたが、502(Bad Gateway)となってしまいます。
以下のLambdaのソースのどこかに問題があるようなのですが、どこが問題なのかわからず、苦戦しています。
ソースはこちらを参考にし、Pythonで書き直しました。
Lambdaソース
python
1# BASIC認証ユーザIDとパスワード 2USER_ID = "user" 3PASSWORD = "pass" 4 5# 認証成功時払い出しCookie情報 6COOKIE_NAME = "name" 7COOKIE_VALUE = "value" 8 9 10def lambda_handler(event, context): 11 """ 12 ラムダハンドラ 13 14 Args: 15 event (dict): イベント 16 context (object): コンテキスト 17 """ 18 19 del context 20 21 # 開始ログ 22 logging.info("'basic_authentication' Lambda start", extra={"event": event}) 23 # 認証文字列 24 auth_str = base64.b64encode(f"{USER_ID}:{PASSWORD}".encode("utf-8")) 25 26 headers = event["headers"] 27 if ("authorization" not in headers) or (headers["authorization"][0]["value"] != auth_str): 28 # 終了ログ 29 logging.info("'basic_authentication' Lambda end", extra={"event": event}) 30 # Basic認証要求 31 return { 32 "statusCode": "401", 33 "statusDescription": "401 Unauthorized", 34 "body": "Unauthorized", 35 "isBase64Encoded": False, 36 "headers": { 37 "WWW-Authenticate": "Basic", 38 "Content-Type": "text/html" 39 } 40 } 41 42 # 終了ログ 43 logging.info("'basic_authentication' Lambda end", extra={"event": event}) 44 45 # Basic認証成功 46 return { 47 "statusCode": "200", 48 "statusDescription": "200 OK", 49 "isBase64Encoded": False, 50 "headers": { 51 "Set-cookie": f"{COOKIE_NAME}={COOKIE_VALUE}", 52 'Content-Type': "application/json" 53 }, 54 "body": "Hello from Lambda!" 55 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。