LambdaにてIPアドレスから逆引きして環境を振分するパターン

小ネタです。
前回の振り分けをいじくって、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

コメント

このブログの人気の投稿

証券外務員1種勉強(計算式暗記用メモ)

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

マクロ経済学(IS-LM分析)