LambdaにてIPアドレスから逆引きして環境を振分するパターン
小ネタです。
前回の振り分けをいじくって、X-Forwarded-ForからIPアドレスを取ってきてそいつを逆引きして判定する様に一部修正してみた。
----------
環境変数は以下の様に
MATCH_VAL ホスト名
REFER_OBJ headers
KEY_NAME X-Forwarded-For
http://sonickun.hatenablog.com/entry/2014/10/30/183541
前回の振り分けをいじくって、X-Forwarded-ForからIPアドレスを取ってきてそいつを逆引きして判定する様に一部修正してみた。
◆プログラム
呼出し元Lambda----------
import json
import os
import socket
import boto3
def lambda_handler(event, context):
result = ''
param = ''
geh = os.getenv('REFER_OBJ')
gev = os.getenv('KEY_NAME')
mt = os.getenv('MATCH_VAL')
hs = event[geh]
#ヘッダー判定
if hs:
if gev in hs:
ipaddr = event[geh][gev]
hostname=socket.gethostbyaddr(ipaddr)[0]
if hostname == mt:
fn = 'distribution-test-back'
else:
fn = 'distribution-prd-back'
#クエリストリング取得
cp = event['company']
ds = event['destination']
input_event = {
"param1": str(cp),
"param2": str(ds)
}
Payload = json.dumps(input_event)
response = boto3.client('lambda').invoke(
FunctionName=fn,
InvocationType='RequestResponse',
Payload=Payload
)
body = json.loads(response['Payload'].read())
return {
'hostname':hostname,
'body': json.dumps(body)
}
----------環境変数は以下の様に
MATCH_VAL ホスト名
REFER_OBJ headers
KEY_NAME X-Forwarded-For
◆参照サイト
https://orebibou.com/2016/11/python%E3%81%A7ip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%8B%E3%82%89%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E3%82%92%E9%80%86%E5%BC%95%E3%81%8D%E3%81%99%E3%82%8B/http://sonickun.hatenablog.com/entry/2014/10/30/183541
コメント