我想看看哪个IP地址触发了我的HTTP触发云功能。
这是我的python云函数的(演示代码):def hello_world(request):
request_json = request.get_json()
if request.args and 'message' in request.args:
return request.args.get('message')
elif request_json and 'message' in request_json:
return request_json['message']
else:
return f'Hello World!'
由于GCP上的Python云函数使用Flask,您可以在代码中添加以下内容:
# get ip address for logging purposes
if request.environ.get('HTTP_X_FORWARDED_FOR') is None:
print(f"IP address: {request.environ['REMOTE_ADDR']}")
else:
print(f"IP address: {request.environ['HTTP_X_FORWARDED_FOR']}") # if behind a proxy
参见:使用Flask for Python获取访问者的IP地址
Print语句被发送到Cloud Logging,因此ip地址将在日志记录中可见。
为了更快地找到你的ip地址日志条目,你可以在云日志中过滤:resource.labels.function_name="name_of_your_cloud_function"
以上答案适用于第一代云函数。
当使用第二代云函数时,不需要添加特定的代码来检查函数调用者的ip地址。
你可以检查云记录和过滤器:resource.type="cloud_run_revision"