はじめに
Lambda functions URL を使っていて IP 制限をかけたいと思って IAM ポリシーで色々試してみたもののできませんでした。
無理くり Lambda 内で実装したので、その方法を共有したいと思います。
環境変数
環境変数にIP_RANGE
='['111.111.111.111', '222.222.222.222']'
を設定する。
ソースコード
import json
import os
import ast
# IPアドレスチェック
def check_ip(IP_ADDRESS, IP_RANGE):
valid_ip = False
if not valid_ip and IP_ADDRESS in IP_RANGE:
valid_ip = True
return valid_ip
def lambda_handler(event, context):
IP_ADDRESS = event["requestContext"]["http"]["sourceIp"]
IP_RANGE = ast.literal_eval(os.environ.get("IP_RANGE", "[]"))
valid_ip = check_ip(IP_ADDRESS, IP_RANGE)
if not valid_ip:
return {
'statusCode': 500,
'body': json.dumps('500 Unauthorized')
}
return {
'statusCode': 200,
'body': json.dumps('200 Success!')
}
あとがき
参考までに、、API Gateway では 以下の記事のように IAM ポリシー で IP 制限をかけることができます。
- 特定の IP アドレスのみが API Gateway REST API にアクセスすることを許可するにはどうすればよいですか?
参考
- GitHub (srcecde / aws-tutorial-code)
- Whitelist IP addresses for Lambda function URLs