首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给予GCP Cloud Function ( CF )使其只能从另一个CF调用的正确权限是什么?

在 Google Cloud Platform (GCP) 中,如果你希望一个 Cloud Function (CF) 只能被另一个 Cloud Function 调用,你需要配置适当的身份和访问管理 (IAM) 权限。以下是实现这一目标的步骤:

1. 创建服务账号

首先,为调用 Cloud Function 的 Cloud Function 创建一个服务账号。

代码语言:javascript
复制
gcloud iam service-accounts create caller-function-sa \
    --display-name "Service account for caller Cloud Function"

2. 授予调用权限

接下来,为这个服务账号授予调用目标 Cloud Function 的权限。你需要将 roles/cloudfunctions.invoker 角色绑定到目标 Cloud Function。

代码语言:javascript
复制
gcloud functions add-iam-policy-binding TARGET_FUNCTION_NAME \
    --member="serviceAccount:caller-function-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/cloudfunctions.invoker"

TARGET_FUNCTION_NAME 替换为目标 Cloud Function 的名称,将 YOUR_PROJECT_ID 替换为你的 GCP 项目 ID。

3. 配置调用 Cloud Function 使用服务账号

在调用 Cloud Function 的部署过程中,指定使用刚刚创建的服务账号。

代码语言:javascript
复制
gcloud functions deploy CALLER_FUNCTION_NAME \
    --runtime RUNTIME \
    --trigger-http \
    --service-account caller-function-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com

CALLER_FUNCTION_NAME 替换为调用 Cloud Function 的名称,将 RUNTIME 替换为你的 Cloud Function 的运行时(例如 nodejs14),将 YOUR_PROJECT_ID 替换为你的 GCP 项目 ID。

4. 确保目标 Cloud Function 的触发器配置正确

确保目标 Cloud Function 的触发器配置为 HTTP 触发器,并且没有公开访问权限。

代码语言:javascript
复制
gcloud functions deploy TARGET_FUNCTION_NAME \
    --runtime RUNTIME \
    --trigger-http \
    --no-allow-unauthenticated

TARGET_FUNCTION_NAME 替换为目标 Cloud Function 的名称,将 RUNTIME 替换为你的 Cloud Function 的运行时。

5. 调用 Cloud Function

在调用 Cloud Function 的代码中,使用 HTTP 请求调用目标 Cloud Function。确保在请求中包含适当的身份验证令牌。

以下是一个使用 Node.js 的示例,展示如何从一个 Cloud Function 调用另一个 Cloud Function:

代码语言:javascript
复制
const { google } = require('googleapis');
const fetch = require('node-fetch');

exports.callerFunction = async (req, res) => {
  const targetFunctionUrl = 'https://REGION-PROJECT_ID.cloudfunctions.net/TARGET_FUNCTION_NAME';

  // 获取身份验证令牌
  const auth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform']
  });

  const client = await auth.getClient();
  const token = await client.getAccessToken();

  // 调用目标 Cloud Function
  const response = await fetch(targetFunctionUrl, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token.token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ message: 'Hello from caller function!' })
  });

  const data = await response.json();
  res.status(200).send(data);
};

REGION 替换为目标 Cloud Function 部署的区域,将 PROJECT_ID 替换为你的 GCP 项目 ID,将 TARGET_FUNCTION_NAME 替换为目标 Cloud Function 的名称。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

给 Nginx 站点套上一层 Cloudflare

比如国外比较知名 AWS 提供 Cloudfront、GCP 提供 Cloud CDN 以及 Cloudflare 公司提供 Cloudflare 等,国内比较知名腾讯云提供 CDN、阿里云提供...Cloudflare 免费版就具有清洗流量功能:当 Cloudflare 发现流量来自僵尸网络或者异常流量请求时,就会拒绝响应或者响应某些请求,而这些请求也会转给真实服务器进行响应。...:/home/ubuntu/ssl/ Nginx 配置 添加配置   在 Nginx 配置目录 /etc/nginx/sites-available 下新增 yourls 配置文件(需使用 sudo 权限方可新增...如下配置文件中 IPv4/IPv6 IP 地址段均来自 Cloudflare 官方声明。此 cf.conf 文件放置在 /etc/nginx 目录下。...yourls 中再增加两行来使其生效,内容如下所示: server { ...

2.1K20

使用Cloud Foundry来调整微服务API

随着基础API发展,随着时间推移而变化。 “cf”端提供了执行基本Cloud Foundry操作(例如推送应用程序)所需各种API调用标准包装。...对于大多数用途,最好使用cf工具与Cloud Foundry进行交互,而不是直接调用API。Cloud Foundry验收测试(或CAT社区)就是这样做。...这些测试可以确保Cloud Foundry自身行为,而不是像调用低级别的REST调用那样直接包装cf命令。 这是大使模式 这种使用大使设计模式管理方法。 一个大使要做什么?...另一个值得关注访问库是ActiveState云代工客户端 JavaScript客户端。如果您想从浏览器中运行应用程序管理Cloud Foundry,这个方法非常方便。...概要 微服务并不是什么新东西,但微服务使用和意识最近已经膨胀到爆炸了。自然而然地,随着所有这些消息曝光,许多微服务相关模式和实践正在迅速发展。

1.4K100
  • 在边缘设备上安装 Korifi 以管理 K3s

    它提供了一个回答社区中许多人提出问题解决方案:“ Cloud Foundry 用户迁移到 Kubernetes 最佳方式是什么?”...它已经发展成为一个成熟且稳定项目,定期发布新版本,最新版本是 25.10-rc1+k3s1 。 K3s 小型占用空间使其能够在计算能力较低设备上运行,非常适用于物联网部署。...这将设置生成 kubeconfig 文件文件权限模式为 644 ,这意味着所有者具有读写权限,而其他用户只有读取权限。K3s 安装过程中默认不执行此操作。...Step 9: 通过 Cloud Foundry API 进行身份验证 cf api https://api.localhost --skip-ssl-validation cf login 身份验证...&& cf target -o acme-corp -s foo-bu 在 Cloud Foundry 中: target 是设置 Cloud Foundry 实例中活动组织和空间。

    9610

    GCP 上的人工智能实用指南:第三、四部分

    patch:更新模型资源 setIamPolicy:设置 AI 平台内特定资源访问控制 testIamPermissions:列出调用用户帐户对特定资源拥有的所有权限 为了执行在线预测,需要以值列表形式或.../img/cf45a00a-e7fc-4f0b-b924-f849bdc6e1e5.png)] 图 9.19:REST API 调用 JSON 输出 创建模型资源后,即可创建模型版本。...但是,如果您正在使用自定义预测例程,并且需要在模型版本中具有一组不同权限,则可以添加另一个服务帐户以供使用。...: 实例名称 数据库名称 用户名:root 创建实例时设置root用户密码 创建 Cloud Function 现在让我们创建一个 Cloud Function: 从“计算”部分下左侧面板中选择“...您将从上一步下载 Cloud Function 代码中获得相同代码行。

    6.8K10

    GCP 上的人工智能实用指南:第一、二部分

    这将帮助我们为应用选择正确选项,以确保我们以经济高效方式获得最佳性能。 在本章中,我们将深入探讨可用于在 Google Cloud Platform(GCP)上构建和运行 AI 应用选项。...另一个名为 Cloud Spanner 服务可以提供类似的用例,Cloud SQL 可以提供类似的用例,但是规模非常大。...可以使用大多数 GCP 计算和处理服务以及外部 GCP(具有正确权限集)访问 Cloud Spanner 实例。 最快方法之一是使用 Google Cloud Shell 快速访问它。...如果模型显示出很高方差,则它会变得非常灵活,并适应训练集数据点。 如果高方差模型遇到另一个未学习数据点,则无法正确预测。 方差量化了预测和相同观测值之间差异。.../apachecn/apachecn-dl-zh/-/raw/master/docs/handson-ai-gcp/img/2cf2f943-4475-4926-8674-1a48cf35dd9f.png

    17.2K10

    C++ Primer Plus习题及答案-第九章

    在当前源文件中使用函数应该说明为内部函数(static修饰函数),内部函数应该在当前源文件中说明和定义。...c. topsecret变量由一个文件中所有函数共享,但对于其他文件来说是隐蔽。 d. beencalled记录包含它函数被调用次数 a. home将自动成为自动变量。...使用using编译指令时,就像在一个包含using声明和名称空间本身最小声明区域中声明了这些名称一样。 3.重新编写下面的代码,使其不使用using声明和using编译指令。...(3,6)函数时,它返回两个int参数平均值,在同一个程序另一个文件中调用时,它返回两个int参数double平均值。...其中一个文件名为golf.cpp,它提供了与头文件中原型匹配函数定义;另一个文件应包含main(),并演示原型化函数所有特性。

    33230

    我们弃用 Firebase 了

    GCP 偏向之一:通过移除 Firebase 特性迫使人们迁移到 GCP 在过去几个月中,Firebase 去掉了仪表板中 Cloud Function 日志。...我相信,谷歌不会介意开发人员放弃 Firebase 而单纯使用 GCP。 近期 Cloud Function 部署速率限制 Cloud Function CI/CD 降级。...Firebase 对 Cloud Function 部署强制执行每 100 秒 80 次调用配额。据我所知,这个配额已经存在有一段时间了。...这很棘手,因为 80 个端点并不算多,而且 Firebase 至今没有提供一种简洁方法,让我们可以部署更改后 Cloud Function。...我考虑了以下两种变通方法: 使用单个基于事件名称调用条件逻辑(如使用事件分派器) Cloud Function

    32.6K30

    matinal:什么是 SAP BTP?

    最开始时候SAP自己提供基础算力,所以可以经常听到BTP历史版本叫做NEO,用以区分现行底层依赖第三方合作伙伴如Azure,AWS,GCP和阿里云最新版本Cloud Foudry(简称CF),这都在一定程度上体现了在数字云时代快速变更对...像这种不同服务之间相互调用还会越来越多,这也是我开头提到BTP初衷,它希望各个服务之间可以协同联系,而不是各自为战。 3....那Space又是什么? 请参照这张图。...BTP运行时环境 SAP BTP本身作为平台,是基于开源PAAS Cloud Foundry(就开头提到CF)建立起来,所以CF上可以使用特性比如命令行登陆,管控服务,角色权限,部署Java Python...在需求激增浪潮下,企业不能再依靠少数受过专业培训员工来开展创新。此外,软件开发和分析都必须依靠现代技术和久经验证卓越实践,才能快速交付成果,满足业务需求。

    19510

    面向开发者Cloud Foundry

    Cloud Foundry 几个概念 Users(用户)是可以管理 org用户组、space应用空间和应用程序appCloud Foundry用户 Roles(角色)表示赋予用户不同权限,比如Org...这些服务需要在Cloud Foundry层中进行定义,然后就可以被任何一个org或space通过Service Broker API进行调用。...如果你不想在自己机器上安装PCF Dev,并且仍然希望试用一下Cloud Foundry,那么你也可以跳过安装步骤,安装CF CLI,然后使用Pivotal Web Service可用评估版本。...一旦启动了CF,你就可以打开一个新终端,然后运行CF命令连接到Cloud Foundry。...如果你正在使用Pivotal Cloud Foundry 商业版或者开发版,那么这个基于Web应用程序控制台在Pivotal Cloud Foundry 上是可用,它完全可以作为 CF CLI替代品

    2.5K50

    容器服务 TKE 存储插件与云硬盘 CBS 最佳实践应用

    ,则 PV Controller 直接调用 in-tree 插件实现完成创建 PV。...特性 In-Tree 插件实现了使用 CBS 能力,其主要特性有: 静态数据卷:即用户手动创建 volme、PV 对象、PVC 对象 动态数据卷:根据 StorageClass 配置来由插件控制创建和删除...Tencent Cloud Provider 中封装云 API,In-Tree 插件调用 Cloud Provider 实现了 attach/detach 具体逻辑,并提供给 AD Controller...实践之前不妨先来说说 你对存储都有哪些需求吧~ 留言板评论以下【问题编号+答案】 回答全部问题同学将有机会获得腾讯云公仔1 仅限两个名额,快快参与起来吧 问题1:你在 k8s 集群中运行过哪些有状态服务...对存储有哪些需求?希望能覆盖哪些场景能力? 问题2:你知道 csi driver 注册机制是什么吗? 活动截止时间:2020年12月18日18:00 ?

    1.9K22

    如何分分钟构建强大又好用深度学习环境?

    深度学习好处在于,在构建解决方案时,我们有更好计算力、更多数据和各种易于使用开源框架,比如 keras、TensorFlow 以及 PyTorch。 深度学习坏处是什么呢?.../amis/ GCP Deep Learning VM Images:https://cloud.google.com/deep-learning-vm Google Colaboratory 也许谷歌是最好选择之一...GCP Deep Learning VM Images GCP(Google Cloud Platform)提供了一整套云计算服务,包括运行深度学习模型和工作负载基础设施。...现在你需要个人秘钥才能从本地终端使用 SSH 登录服务器。一般而言,AWS 在创建虚拟机最后一步才让你设置密码,并给你提供可下载个人秘钥。GCP 允许你用 SSH 通过 GCP 页面直接登录系统。...还有另一个选择,尤其是对 AWS 实例来说,那就是在本地实例上用端口转发,通过本地机器浏览器来访问云端服务器笔记本。这也称为 SSH 隧道(tunneling)。 ?

    2.8K60

    Python Web 深度学习实用指南:第三部分

    创建 GCP 服务帐户 GCP 服务帐户管理提供访问 GCP 资源权限。...在下一节中,我们将探索另一个 GCP API,该 API 可用于预测图像和视频内容。 在 Python 中使用 Cloud Vision API 计算机视觉是使计算机理解图像并理解图像领域。...现在,当您尝试在类似任务上训练另一个网络时,事实证明您可以使用上一个任务权重。 这里“相似性”定义很宽泛,暂时可以避免。 但是您可能想知道这里优势是什么。...该 URL 不能单独使用; 它需要有一个后缀,指向要调用正确方法。...此处理函数首先设置适当标头,以调用后端 API,然后将画布上显示图形转换为数据 URL 字符串: $("#predict-btn").click(function() {

    15K10

    实时数仓:基于流计算 Oceanus 实现 MySQL 和 HBase 维表到 ClickHouse 实时分析

    页面地址:https://console.cloud.tencent.com/cdb [1620] 新建 MySQL 服务页面需要注意选择网络是之前创建好。...' # 插入数据 put 'dim_hbase','1','cf:name','MingDeSchool' 1.5 创建云数据仓库 ClickHouse 页面地址:https://console.cloud.tencent.com...(需要提供 SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD 权限) 'password' = 'YoursPassword...testdb', 'table-name' = ' student_school ', 'table.collapsing.field' = 'Sign' ); 2.2.3 进行逻辑运算 此例子中,进行了简单...student.proc_time ON CAST(student.school_id AS STRING) = dim_hbase.rowkey; 2.3 结果验证 在ClickHouse数据库中查询数据是否正确

    2.2K30

    基于云开发 CloudBase 搭建在线视频会议应用

    navigator.mediaDevices; } // 检测是否有media权限 export async function checkMediaPermission() {   // 请求获得媒体流输入...JS sdk 调用云开发能力时,需保证调用域名已加入云开发WEB 安全域名中,以避免调用时出现跨域问题,即本地开发使用域名应增加进 WEB 安全域名 中。...";    exports.main = async (data) => {   const app = cloud.init({        env: cloud.SYMBOL_CURRENT_ENV...第 6 步 使用 CloudBase Framework 一键部署 1、增加静态部署功能, 使用了 website 插件 2、增加部署云函数功能, 包括云函数定时调用设置, 使用了function...本地部署 1、修改 .env 文件中 ENV_ID 值 tcb-demo-10cf5b 修改为自己环境 ID 2、命令行 cd 到本目录中,执行 npm run deploy 即可 ?

    1.5K94

    Java开发者PaaS指南

    如果需要更新应用程序,则要用到另一个cf push”命令。但这么做会中止当前实例运行,并将其替换为新版本,因此会有一些服务停止时间。...一旦注册者名字中包含了UTF-8字符,尽管第一封电子邮件不会有什么问题,但后续就会出错。这个问题出在MySQL无法正确地存储UTF-8字符上。...简而言之,我放弃了VCAP调用数据,配置了SendGrid客户端,用使用API密钥方法来调用API,这些也被我添加到了部署配置中。...这需要使用Cloud Foundry命令行接口,将实时URL映射到应用程序新版本("cf map-route"),然后将其从旧版本中删除(“cf-unmap-路由”)。...这里要提醒大家是,切换到新版本后,任何驻留在旧版程序内存空间中信息都会丢失。

    2.2K40

    使用反事实示例解释 XGBoost 模型决策

    如果您有兴趣,请注意代码仍在开发中,正在等待外部贡献者使其成为大型树集成模型 CF 可解释性一个很好包,这些模型有一天可能会在 XGBoost 代码中占有一席之地(是的,作者是个梦想家……)。...CF_search <- function(query, # query point predicted_class, # predicted class of...只有在这些假设下,我们才能在未分类数据和错误数据之间进行比较,并将我们 CF 方法应用于未分类示例,就像我们对错误数据所做那样。 在这个用例中,我们引入了另一个方面:合理性概念。...通过强制模型更有信心地预测正确类,我们获得了 CF 示例,它看起来越来越接近正确元素(“正确类”,我指的是与地面中查询点相关联类真相)。...从视觉上看,我们看到 CF 方法对初始查询数据进行了合理更改,使其看起来更像“5”。第二行:模型将“4”错误分类为“9”示例。

    70010
    领券