使用 AWS API 网关和 Lambda 的地理定位服务
Geolocation service with AWS API Gateway and Lambda
我们正在努力做什么
我们正在尝试使用 API 网关和 Lambda 设置一个非常简单的地理定位服务。
与 https://ipstack.com/ 非常相似,但我们不想使用外部服务,因为我们认为在某些司法管辖区向我们提供的服务发送 non-anonymized IP 地址可能是个问题不控制(在征得用户同意之前)。
想要一个简单的 api https://location.my-site.com returns 国家(用于 GDPR、cookie 等目的)。
现在看来,API 网关后面有一个轻型 Cloudfront,它会产生 header “Cloudfront-Viewer-Country”,这将非常简单并实现我们需要的。即 lambda 接收 Cloudfront-Viewer-Country 并将其发回。
我们的尝试
我见过这样的解决方案:Build a Geolocation API using AWS Lambda and MaxMind,但我很难理解为什么部署 RDS 和维护 MaxMind 数据库对我们有意义,如果它已经可以从 Cloudfront-Viewer-Country.
我看到了这个问题:, and tried implementing the answer from Michael - sqlbot。但我似乎无法访问 headers.
我也尝试过 post 中的建议,但我似乎也无法访问 Cloudfront-Viewer-Country 的值。
我们在做什么(结合'What we have tried')
要访问并检查 header 是否可用,我正在使用以下 python lambda 函数
import json
def lambda_handler(event, context):
response = {
'status': '200',
'statusDescription': 'Found',
'headers': {
'location' : [ {
'event': json.dumps(event)
} ]
}
}
return response
问题是什么
但事件 json 转储不包含 Cloudfront-Viewer-Country。
我怀疑我做错了什么,但我真的想不通。任何指针将不胜感激。
谢谢
我能够通过设置 Endpoint Type = Edge optimized 来访问 Cloudfront-Viewer-Country。
我无法让它与 Endpoint Type = Regional 或 http api 网关一起工作。
我们正在努力做什么
我们正在尝试使用 API 网关和 Lambda 设置一个非常简单的地理定位服务。
与 https://ipstack.com/ 非常相似,但我们不想使用外部服务,因为我们认为在某些司法管辖区向我们提供的服务发送 non-anonymized IP 地址可能是个问题不控制(在征得用户同意之前)。
想要一个简单的 api https://location.my-site.com returns 国家(用于 GDPR、cookie 等目的)。
现在看来,API 网关后面有一个轻型 Cloudfront,它会产生 header “Cloudfront-Viewer-Country”,这将非常简单并实现我们需要的。即 lambda 接收 Cloudfront-Viewer-Country 并将其发回。
我们的尝试
我见过这样的解决方案:Build a Geolocation API using AWS Lambda and MaxMind,但我很难理解为什么部署 RDS 和维护 MaxMind 数据库对我们有意义,如果它已经可以从 Cloudfront-Viewer-Country.
我看到了这个问题:, and tried implementing the answer from Michael - sqlbot。但我似乎无法访问 headers.
我也尝试过 post 中的建议,但我似乎也无法访问 Cloudfront-Viewer-Country 的值。
我们在做什么(结合'What we have tried')
要访问并检查 header 是否可用,我正在使用以下 python lambda 函数
import json
def lambda_handler(event, context):
response = {
'status': '200',
'statusDescription': 'Found',
'headers': {
'location' : [ {
'event': json.dumps(event)
} ]
}
}
return response
问题是什么
但事件 json 转储不包含 Cloudfront-Viewer-Country。
我怀疑我做错了什么,但我真的想不通。任何指针将不胜感激。
谢谢
我能够通过设置 Endpoint Type = Edge optimized 来访问 Cloudfront-Viewer-Country。
我无法让它与 Endpoint Type = Regional 或 http api 网关一起工作。