Google cloud platform 如何触发私有的HTTP Google云函数?

Google cloud platform 如何触发私有的HTTP Google云函数?,google-cloud-platform,google-cloud-functions,terraform,Google Cloud Platform,Google Cloud Functions,Terraform,我有一组相互调用的函数,如果我只将它们设置为内部流量,并尝试通过URL调用它们,我会得到403响应。如果我将它们设置为ALLOW\u ALLtraffic,我可以通过从同级函数调用它们来执行它们 这就是我试图从同级函数(python)调用函数的方式: 当函数的入口设置为“仅允许内部和GCLB”时,是否有方法在内部调用函数 在您的案例中,您有两种解决方案: 在执行调用的函数上使用,或连接到VPC连接器。这样,请求通过您的专有网络,并被您的私有云功能接受 或者在您的私有云函数前面(因为您的私有云函

我有一组相互调用的函数,如果我只将它们设置为内部流量,并尝试通过URL调用它们,我会得到
403
响应。如果我将它们设置为
ALLOW\u ALL
traffic,我可以通过从同级函数调用它们来执行它们

这就是我试图从同级函数(python)调用函数的方式:

当函数的入口设置为“仅允许内部和GCLB”时,是否有方法在内部调用函数


在您的案例中,您有两种解决方案:

  • 在执行调用的函数上使用,或连接到VPC连接器。这样,请求通过您的专有网络,并被您的私有云功能接受
  • 或者在您的私有云函数前面(因为您的私有云函数也接受来自Google负载平衡器的连接),直接调用负载平衡器。但这个负载平衡器将有一个公共IP,我不确定这是你想要的

您还可以设置一个“allow all”,它已经在您的私有函数上工作。此功能受IAM服务保护(因为您需要设置JWT承载令牌),因此,如果令牌丢失、无效或未经授权,则为公共或私有,您的云功能将受到保护

在您的案例中,您有两种解决方案:

  • 在执行调用的函数上使用,或连接到VPC连接器。这样,请求通过您的专有网络,并被您的私有云功能接受
  • 或者在您的私有云函数前面(因为您的私有云函数也接受来自Google负载平衡器的连接),直接调用负载平衡器。但这个负载平衡器将有一个公共IP,我不确定这是你想要的

您还可以设置一个“allow all”,它已经在您的私有函数上工作。此功能受IAM服务保护(因为您需要设置JWT承载令牌),因此,如果令牌丢失、无效或未经授权,则为公共或私有,您的云功能将受到保护

云功能不是专有网络的一部分,也不位于专有网络内部。这意味着访问尝试将失败(CF->CF)。相反,使用授权:
HTTP授权:承载身份\u令牌
。我相信我们正在这样做?
函数\u头={“授权”:f“承载{jwt}”}
是的,我看到了该代码,但通过使用您的问题选项,该授权将在以后验证,这不会发生。仅使用授权或查看@guillaume的答案。云功能不是专有网络的一部分,也不位于专有网络内部。这意味着访问尝试将失败(CF->CF)。相反,使用授权:
HTTP授权:承载身份\u令牌
。我相信我们正在这样做?
函数\u头={“授权”:f“承载{jwt}”}
是的,我看到了该代码,但通过使用您的问题选项,该授权将在以后验证,这不会发生。仅使用授权或查看@guillaume的答案。
    functionURL = os.environ.get("FUNCTION_URL", "")
    metadata_server_url = "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience="
    token_full_url = metadata_server_url + functionURL
    token_headers = {"Metadata-Flavor": "Google"}

    # Fetch the token
    token_response = requests.get(token_full_url, headers=token_headers)
    jwt = token_response.text

    # Provide the token in the request to the receiving function
    function_headers = {"Authorization": f"bearer {jwt}"}

    r = requests.post(functionURL, json=jsonData, headers=function_headers)