小编joh*_*aws的帖子

使用 AWS API Gateway 和 Lambda 的地理定位服务

我们正在努力做什么

我们正在尝试使用 API Gateway 和 Lambda 建立一个非常简单的地理定位服务。

与https://ipstack.com/非常相似,但我们不想使用外部服务,因为我们认为在某些司法管辖区将非匿名 IP 地址发送到我们无法控制的服务可能会出现问题(在征得用户同意之前)。

想要一个简单的 api https://location.my-site.com返回国家/地区(用于 GDPR、cookie 等目的)。

现在看来,API Gateway 后面有一个轻量级的 Cloudfront,它会生成标头“Cloudfront-Viewer-Country”,这将非常简单并实现我们所需要的。即 lambda 接收 Cloudfront-Viewer-Country 并将其发回。

我们尝试过什么

我见过这样的解决方案:使用 AWS Lambda 和 MaxMind 构建地理定位 API,但我很难理解为什么部署 RDS 和维护 MaxMind 数据库对我们来说有意义,如果它已经可以从 Cloudfront-Viewer-Country 获得的话。

我看到过这个问题:Accessing cloudfront-viewer-country header in AWS API Gateway using HTTP Proxy? ,并尝试实现Michael-sqlbot的答案。但我似乎无法访问标题。

我也尝试了这篇文章中的建议,但我似乎也无法访问 Cloudfront-Viewer-Country 的价值。

我们正在做什么(与“我们已经尝试过的事情”结合起来)

要访问并检查标头是否可用,我使用以下 python lambda 函数

import json
 
def lambda_handler(event, context):

    response = {
        'status': '200',
        'statusDescription': 'Found',
        'headers': {
            'location' : [ …
Run Code Online (Sandbox Code Playgroud)

geolocation amazon-web-services aws-lambda aws-api-gateway

5
推荐指数
1
解决办法
3768
查看次数