Serverlss 应用开发之子账号最佳实践以及 Q&A (函数计算篇)

  • 时间:
  • 浏览:2

此时,N 不能能通过 fun deploy 部署成功。

创建触发器角色

此时,N 同样无法通过 fun deploy 完成部署。之后 N 想创建的 OSS 触发器,前要为该触发器配置另八个有权限调用函数的角色。而在模版文件中未显式声明该角色,Fun 同样会尝试去创建角色,而 N 用的子账户只有 ram:PassRole 权限,那末其他关于 RAM 的权限,全都无法创建成功。这时的防止辦法 和最初的服务角色差太大:

假设 N 想让该函数的日志不不能能持久化保存下来,N 你其他之后前要为 demo 服务配置日志项目和日志仓库。假设 A 公司在日志服务 SLS 有 logProject01 日志项目和 logStore01 日志仓库。N 在模版文件 template.yml 中为 demo 服务配置了如下内容:

新建子账号并加进 FC 相关权限

首先 L 前要做的是在 RAM 控制台上创建另八个新的用户,配置该用户是与否不能能登录控制台、是与否不能能编程访问。此处大家假设 N 同学使用阿里云函数计算命令行工具 Fun 进行本地开发的,之后 L 前要为 N 配置编程访问。当 L 为 N 配置了 AliyunFCFullAccess 权限后,N 就不能能在本地开发函数计算并进行远端部署了。

假设,N 此时希望为函数 demo/func01 配置另八个 OSS 触发器,N 编写的模版文件 template.yml 内容如下:

上述配置完成后,N 不能能修改模版文件内容为:

在通过子账号上手使用函数计算的过程中,往往会疑惑为你其他在为子账号配置了 AliyunFCFullAccess 后,在登录函数计算控制台以及使用函数计算命令行工具 Fun 时,有时仍旧会遇到权限相关的报错。

模版文件 template.yml 内容

那末,现在技术负责人 L 前要怎么为 N 同学配置阿里云账号从而使 N 同学不能能开发函数计算呢?

此时,N 无法通过 fun deploy 成功部署。为你其他呢? 之后此时 N 缺少 RAM 相关权限,无法创建角色并授予 demo 服务。此时,有五种做法不能能完成该操作:

创建服务角色并为子账号配置 PassRole 权限

模版文件 template.yml 内容

服务角色

服务角色授予了该函数计算服务下的所有函数访问阿里云服务和资源的权限,具体的权限由授予给该服务角色的权限决定。当函数被调用时,函数计算会代入该角色,之后在函数中含访问其他服务的操作(如访问日志服务 SLS),则前要该服务角色有相关的权限,之后无法访问成功。

在子账号实践中,更加推荐使用第二种辦法 ,相比第五种辦法 来说更加安全。假设 L 创建了 RAM 角色(demo-service-role),之后给 N 配置了 ram:PassRole。此时,N 在模版文件 template.yml 中为 demo 服务配置角色 demo-service-role

假设现在有 A 公司,A 公司的技术负责人 L 在阿里云有另八个主账号,现在有新的业务前要架设在函数计算上,该业务的开发人员为新来的 N 同学。

Fun 工程的模版文件 template.yml 内容

常见问题梳理:

通常,子账号在使用函数计算总要在另八个方面遇到权限相关的问题:

接下来大家会通过结合场景来介绍子账户的开发函数计算的最佳实践。

在介绍子账号最佳实践前,我要们先来了解下后边提到的服务角色、触发器角色的作用分别是你其他。

免费开通服务

模版文件 template.yml 内容

函数的入口文件 demo/func01/index.js 的文件内容

第二种辦法

下述的问题梳理总要基于之后为子账号配置了 AliyunFCFullAccess 后,使用函数计算控制台或命令行工具 Fun 总要遇到的问题。

本文将分析通过子账号使用函数计算时遇到的权限问题以及对应防止辦法 ,并提供子账号使用函数计算的最佳实践。

此时,N 之后有了 ram:PassRole 权限,不能能成功的将 demo-service-role 配置给 demo 服务,部署到线上。这时,demo/func01 函数就不能能将日志持久化记录在 SLS 日志服务中了。

触发器角色

函数计算提供了五种事件驱动的计算模型。在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的防止者,而触发器提供了五种集中的和统一的辦法 来管理不同的事件源。事件源前要扮演另八个角色来触发函数的执行,要求你其他角色有触发函数执行的权限

此时,N 不能能通过 fun deploydemo/func01 函数部署到远端。

模版文件 template.yml 内容

根据后边最佳实践的例子,大家不能能总结出如下几点经验:

假设 N 在本地开发了另八个简单的 HelloWorld 多多程序 。