首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何触发私有的函数?

如何触发私有的函数?
EN

Stack Overflow用户
提问于 2021-04-21 17:45:08
回答 1查看 587关注 0票数 1

我有一组相互调用的函数,如果我只将它们设置为内部通信,并试图通过URL调用它们,我将得到一个403响应。如果将它们设置为ALLOW_ALL通信量,则可以通过从同级函数调用它们来执行它们。

这就是我试图从兄弟函数(Python)调用函数的方式:

代码语言:javascript
复制
    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)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-21 19:39:32

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

  • 要么对执行调用的函数使用无服务器VPC连接器,要么对VPC连接器使用沿所有出口交通路线行驶。就像这样,请求通过VPC并被您的私有云函数接受
  • 或者您的私有云函数前面的部署负载均衡器 (因为您的私有云函数也接受来自Google的连接),并直接调用负载均衡器。但是这个负载均衡器将有一个公开的IP,我不确定这是你想要的。

您还可以设置一个“允许所有”,它已经在您的私有函数上工作了。此函数受IAM服务的保护(因为您需要设置JWT Bearer令牌),因此,公共或私有令牌丢失、无效或未经授权,云功能受到保护!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67200980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档