2.6. 在 Microsoft Azure 中创建功能
在 Azure 中创建功能会过滤您的数据,并将其添加到您创建的存储帐户中,以便与红帽共享。您可以使用本节中的示例 Python 脚本从您的导出中收集和共享过滤的成本数据。
先决条件
- 在您的设备上必须安装 Visual Studio Code。
- 您必须在 Visual Studio Code 中安装 Microsoft Azure 功能扩展。要创建 Azure 功能,Microsoft 建议使用 Microsoft Visual Studio Code IDE 来开发和部署代码。有关配置 Visual Studio Code 的更多信息,请参阅 Quickstart: 使用 Visual Studio Code 在 Azure 中使用 Python 创建功能 。
-
在搜索栏中输入
功能
,然后选择 Function App。 - 点 。
- 为您的功能选择一个托管选项,然后单击 。
在 Create Function App 页面中,添加您的资源组。
- 在 Instance Details 部分中,将功能命名为 app。
- 在 Runtime stack 中,选择 Python。
- 在 Version 中,选择 latest。
点 Review + create:
- 点 。
- 等待资源创建,然后单击 以查看。
在 Visual Studio Code 中:
点 Microsoft Azure 选项卡并登录到 Azure。
- 在 Workspaces 下拉菜单中,点显示为带有 orange lightning bolt 的图标的 。
- 单击 。
- 按照提示设置本地位置,并为功能选择语言和版本。在这个示例中,选择 Python,Model 2 和最新版本。
- 在 Select a template for your function 对话框中,选择 Timer trigger,命名函数,然后按 enter 键。
设置 cron 表达式,以控制函数运行的时间。在本例中,使用
0 9 * * 代表
每天在 9 AM 运行该功能:- 点 。
- 。
在 requirements.txt 文件中:
- 在开发环境中创建功能后,打开 requirements.txt 文件,添加以下要求并保存文件:
azure-functions pandas requests azure-identity azure-storage-blob
在 init.py 中:
- 复制 Python 脚本 并将其粘贴到init.py' 中。
更改标记为
# Required vars 的部分中的值
,以更新到与您的环境对应的值。-
示例脚本使用 Azure Key Vault 中的 secret 将服务帐户
client_id
和client_secret
配置为环境变量。您也可以直接在脚本中输入凭证,但这不是最佳实践。 默认脚本有用于过滤数据或 RHEL 订阅过滤的内置选项。您必须取消注释要使用的过滤类型,或者编写您自己的自定义过滤。从以下之一中删除注释:
-
filtered_data = hcs_filtering(df)
-
filtered_data = rhel_filtering(df)
-
如果要编写自定义过滤,您必须包含以下所需的列:
'additionalinfo', 'billingaccountid', 'billingaccountname', 'billingcurrencycode', 'billingperiodenddate', 'billingperiodstartdate', 'chargetype', 'consumedservice', 'costinbillingcurrency', 'date', 'effectiveprice', 'metercategory', 'meterid', 'metername', 'meterregion', 'metersubcategory', 'offerid', 'productname', 'publishername', 'publishertype', 'quantity', 'reservationid', 'reservationname', 'resourcegroup', 'resourceid', 'resourcelocation', 'resourcename', 'servicefamily', 'serviceinfo1', 'serviceinfo2', 'subscriptionid', 'tags', 'unitofmeasure', 'unitprice'
其中一些列因报告类型而异。示例脚本会规范化这些列以及所有过滤的报告必须遵循本示例。
column_translation = {"billingcurrency": "billingcurrencycode", "currency": "billingcurrencycode", "instanceid": "resourceid", "instancename": "resourceid", "pretaxcost": "costinbillingcurrency", "product": "productname", "resourcegroupname": "resourcegroup", "subscriptionguid": "subscriptionid", "servicename": "metercategory", "usage_quantity": "quantity"}
要过滤数据,您必须添加 dataframe 过滤。例如:
-
完全匹配: df.loc[(df["publishertype"] == "Marketplace")] 过滤掉没有 Marketplace 的
publisherType
的所有数据。 -
contains: df.loc[df["publishername"].astype (str).str.contains ("Red Hat")] Filters all data in the
publisherName
. - 您可以通过您的 df.loc 子句使用 & amp; (for AND)和 | (OR)来堆栈过滤。
更有用的过滤器:
subscriptionid
- 过滤特定的订阅。
resourcegroup
- 过滤特定的资源组。
资源位置
- 过滤特定区域中的数据。
-
您可以使用
servicename
,servicetier
,metercategory
和metersubcategory
来过滤特定的服务类型。
-
完全匹配: df.loc[(df["publishertype"] == "Marketplace")] 过滤掉没有 Marketplace 的
-
示例脚本使用 Azure Key Vault 中的 secret 将服务帐户
-
构建自定义查询后,在
# custom filtering basic example #
下方更新示例脚本中的自定义查询。 - 保存该文件。
在 Visual Studio Code 中:
- 右键单击 Function 窗口,再单击 。
- 选择您在前面的步骤中创建的功能应用程序。