このlambdaファンクションは、IPアドレスから国名や都市名などの情報を取得するためのLambdaファンクションです。IP情報のデータベースはGeoLite2-City
を使用しています。
Python 2.7
lambda_function.lambda_handler
ip_address
: IP v4 フォーマットIPアドレスlang
: 結果表示言語(ru
,fr
,en
,de
,zh-cn
,pt-br
,ja
,es
)default toen
Input event sample:
{
"ip_address": ["61.204.31.74", "127.0.0.1"],
"lang": "ja"
}
ip_address
: 検索対象IPアドレスfound
: 該当したデータがあったかどうか(true | false)info.continent
: 大陸名info.country
: 国名info.subdivision
: 州・県info.city
: 都市名info.postal_code
: 郵便番号info.location
: 緯度経度info.time_zone
: タイムゾーン
Execution result sample:
{
"items": [
{
"ip_address": "61.204.31.74",
"found": true,
"info": {
"continent": "アジア",
"country": "日本",
"subdivision": "千葉県",
"city": "千葉市",
"postal_code": "260-0855",
"location": [35.6047, 140.1233],
"time_zone": "Asia/Tokyo"
}
},
{
"ip_address": "127.0.0.1",
"found": false
}
]
}
ローカルでLambda関数を実行するには、最初に以下のステプで環境をセットアップしてください。
# 1. Clone this repository with lambda function name.
git clone https://github.com/KunihikoKido/aws-lambda-geoip.git geoip
# 2. Create and activate a virtualenv
cd geoip
virtualenv env
source env/bin/activate
# 3. Install python modules for development.
pip install -r requirements/local.txt
# 4. Install python modules and geolite2 db for lambda function.
fab setup
ローカルでLambda関数を実行するには、fab invoke
コマンドを実行します。
fab invoke
通常はインプットイベントにevent.json
が使用されますが、他のファイルを使用することも可能です。
以下の例は、新たに作成したcustom-event.json
をインプットイベントに指定して実行する例です。
fab invoke:custom-event.json
以下のステップで、AWS Lambda に登録可能な lambda_function.zip
ファイルが作成されます。
fab makezip
※ ZIPファイルは10MB超えるので、S3経由アップロードしてください。
fab aws-updatecode
fab aws-updatecode:function1
fab aws-invoke
fab aws-invoke:function1
fab aws-getconfig
ビルド済みのlambda_function.zip
は以下のURLを参照してください。
https://github.com/KunihikoKido/aws-lambda-geoip/releases
Method and Resources:
GET /geoip
Query Strings:
ip
: IPアドレスlang
: 結果表示言語
Request mapping template:
{
"ip_address": ["$util.urlDecode($input.params('ip'))"],
"lang": "$util.urlDecode($input.params('lang'))"
}
Example Request:
GET /geoip?ip=61.204.31.74&lang=ja