教程:Budgets 入门¶
简介¶
本教程通过设置账户预算和创建监控一组指定对象的自定义预算,向您介绍使用 Budgets 进行账户级别的 Credit 使用量监控。
通过 Budgets,您可以监控受支持对象的计算成本的 Credit 使用量,包括后台维护任务和无服务器功能的 Credit 使用量。Budgets 使您能够为每个预算设置每月支出限额,并在当前支出预计超过每月支出限额时发送通知电子邮件。
您可以使用 Snowsight 中的工作表或使用 CLI 客户端(如 SnowSQL)完成本教程。本教程的某些部分可以使用 Snowsight 完成。
在本教程结束时,您将学习如何执行以下操作:
创建自定义角色以监控和管理预算。
授予将对象添加到自定义预算所需的权限。
激活和设置账户预算。
创建自定义预算并向其中添加对象。
先决条件¶
要完成本教程,需要满足以下先决条件:
您必须能够使用 ACCOUNTADMIN 角色来创建本教程中使用的角色。
您必须 验证您的电子邮件地址。只有经过验证的电子邮件地址才能添加到预算通知列表中。
创建通知集成¶
预算使用通知集成,在当前 Credit 使用量预计超过每月支出限额时发送通知电子邮件。ALLOWED_RECIPIENTS
列表 必须 包括用户的验证电子邮件地址,以接收预算通知。
如果使用 SQL 完成本教程,则需要通知集成。请按照下面的步骤创建一个通知集成。
使用 Snowsight 设置预算时,系统会自动为您创建通知集成。如果您打算使用 Snowsight 设置预算,则可以跳到下一步。
执行以下语句以创建通知集成。使用 ALLOWED_RECIPIENTS 列表中已验证的电子邮件地址:
CREATE NOTIFICATION INTEGRATION budgets_notification_integration TYPE=EMAIL ENABLED=TRUE ALLOWED_RECIPIENTS=('<YOUR_EMAIL_ADDRESS>');
创建通知集成后,将 USAGE 权限授予 SNOWFLAKE 应用程序。需要此权限才能使预算使用通知集成发送电子邮件。
执行以下语句以授予通知集成的 USAGE 权限:
GRANT USAGE ON INTEGRATION budgets_notification_integration TO APPLICATION snowflake;
创建数据库、架构和自定义角色¶
在此步骤中,将为教程创建以下对象,以创建、管理和监控预算:
用于创建自定义预算的数据库和架构。
用于管理账户预算的自定义角色。
用于监控账户预算的自定义角色。
用于创建自定义预算的自定义角色。
使用以下步骤创建数据库和架构,以便在其中创建自定义预算:
创建要在其中创建自定义预算的数据库和架构:
CREATE DATABASE budgets_db; CREATE SCHEMA budgets_db.budgets_schema;
创建要在其中创建自定义预算的数据库和架构:
登录 Snowsight。
选择 Data » Databases » + Database。
在 Name 字段中,输入
budgets_db
。选择 Create。
创建数据库后,选择
budgets_db
。选择 Schemas » + Schema。
在 Name 字段中,输入
budgets_schema
。选择 Create。
为账户预算管理员创建自定义角色
account_budget_admin
。账户预算管理员可以对账户预算执行以下操作:激活和停用账户预算。
设置支出限额。
编辑通知设置。
监控账户的 Credit 使用量。
USE ROLE ACCOUNTADMIN; CREATE ROLE account_budget_admin; GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE account_budget_admin; GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_admin;
创建要授予账户预算监控员的自定义角色
account_budget_monitor
。账户预算监控员可以对账户预算执行以下操作:监控账户的 Credit 使用量。
查看电子邮件通知设置。
查看账户的每月支出限额。
USE ROLE ACCOUNTADMIN; CREATE ROLE account_budget_monitor; GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE account_budget_monitor; GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_monitor;
创建具有所需角色和权限的自定义角色
budget_owner
,以在架构budgets_db.budgets_schema
中创建自定义预算:USE ROLE ACCOUNTADMIN; CREATE ROLE budget_owner; GRANT USAGE ON DATABASE budgets_db TO ROLE budget_owner; GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner; GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_owner; GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner;
通过以下步骤将
account_budget_admin
和budget_owner
角色授予自己,以便在本教程的后续步骤中使用:将
account_budget_admin
角色授予自己:GRANT ROLE account_budget_admin TO USER <USER_NAME>;
将
budget_owner
角色授予自己:GRANT ROLE budget_owner TO USER <USER_NAME>;
将
account_budget_admin
和budget_owner
角色授予自己:登录 Snowsight。
切换到 ACCOUNTADMIN 角色。
在导航菜单中选择 Admin » Users & Roles,然后选择 Roles。
选择 Table,找到并选择
account_budget_admin
角色。在 0 users have been granted ACCOUNT_BUDGET_ADMIN 部分中,选择 Grant to User。
对于 User to receive grant,请选择要授予角色的用户名。
选择 Grant。
授予角色后,返回上一页。
选择 budget_owner 角色。
在 0 users have been granted BUDGET_OWNER 部分中,选择 Grant to User。
对于 User to receive grant,请选择要授予角色的用户名。
选择 Grant。
创建两个自定义角色来管理和监控自定义预算。这些角色将在本教程后面创建自定义预算后被授予权限。
您可以使用以下步骤创建新角色:
创建两个用于管理和监控自定义预算的自定义角色:
USE ROLE ACCOUNTADMIN; CREATE ROLE budget_admin; CREATE ROLE budget_monitor;
创建两个用于管理和监控自定义预算的自定义角色:
登录 Snowsight。
切换到 ACCOUNTADMIN 角色。
在导航菜单中选择 Admin » Users & Roles,然后选择 Roles。
选择 + Role。
在 Name 字段中,输入
budget_admin
。选择 Create Role。
创建角色后,再次选择 + Role。
在 Name 字段中,输入
budget_monitor
。选择 Create Role。
在本节中,您创建了自定义角色来管理和监控预算,以及创建自定义预算。
为自定义预算创建对象¶
在此步骤中,创建要添加到自定义预算的对象,并向您在上一步中创建的自定义角色授予权限。您将创建以下对象:
要添加到自定义预算的仓库。
要添加到自定义预算的数据库。
创建一个仓库,并将仓库的 USAGE 和 APPLYBUDGET 权限授予您创建的自定义角色。需要 APPLYBUDGET 权限才能将对象添加到预算。
创建仓库
na_finance_wh
:CREATE WAREHOUSE na_finance_wh;
向自定义预算角色授予 USAGE 权限:
GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE account_budget_admin; GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_admin; GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_owner;
将仓库的 APPLYBUDGET 权限授予
budget_owner
角色:GRANT APPLYBUDGET ON WAREHOUSE na_finance_wh TO ROLE budget_owner;
创建仓库
na_finance_wh
:登录 Snowsight。
选择 Admin » Warehouses » + Warehouse。
在 Warehouse Name 字段中,输入
na_finance_wh
。选择 Create Warehouse。
将仓库的 USAGE 权限授予自定义角色、
account_budge_admin
和budget_admin
:选择 Admin » Warehouses。
选择您刚刚创建
na_finance_wh
的仓库。在 Privileges 磁贴中,选择 + Privilege。
对于 Role,选择
account_budget_admin
角色。对于 Privileges,选择 USAGE。
选择 Grant Privileges。
对
budget_admin
角色重复前面的 4 个步骤。
将仓库的 USAGE 和 APPLYBUDGET 权限授予
budget_owner
角色:选择 Admin » Warehouses。
选择您刚刚创建
na_finance_wh
的仓库。在 Privileges 磁贴中,选择 + Privilege。
对于 Role,选择
budget_owner
角色。对于 Privileges,选择 APPLYBUDGET 和 USAGE。
选择 Grant Privileges。
创建一个数据库,并将仓库的 APPLYBUDGET 权限授予您创建的自定义预算所有者角色。需要 APPLYBUDGET 权限才能将对象添加到预算。
创建数据库:
CREATE DATABASE na_finance_db;
将数据库的 APPLYBUDGET 权限授予
budget_owner
角色:GRANT APPLYBUDGET ON DATABASE na_finance_db TO ROLE budget_owner;
创建数据库:
登录 Snowsight。
选择 Data » Databases » + Database。
在 Name 字段中,输入
na_finance_db
。选择 Create。
将数据库的 APPLYBUDGET 权限授予
budget_owner
角色:选择 Data » Databases。
选择您刚刚创建
na_finance_db
的数据库。在 Privileges 磁贴中,选择 + Privilege。
对于 Role,选择
budget_owner
角色。对于 Privileges,选择 APPLYBUDGET。
选择 Grant Privileges。
在本节中,您创建了要添加到自定义预算的对象,并授予了将这些对象添加到预算所需的 APPLYBUDGET 权限。您还创建了用于创建自定义预算的数据库和模式,并授予了在架构中创建预算所需的 USAGE 权限。现在,您已准备好激活、创建和设置预算。
激活和设置账户预算¶
账户预算监控账户中 Budgets 支持的所有对象的计算成本的 Credit 使用量,包括后台维护任务(例如,自动聚类)和无服务器功能。必须先激活账户预算,然后才能开始监控 Credit 使用量。激活后,您可以设置账户的每月支出限额和通知收件人的电子邮件列表。在当前 Credit 使用量预计超过每月支出限额时,Budgets 会发送通知电子邮件。
使用以下步骤激活和设置账户预算:
使用您在上一步中创建的
account_budget_admin
角色激活账户预算:USE ROLE account_budget_admin; CALL snowflake.local.account_root_budget!ACTIVATE();
将账户预算的支出限额设置为每月 500 个 Credit:
CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(500);
要设置电子邮件通知列表,请使用已验证的电子邮件地址和您在教程前面创建的通知集成:
CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS( 'budgets_notification_integration', '<YOUR_EMAIL_ADDRESS>');
激活和设置账户预算:
登录 Snowsight。
选择您在上一步中创建的 ACCOUNT_BUDGET_ADMIN 角色。
选择 Admin » Cost Management。
选择 Budgets。
如果出现提示,请为仓库选择
na_finance_wh
。在仪表板的右上角,选择 Set up Account Budget。
输入 500 作为账户预算的支出限额。
为了帮助您设置每月支出限额,配置工具会显示您当月的预计支出和前 3 个月的平均每月支出。例如,请参阅以下屏幕截图。
输入您要用于接收通知电子邮件的电子邮件地址
选择 Finish Setup。
在本节中,您激活了账户预算,并设置了支出限额和接收预算通知的电子邮件地址。
创建自定义预算¶
现在您已经激活并设置了账户预算,请创建一个自定义预算,以监控账户中指定对象组的 Credit 使用量。在本教程中,将 na_finance_wh
仓库和 na_finance_db
添加到自定义预算中。
通过以下步骤创建自定义预算:
使用
budget_owner
角色在budgets_db.budgets_schema
中创建na_finance_budget
预算:USE ROLE budget_owner; USE SCHEMA budgets_db.budgets_schema; USE WAREHOUSE na_finance_wh; CREATE SNOWFLAKE.CORE.BUDGET na_finance_budget();
使用以下步骤为
na_finance_budget
预算设置每月支出限额和电子邮件通知列表:将每月支出限额设置为 500 个 credit:
CALL na_finance_budget!SET_SPENDING_LIMIT(500);
要设置通知列表,请使用已验证的电子邮件地址和在本教程第一步中创建的通知集成:
CALL na_finance_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration', '<YOUR_EMAIL_ADDRESS>');
将数据库
na_finance_db
和仓库na_finance_wh
添加到预算na_finance_budget
:CALL na_finance_budget!ADD_RESOURCE( SYSTEM$REFERENCE('database', 'na_finance_db', 'SESSION', 'applybudget')); CALL na_finance_budget!ADD_RESOURCE( SYSTEM$REFERENCE('warehouse', 'na_finance_wh', 'SESSION', 'applybudget'));
使用
budget_owner
角色设置预算na_finance_budget
:登录 Snowsight。
选择您在上一步中创建的 BUDGET_OWNER 角色。
选择 Admin » Cost Management。
选择 Budgets。
选择预算
na_finance_budget
。为 Spending limit 输入 500。
输入您要用于接收通知电子邮件的电子邮件地址
选择 Resources to monitor。
备注
您只能将对象添加到一个自定义预算。如果对象当前包含在一个自定义预算中,并且您将该对象添加到第二个自定义预算中,则 Budgets 将从第一个自定义预算中移除该对象,而不会发出警告。
要添加数据库,请展开 Databases 以选择数据库。选择
na_finance_db
。选择数据库时,也会选择数据库包含的所有预算支持对象。此外,在数据库中创建的任何未来对象都将自动添加到预算中。
要添加仓库,请展开 Warehouses 以选择仓库。选择
na_finance_wh
。
选择 Save Changes。
只有当所有字段都填充后,Save Changes 按钮才会被激活。
在本节中,您创建了自定义预算,添加了要监控的预算的对象,并设置了接收预算通知的电子邮件地址。
监控 Credit 使用量¶
您已完成本教程中的所有步骤,以激活账户预算、创建自定义预算以及创建自定义角色来监控和管理账户预算和自定义预算。填充预算的 Credit 使用量数据需要一些时间。
Budgets 使用无服务器任务来收集您账户中预算的 Credit 使用量。激活账户预算或创建自定义预算后,需要一段时间才能执行无服务器任务。Credit 使用量数据可用后,您可以使用 Snowsight 监控预算的 Credit 使用量。
清理、总结和其他资源¶
恭喜!您已成功完成本教程。
在为账户预算和自定义预算填充 Credit 使用量数据后,请参阅 使用 Snowsight 监控预算。
总结和要点¶
总之,您学习了如何:
创建自定义角色以管理和监控预算。
自定义角色使非账户管理员能够监控预算的 Credit 使用量和修改预算设置。有关更多信息,请参阅 Budgets 角色和权限。
授予将对象添加到自定义预算所需的权限。
必须授予对象的 APPLYBUDGET 权限,才能将其添加到自定义预算或从自定义预算中删除。对象通过 引用 添加或删除。有关更多信息,请参阅 在自定义预算中添加和移除对象。
激活和设置账户预算。
必须激活并设置账户预算才能开始监控账户的 Credit 使用量。账户预算监控计算成本,包括后台维护任务和无服务器功能,并在当前支出预计超过每月支出限额时发送电子邮件通知。
有关更多信息,请参阅 激活账户预算。
创建自定义预算以监控账户中的指定对象组。
自定义预算监控账户中一组对象的 Credit 使用量。自定义预算监控组中对象的计算成本的 Credit 使用量,包括后台维护任务和无服务器功能。
有关更多信息,请参阅 创建自定义预算。
删除在教程中创建的对象¶
您可以选择保留在教程中创建的自定义角色和自定义预算,以监控 Credit 使用量。否则,请删除预算和相关的自定义角色:
要删除在教程中创建的自定义预算,请执行以下语句:
USE ROLE budget_owner;
DROP SNOWFLAKE.CORE.BUDGET budgets_db.budgets_schema.na_finance_budget;
要删除在本教程中创建的对象,请执行以下语句:
USE ROLE ACCOUNTADMIN;
DROP DATABASE na_finance_db;
DROP WAREHOUSE na_finance_wh;
DROP DATABASE budgets_db;
要删除为管理和监控自定义预算而创建的自定义角色,请执行以下语句:
USE ROLE ACCOUNTADMIN;
DROP ROLE budget_monitor;
DROP ROLE budget_admin;
DROP ROLE budget_owner;
Snowflake 建议保持账户预算处于激活状态。但是,如果您决定停用它,请参阅 停用账户预算 以了解更多信息和说明。
要删除账户预算监控员和管理员角色,请执行以下语句:
USE ROLE ACCOUNTADMIN;
DROP ROLE account_budget_monitor;
DROP ROLE account_budget_admin;
要删除通知集成,请执行以下语句:
USE ROLE ACCOUNTADMIN;
DROP NOTIFICATION INTEGRATION budgets_notification_integration;
其他资源¶
请使用以下资源继续了解预算和 Snowflake: