标签管理

函数计算支持将相同作用的函数资源通过标签Tag归类,便于搜索和资源聚合。您还可以通过标签功能将函数进行分组,可以实现不同角色对不同分组的函数拥有不同的操作权限。本文介绍标签功能的使用说明、使用限制以及如何在函数计算控制台操作标签等。

使用说明

  • 标签与函数资源之间是多对多的关系。

  • 每个标签都由一对键值对组成。

  • 标签可以是授权的一个条件,为一个确定范围内的资源做精细粒度授权。

  • 函数下的资源,版本、别名、函数和触发器均继承函数的标签。

    • 只要API的调用上填写了函数,都支持标签鉴权。

    • 不同版本的函数都是相同的标签,即标签修改影响的标签鉴权针对的是所有版本和别名的函数。

使用限制

  • 标签键(Key)的最大长度为64个Unicode字符,区分大小写。

  • 标签值(Value)的最大长度为128个Unicode字符,区分大小写。

  • 每个资源的标签数不得超过20个。

  • 标签键(Key)支持ASCII、数字、中文字符和特殊字符-\.!@#$%?/^&*)(+={}[\\]",'<>~·`:;|_。不支持中文标点符号,不支持以aliyunacs:开头,不允许包含http://https://,不允许为空字符串。

  • 标签值(Value)支持ASCII、数字、中文字符和特殊字符-\.!@#$%?/^&*)(+={}[\\]",'<>~·`:;|_。不支持中文标点符号,不允许包含http://https://,允许为空字符串。

  • 各地域间的标签信息不互通。例如,在华东1(杭州)地域创建的标签在华东2(上海)地域不可见。

新建标签

  1. 登录函数计算控制台,在左侧导航栏,单击函数

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。

  3. 在函数详情页面,将鼠标移至函数名称后的image图标,然后在气泡中单击绑定

  4. 编辑标签对话框中,填写标签键标签值,单击确认,然后单击关闭

    添加成功后,将鼠标再次移至函数名称后的标签图标,您可以看到刚才添加的标签。您还可以根据需要,参考控制台界面提示,更新或删除标签。

重要

如果您操作的函数是在函数计算2.0控制台创建的函数(名称中含有$符号),标签会绑定到2.0的服务,而不是绑定到函数,详情请参见管理标签

使用标签对函数分组授权

假设您在函数计算中创建了10个函数,需要将5个函数授权给dev团队,另外5个函数授权给ops团队。您希望每个团队只能查看被授权的函数,不能查看未被授权的函数。此时,您可以通过标签功能将各团队进行分组,然后给不同分组的团队授予不同的权限。

您需要给其中5个函数添加一对标签,标签键是team,标签值是dev;另外5个函数添加另一对标签,标签键是team,标签值是ops

  1. 将5个授权给dev团队的函数打上team:dev标签,5个授权给ops团队的函数打上team:ops标签。具体操作,请参见新建标签

  2. 创建两个RAM用户。具体操作,请参见创建RAM用户

  3. 创建dev和ops两个用户组。具体操作,请参见创建用户组

  4. 将已创建的两个RAM用户分别添加到用户组dev和ops下。具体操作,请参见为用户组添加RAM用户

  5. 为两个用户组dev和ops授予不同的权限。

    权限策略分为系统权限策略和自定义权限策略,根据实际场景选择合适的权限策略。

    • 为用户组授予系统权限策略。

      具体操作,请参见为用户组授权

    • 为用户组授予自定义权限策略。

      1. 创建自定义权限策略

        假设给dev团队创建的自定义策略名称为policyForDevTeam,策略示例如下。

        {
            "Statement": [
                {
                    "Action": "fc:*",
                    "Effect": "Allow",
                    "Resource": "*",
                    "Condition": {
                        "StringEquals": {
                            "fc:tag/team": "dev"
                        }
                    }
                },
                {
                    "Action": "fc:ListFunctions",
                    "Effect": "Allow",
                    "Resource": "*"
                },
                {
                    "Action": "fc:ListTagResources",
                    "Effect": "Allow",
                    "Resource": "*"
                }
            ],
            "Version": "1"
        }      

        假设给ops团队创建的自定义策略名称为policyForOpsTeam,策略示例如下。

        {
            "Statement": [
                {
                    "Action": "fc:*",
                    "Effect": "Allow",
                    "Resource": "*",
                    "Condition": {
                        "StringEquals": {
                            "fc:tag/team": "ops"
                        }
                    }
                },
                {
                    "Action": "fc:ListFunctions",
                    "Effect": "Allow",
                    "Resource": "*"
                },
                {
                    "Action": "fc:ListTagResources",
                    "Effect": "Allow",
                    "Resource": "*"
                }
            ],
            "Version": "1"
        }
      2. 分别为用户组dev和ops授予自定义权限策略policyForDevTeampolicyForOpsTeam。具体操作,请参见为用户组授权

完成授权后,分别使用处于dev用户组和处于ops用户组的RAM用户登录函数计算控制台,具体操作请参见RAM用户登录阿里云控制台。您可以看到,处于dev用户组的RAM用户只能操作标签为team:dev的函数,处于ops用户组的RAM用户只能操作标签为team:ops的函数。