集团新闻

通过由 Amazon Bedrock 驱动的生成式 AI 解锁 AWS 成本和使用情况洞察 机器学习

2026-01-27 15:00:59
21次

利用Amazon Bedrock解锁AWS成本与使用情况洞察

主要要点

本文探讨了一种利用生成式人工智慧来解析AWS成本和使用情况报告的解决方案。使用者可以透过自然语言提问,该解决方案会自动生成SQL查询并执行,最终将结果以易于理解的格式呈现。内容阐述了挑战、解决方案概述及其架构,并提供了实现的步骤和所需的AWS服务。

管理云端成本和理解资源使用情况对于拥有复杂AWS部署的组织来说是一项艰巨的任务。尽管AWS成本与使用报告AWS CUR提供了宝贵的数据洞察,但诠释和查询原始数据常常具有挑战性。

在这篇文章中,我们将探索一种利用生成式人工智慧的解决方案,帮助用户根据自然语言问题生成SQL查询。此解决方案简化了对存储在Amazon Athena数据库中的CUR数据的查询过程,使查询的结果能在网页上直观展示,便于用户理解。

解决的挑战

以下挑战可能会妨碍组织有效分析CUR数据,造成潜在的不效率、超支和错失成本优化机会。我们的目标是针对这些挑战,利用生成式AI和Amazon Bedrock进行简化。

挑战说明SQL查询复杂度对非技术用户而言,编写SQL查询以提取CUR数据的洞察可能很复杂。数据可及性用户需要访问数据库才能获取结构化数据中的洞察,这可能会对数据保护造成威胁。用户友好性传统的CUR数据分析方法往往缺乏友好的界面,使非技术用户难以利用隐藏在数据中的价值。

解决方案概述

我们讨论的解决方案是一个网页应用程序聊天机器人,允许用户使用自然语言询问与AWS成本和使用情况相关的问题。应用程序根据用户的输入生成SQL查询,并在包含CUR数据的Athena数据库中执行这些查询,结果以用户友好的格式呈现。

此解决方案涉及以下AWS服务:

Amazon AthenaAmazon BedrockAWS计费与成本管理Amazon简单存储服务Amazon S3用来调用Amazon Bedrock API的计算服务,例如Amazon弹性计算云Amazon EC2、AWS Lambda、AWS SDK、Amazon SageMaker。

以下是解决方案架构的示意图:

数据流程步骤

CUR数据存储在Amazon S3中。Athena被配置来访问和查询存储在Amazon S3的CUR数据。用户与Streamlit网页应用互动,提交与AWS成本和使用情况相关的自然语言问题。

Streamlit应用将用户输入发送到Amazon Bedrock,并由LangChain应用进行整体协调。LangChain代码使用BedrockChat类来调用基础模型并与Amazon Bedrock互动,根据用户输入生成SQL查询。

生成的SQL查询在Athena数据库中运行,基础模型查询存储在Amazon S3的CUR数据。查询结果返回至LangChain应用。

LangChain将SQL查询和查询结果发送回Streamlit应用。Streamlit应用以格式化且用户友好的方式显示SQL查询和查询结果。

前提条件

为了设置此解决方案,您应具备以下前提条件:

一个拥有访问AWS成本探险者、Athena和Amazon S3的AWS帐户。这是一个概念验证设置,应遵循最小权限模型,参考AWS身份和访问管理IAM的安全最佳实践文件,并进行适当的审慎以确保设置正确。CUR数据存储在S3桶中。详情请参见创建成本和使用报告。已配置Athena以分析S3桶中的CUR数据。详情请参见使用Amazon Athena查询成本和使用报告。创建AWS计算环境以承载代码并调用Amazon Bedrock API。具有访问Amazon Bedrock的AWS身份和访问管理IAM角色,并能访问Amazon Bedrock中的基础模型。

配置解决方案

完成以下步骤以设置解决方案:

创建一个Athena数据库和表来存储CUR数据。确保Athena可以访问存储在Amazon S3中的CUR数据的必要权限和配置。设置计算环境以调用Amazon Bedrock API。确保将具有访问Amazon Bedrock的IAM角色与此环境关联。当您的实例运行时,安装如下库,以便在环境中使用:

bash pip install langchain==020 langchainexperimental==0059 langchaincommunity==020 langchainaws==014 pyathena==382 sqlalchemy==2030 streamlit==1340

通过由 Amazon Bedrock 驱动的生成式 AI 解锁 AWS 成本和使用情况洞察 机器学习使用以下代码与langchain库一起建立对Athena数据库的连接,并配置语言模型以根据用户输入生成SQL查询。您可以将此文件保存为curlibpy。

python from langchainexperimentalsql import SQLDatabaseChain from langchaincommunityutilities import SQLDatabase from sqlalchemy import createengine URL from langchainaws import ChatBedrock as BedrockChat from pyathenasqlalchemyrest import AthenaRestDialect

class CustomAthenaRestDialect(AthenaRestDialect) def importdbapi(self) import pyathena return pyathena

# DB变数 connathena = athenauswest2amazonawscom portathena = 443 schemaathena = mycur s3stagingathena = s3//curdatatest01/athenaqueryresult/ wkgrpathena = primary connectionstring = fawsathenarest//@{connathena}{portathena}/{schemaathena}s3stagingdir={s3stagingathena}/ampworkgroup={wkgrpathena} url = URLcreate(awsathenarest query={s3stagingdir s3stagingathena workgroup wkgrpathena}) engineathena = createengine(url dialect=CustomAthenaRestDialect() echo=False) db = SQLDatabase(engineathena)

# 设置LLM modelkwargs = {temperature 0 topk 250 topp 1 stopsequences [nnHuman]} llm = BedrockChat(modelid=anthropicclaude3sonnet20240229v10 modelkwargs=modelkwargs)

# 创建提示 QUERY = Create a syntactically correct athena query for AWS Cost and Usage report to run on the mycur table in mycur database based on the question then look at the results of the query and return the answer as SQLResult like a human {question} dbchain = SQLDatabaseChainfromllm(llm db verbose=True)

def getresponse(userinput) question = QUERYformat(question=userinput) result = dbchaininvoke(question) query = result[result]split(SQLQuery)[1]strip() rows = dbrun(query) return fSQLQuery {query}nSQLResult {rows}

创建一个Streamlit网页应用,以提供用于与LangChain应用互动的界面。包含用户输入自然语言问题的字段,并显示生成的SQL查询及查询结果。您可以将此文件命名为curapppy:

python import streamlit as st from curlib import getresponse import os

stsetpageconfig(pagetitle=AWS Cost and Usage Chatbot pageicon=chartwithupwardstrend layout=centered initialsidebarstate=auto menuitems={ Get Help https//docsawsamazoncom/cur/latest/userguide/curcreatehtml #Report a bug About # 这个应用的目的是帮助您更好地了解您的AWS成本和使用报告! })#HTML标题 sttitle(orange[简化] CUR数据 sunglasses)

def formatresult(result) parts = resultsplit(nSQLResult ) if len(parts) gt 1 sqlquery = parts[0]replace(SQLQuery ) sqlresult = parts[1]strip([])split() () formattedresult = [] for row in sqlresult formattedresultappend(tuple(itemstrip(()) for item in rowsplit( ))) return sqlquery formattedresult else return result []

nord加速器

def main() # 获取当前目录 currentdir = ospathdirname(ospathabspath(file)) stmarkdown(

unsafeallowhtml=True) sttitle(AWS成本与使用聊天机器人) stwrite(询问有关您的AWS成本和使用报告的问题:)

通过调用getresponse将LangChain应用与Streamlit网页应用连接,格式化并显示SQL查询和结果。将以下代码附加在前面的应用程式代码中:

python # 创建会话状态变量以存储聊天历史 if chathistory not in stsessionstate stsessionstatechathistory = []

   userinput = sttextinput(您: key=userinput)   if userinput       try           result = getresponse(userinput)           sqlquery sqlresult = formatresult(result)           stcode(sqlquery language=sql)           if sqlresult               stwrite(SQLResult)               sttable(sqlresult)           else               stwrite(result)           stsessionstatechathistoryappend({user userinput bot result})           sttextarea(对话纪录: value=njoin([f您: {chat[user]}n机器人: {chat[bot]} for chat in stsessionstatechathistory]) height=300)       except Exception as e           sterror(str(e))   stmarkdown(lt/divgt unsafeallowhtml=True)

if name == main main()

部署Streamlit应用和LangChain应用至您的主机环境,例如Amazon EC2或Lambda函数。

清理

除非您使用此解决方案调用Amazon Bedrock,否则不会产生任何费用。要避免因保存CUR报告而持续支付Amazon S3存储费用,您可以删除CUR数据和S3桶。如果您使用Amazon EC2设置了解决方案,请确保在完成后停止或删除实例。

好处

此解决方案提供以下好处:

简化数据分析 您可以利用生成式AI通过自然语言分析CUR数据,消除了对高级SQL知识的需求。增加可及性 网页界面使非技术用户有效地访问并获得CUR数据的洞察,而无需数据库的凭证。节省时间 您能迅速获得成本和使用情况问题的答案,而无需手动编写复杂的SQL查询。增强可见性 该解决方案提供了对AWS成本和使用情况的可见性,助力更好的成本优化和资源管理决策。

总结

AWS CUR聊天机器人解决方案利用Anthropic Claude在Amazon Bedrock上生成SQL查询,进行数据库查询,并提供用户友好的网页界面,以简化CUR数据的分析。通过使用自然语言提问,此解决方案消除了障碍,使技术和非技术用户都能获得有价值的AWS成本和资源使用洞察。凭借此解决方案,组织能做出更明智的决策,优化云支出并改善整体资源利用。建议您在设置此解决方案时进行适当的审慎,特别是针对生产环境;您也可以根据个人喜好和需求选择其他编程语言和框架来设置。

Amazon Bedrock使您能够轻松构建强大的生成式AI应用程序。通过参考GitHub上的快速启动指南并利用Amazon Bedrock知识库,加速您的发展,快速开发尖端的检索增强生成RAG解决方案,或利用Amazon Bedrock代理支持生成式AI应用执行多步任务,串联各种公司系统和数据源。

关于作者

![作者图片](https//d2908q01vomqb2cloudfrontnet/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2024/09/02/image

本文网址: https://www.grpkj.com/news/15.html
 Copyright © Nord加速器【官网入口】|Nord加速器 2024 版权所有 All rights reserved 加速器排行榜第一名